Skip to content

Commit b7b4bf2

Browse files
committed
Pass embed/origin_url options to SSR rendering
External links in embed mode now correctly render with target="_top" in server-side rendered content, matching client-side behavior. REDMINE-21194
1 parent 7d9766f commit b7b4bf2

File tree

3 files changed

+28
-3
lines changed

3 files changed

+28
-3
lines changed

entry_types/scrolled/app/helpers/pageflow_scrolled/react_server_side_rendering_helper.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ module ReactServerSideRenderingHelper
44
include Pageflow::RenderJsonHelper
55
include PageflowScrolled::EntryJsonSeedHelper
66

7-
def render_scrolled_entry(entry)
7+
def render_scrolled_entry(entry, options = {})
88
seed_json = render_json do |json|
9-
scrolled_entry_json_seed(json, entry)
9+
scrolled_entry_json_seed(json, entry, options)
1010
end
1111

1212
ReactServerSideRenderingHelper.renderer.render('Root', "{seed: #{seed_json}}", {})

entry_types/scrolled/app/views/pageflow_scrolled/entries/show.html.erb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
</script>
3636
<% end %>
3737

38-
<% ssr_html = local_assigns[:skip_ssr] ? '' : render_scrolled_entry(entry) %>
38+
<% ssr_html = local_assigns[:skip_ssr] ? '' : render_scrolled_entry(entry, local_assigns[:seed_options] || {}) %>
3939

4040
<% if !local_assigns[:skip_ssr] && (params[:frontend] == 'v2' || entry.feature_state('frontend_v2')) %>
4141
<%= generated_media_queries_tags_for(ssr_html) %>

entry_types/scrolled/spec/controllers/pageflow_scrolled/entries_controller_spec.rb

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,31 @@ module PageflowScrolled
3737
expect(response.body).to have_selector('figcaption', text: 'Some caption')
3838
end
3939

40+
it 'server side renders external links with target top in embed mode' do
41+
entry = create(:entry, :published, type_name: 'scrolled')
42+
chapter = create(:scrolled_chapter, revision: entry.published_revision)
43+
section = create(:section, chapter:)
44+
create(:content_element,
45+
section:,
46+
type_name: 'textBlock',
47+
configuration: {
48+
value: [{
49+
type: 'paragraph',
50+
children: [
51+
{
52+
type: 'link',
53+
href: 'https://example.com',
54+
children: [{text: 'External link'}]
55+
}
56+
]
57+
}]
58+
})
59+
60+
get_with_entry_env(:show, entry:, embed: true)
61+
62+
expect(response.body).to have_selector('a[href="https://example.com"][target="_top"]')
63+
end
64+
4065
it 'renders generated media queries if frontend v2' do
4166
entry = create(:entry, :published, type_name: 'scrolled')
4267

0 commit comments

Comments
 (0)