FEATURE: Update topic/comment embedding parameters (#20181)

This commit implements many changes to topic and comments embedding. It
deprecates the class_name field from EmbeddableHost and suggests using
the className parameter. discourse_username parameter has been
deprecated and it will fetch it from embedded site from the author or
discourse-username meta.

See the updated code sample from Admin > Customize > Embedding page.

* FEATURE: Add className parameter for Discourse embed

* DEV: Hide class_name from EmbeddableHost

* DEV: Deprecate class_name field of EmbeddableHost

* FEATURE: Use either author or discourse-username meta tag

* DEV: Deprecate discourse_username parameter

* DEV: Improve embed code sample
This commit is contained in:
Bianca Nenciu
2023-02-28 14:31:59 +02:00
committed by GitHub
parent 4855a2879c
commit ccb345bd88
13 changed files with 298 additions and 242 deletions

View File

@@ -160,14 +160,30 @@ class EmbedController < ApplicationController
def prepare_embeddable
response.headers.delete("X-Frame-Options")
@embeddable_css_class = ""
embeddable_host = EmbeddableHost.record_for_url(request.referer)
@embeddable_css_class =
" class=\"#{embeddable_host.class_name}\"" if embeddable_host.present? &&
embeddable_host.class_name.present?
@data_referer = request.referer
@data_referer = "*" if SiteSetting.embed_any_origin? && @data_referer.blank?
embeddable_host = EmbeddableHost.record_for_url(request.referer)
@embeddable_css_class =
if params[:class_name]
" class=\"#{CGI.escapeHTML(params[:class_name])}\""
elsif embeddable_host.present? && embeddable_host.class_name.present?
Discourse.deprecate(
"class_name field of EmbeddableHost has been deprecated. Prefer passing class_name as a parameter.",
since: "3.1.0.beta1",
drop_from: "3.2",
)
" class=\"#{CGI.escapeHTML(embeddable_host.class_name)}\""
else
""
end
@data_referer =
if SiteSetting.embed_any_origin? && @data_referer.blank?
"*"
else
request.referer
end
end
def ensure_api_request