diff --git a/entry_types/scrolled/app/helpers/pageflow_scrolled/sprockets_helper.rb b/entry_types/scrolled/app/helpers/pageflow_scrolled/sprockets_helper.rb index 6324e49997..84748dea89 100644 --- a/entry_types/scrolled/app/helpers/pageflow_scrolled/sprockets_helper.rb +++ b/entry_types/scrolled/app/helpers/pageflow_scrolled/sprockets_helper.rb @@ -1,11 +1,16 @@ module PageflowScrolled # @api private module SprocketsHelper - def scrolled_sprockets_asset_tags(entry_mode:) - safe_join([ - javascript_include_tag('pageflow_scrolled/legacy'), - (stylesheet_link_tag('pageflow_scrolled/ui', media: 'all') if entry_mode != :published) - ].compact) + def scrolled_sprockets_asset_tags(entry, entry_mode:) + tags = [] + + if Pageflow.config_for(entry).include_legacy_frontend_javascript + tags << javascript_include_tag('pageflow_scrolled/legacy') + end + + tags << stylesheet_link_tag('pageflow_scrolled/ui', media: 'all') if entry_mode != :published + + safe_join(tags) end end end diff --git a/entry_types/scrolled/app/views/pageflow_scrolled/entries/show.html.erb b/entry_types/scrolled/app/views/pageflow_scrolled/entries/show.html.erb index 65f6ed9a2c..e24b432827 100644 --- a/entry_types/scrolled/app/views/pageflow_scrolled/entries/show.html.erb +++ b/entry_types/scrolled/app/views/pageflow_scrolled/entries/show.html.erb @@ -18,7 +18,7 @@ <%= scrolled_favicons_for_entry(entry, entry_mode: entry_mode) %> - <%= scrolled_sprockets_asset_tags(entry_mode: entry_mode) %> + <%= scrolled_sprockets_asset_tags(entry, entry_mode: entry_mode) %> <%= scrolled_frontend_stylesheet_packs_tag(entry, entry_mode: entry_mode, seed_options: seed_options) %> <%= scrolled_theme_properties_style_tag(entry.theme) %> diff --git a/entry_types/scrolled/lib/pageflow_scrolled/configuration.rb b/entry_types/scrolled/lib/pageflow_scrolled/configuration.rb index 86c097ec33..f75bff5625 100644 --- a/entry_types/scrolled/lib/pageflow_scrolled/configuration.rb +++ b/entry_types/scrolled/lib/pageflow_scrolled/configuration.rb @@ -161,6 +161,14 @@ def consent_vendor_host_matchers=(matchers) # @since 16.1 attr_accessor :legacy_typography_variants + # Whether to include the legacy JavaScript Sprockets asset + # (`pageflow_scrolled/legacy`) in the head of published entries and + # previews. Defaults to `true`. Set to `false` once no code relies + # on the legacy bundle anymore. + # + # @since edge + attr_accessor :include_legacy_frontend_javascript + def initialize(*) super @additional_frontend_packs = AdditionalPacks.new @@ -172,6 +180,8 @@ def initialize(*) @consent_vendor_url_matchers = {} @legacy_typography_variants = {} + + @include_legacy_frontend_javascript = true end end end diff --git a/entry_types/scrolled/spec/helpers/pageflow_scrolled/sprockets_helper_spec.rb b/entry_types/scrolled/spec/helpers/pageflow_scrolled/sprockets_helper_spec.rb index 9a252fb9b1..dca8272466 100644 --- a/entry_types/scrolled/spec/helpers/pageflow_scrolled/sprockets_helper_spec.rb +++ b/entry_types/scrolled/spec/helpers/pageflow_scrolled/sprockets_helper_spec.rb @@ -3,8 +3,10 @@ module PageflowScrolled RSpec.describe SprocketsHelper, type: :helper do describe '#scrolled_sprockets_asset_tags' do - it 'includes legacy javascript tag' do - result = helper.scrolled_sprockets_asset_tags(entry_mode: :published) + it 'includes legacy javascript tag by default' do + entry = create(:published_entry, type_name: 'scrolled') + + result = helper.scrolled_sprockets_asset_tags(entry, entry_mode: :published) expect(result).to have_selector( 'script[src*="pageflow_scrolled/legacy"]', @@ -12,8 +14,27 @@ module PageflowScrolled ) end + it 'does not include legacy javascript tag when disabled' do + pageflow_configure do |config| + config.for_entry_type(PageflowScrolled.entry_type) do |entry_type_config| + entry_type_config.include_legacy_frontend_javascript = false + end + end + + entry = create(:published_entry, type_name: 'scrolled') + + result = helper.scrolled_sprockets_asset_tags(entry, entry_mode: :published) + + expect(result).not_to have_selector( + 'script[src*="pageflow_scrolled/legacy"]', + visible: false + ) + end + it 'includes ui stylesheet in preview mode' do - result = helper.scrolled_sprockets_asset_tags(entry_mode: :preview) + entry = create(:published_entry, type_name: 'scrolled') + + result = helper.scrolled_sprockets_asset_tags(entry, entry_mode: :preview) expect(result).to have_selector( 'link[href*="pageflow_scrolled/ui"]', @@ -22,7 +43,9 @@ module PageflowScrolled end it 'includes ui stylesheet in editor mode' do - result = helper.scrolled_sprockets_asset_tags(entry_mode: :editor) + entry = create(:published_entry, type_name: 'scrolled') + + result = helper.scrolled_sprockets_asset_tags(entry, entry_mode: :editor) expect(result).to have_selector( 'link[href*="pageflow_scrolled/ui"]', @@ -31,7 +54,9 @@ module PageflowScrolled end it 'does not include ui stylesheet in published mode' do - result = helper.scrolled_sprockets_asset_tags(entry_mode: :published) + entry = create(:published_entry, type_name: 'scrolled') + + result = helper.scrolled_sprockets_asset_tags(entry, entry_mode: :published) expect(result).not_to have_selector( 'link[href*="pageflow_scrolled/ui"]',