From 123d07a3778147a1534a694fd7481d1d127da951 Mon Sep 17 00:00:00 2001 From: Tim Fischbach Date: Mon, 28 Sep 2026 14:29:24 +0000 Subject: [PATCH 1/2] Scope theme stylesheets to paged entries Scrolled themes no longer need to provide a Sprockets stylesheet solely for editor startup. Paged entries retain theme switching through their entry-type seed. --- .../pageflow/editor/entries/show.html.erb | 1 - .../pageflow/themes/_theme.json.jbuilder | 1 - .../editor/entries/_head.html.erb | 1 + .../editor/entries/_seed.json.jbuilder | 6 ++++- .../initializers/stylesheetReloading.js | 3 +-- .../src/editor/models/PagedEntry.js | 6 +++++ .../editor/entries_controller_spec.rb | 22 +++++++++++++++++++ 7 files changed, 35 insertions(+), 5 deletions(-) diff --git a/app/views/pageflow/editor/entries/show.html.erb b/app/views/pageflow/editor/entries/show.html.erb index 6997fceed1..cb723c768c 100644 --- a/app/views/pageflow/editor/entries/show.html.erb +++ b/app/views/pageflow/editor/entries/show.html.erb @@ -3,7 +3,6 @@ <% content_for(:head) do %> <%= editor_entry_type_fragment(@entry, :head) %> - <%= entry_theme_stylesheet_link_tag(@entry) %> <%= entry_stylesheet_link_tag(@entry) %> <% end %> diff --git a/app/views/pageflow/themes/_theme.json.jbuilder b/app/views/pageflow/themes/_theme.json.jbuilder index 552cee889e..e50898caad 100644 --- a/app/views/pageflow/themes/_theme.json.jbuilder +++ b/app/views/pageflow/themes/_theme.json.jbuilder @@ -2,7 +2,6 @@ json.(theme, :name, :options) json.preview_image_url(image_url(theme.preview_image_path)) json.preview_thumbnail_url(image_url(theme.preview_thumbnail_path)) -json.stylesheet_path(stylesheet_path(theme.stylesheet_path)) json.home_button theme.has_home_button? json.overview_button theme.has_overview_button? diff --git a/entry_types/paged/app/views/pageflow_paged/editor/entries/_head.html.erb b/entry_types/paged/app/views/pageflow_paged/editor/entries/_head.html.erb index ee4d0f4314..46e4fcb3fe 100644 --- a/entry_types/paged/app/views/pageflow_paged/editor/entries/_head.html.erb +++ b/entry_types/paged/app/views/pageflow_paged/editor/entries/_head.html.erb @@ -1,5 +1,6 @@ <%= stylesheet_link_tag 'pageflow/application_with_simulated_media_queries', media: 'all' %> <%= stylesheet_link_tag 'pageflow_paged/editor', media: 'all' %> +<%= entry_theme_stylesheet_link_tag(entry) %> <%= render 'layouts/pageflow_paged/loading_spinner_inline_script' %> diff --git a/entry_types/paged/app/views/pageflow_paged/editor/entries/_seed.json.jbuilder b/entry_types/paged/app/views/pageflow_paged/editor/entries/_seed.json.jbuilder index 419e0443e4..f3e75e289e 100644 --- a/entry_types/paged/app/views/pageflow_paged/editor/entries/_seed.json.jbuilder +++ b/entry_types/paged/app/views/pageflow_paged/editor/entries/_seed.json.jbuilder @@ -1 +1,5 @@ -# Pageflow Paged does not use editor JSON seed +theme_stylesheet_paths = Pageflow.config_for(entry).themes.to_h do |theme| + [theme.name, stylesheet_path(theme.stylesheet_path)] +end + +json.theme_stylesheet_paths(theme_stylesheet_paths) diff --git a/entry_types/paged/packages/pageflow-paged/src/editor/initializers/stylesheetReloading.js b/entry_types/paged/packages/pageflow-paged/src/editor/initializers/stylesheetReloading.js index 3ddd75bf82..7a06f534c3 100644 --- a/entry_types/paged/packages/pageflow-paged/src/editor/initializers/stylesheetReloading.js +++ b/entry_types/paged/packages/pageflow-paged/src/editor/initializers/stylesheetReloading.js @@ -14,7 +14,6 @@ editor.addInitializer(function(options) { }); state.entry.metadata.on('change:theme_name', function() { - var theme = state.entry.getTheme(); - stylesheet.update('theme', theme.get('stylesheet_path')); + stylesheet.update('theme', state.entry.getThemeStylesheetPath()); }); }); diff --git a/entry_types/paged/packages/pageflow-paged/src/editor/models/PagedEntry.js b/entry_types/paged/packages/pageflow-paged/src/editor/models/PagedEntry.js index d4eb955b87..dcc77dd9ce 100644 --- a/entry_types/paged/packages/pageflow-paged/src/editor/models/PagedEntry.js +++ b/entry_types/paged/packages/pageflow-paged/src/editor/models/PagedEntry.js @@ -4,6 +4,8 @@ import {PreviewEntryData} from './PreviewEntryData'; export const PagedEntry = Entry.extend({ setupFromEntryTypeSeed(seed, state){ + this.themeStylesheetPaths = seed.theme_stylesheet_paths; + state.entryData = new PreviewEntryData({ entry: this, storylines: state.storylines, @@ -12,6 +14,10 @@ export const PagedEntry = Entry.extend({ }); }, + getThemeStylesheetPath: function() { + return this.themeStylesheetPaths[this.metadata.get('theme_name')]; + }, + supportsPhoneEmulation: function() { return features.isEnabled('editor_emulation_mode') } diff --git a/entry_types/paged/spec/controllers/pageflow_paged/editor/entries_controller_spec.rb b/entry_types/paged/spec/controllers/pageflow_paged/editor/entries_controller_spec.rb index e7c5ebadfd..ae2eba91fc 100644 --- a/entry_types/paged/spec/controllers/pageflow_paged/editor/entries_controller_spec.rb +++ b/entry_types/paged/spec/controllers/pageflow_paged/editor/entries_controller_spec.rb @@ -17,6 +17,28 @@ def main_app Rails.application.class.routes.url_helpers end + describe 'editor fragments' do + it 'renders the theme stylesheet in the head fragment' do + entry = Pageflow::DraftEntry.find(create(:entry).id) + + result = PageflowPaged.entry_type.editor_fragment_renderer.head_fragment(entry) + + expect(result).to have_selector('link[data-name="theme"]', visible: false) + end + + it 'includes theme stylesheet paths in the seed fragment' do + entry = Pageflow::DraftEntry.find(create(:entry).id) + + result = JSON.parse( + PageflowPaged.entry_type.editor_fragment_renderer.seed_fragment(entry) + ) + + expect(result.dig('theme_stylesheet_paths', 'default')).to( + match(%r{/assets/pageflow/themes/default-[a-f0-9]+\.css}) + ) + end + end + describe '#partials' do it 'reponds with success' do entry = create(:entry) From 023eb05ae3ef1690a10c15e722706291b2a717c1 Mon Sep 17 00:00:00 2001 From: Tim Fischbach Date: Mon, 28 Sep 2026 15:29:11 +0000 Subject: [PATCH 2/2] Resolve scrolled theme images from Webpack Scrolled themes can keep editor previews and publisher logos alongside their other conventional assets. Existing themes continue to work through the Sprockets fallback. --- app/helpers/pageflow/themes_helper.rb | 5 +- .../pageflow/editor/entries/seed.json.erb | 5 +- .../structured_data/_entry.json.jbuilder | 4 +- .../pageflow/themes/_theme.json.jbuilder | 4 +- entry_types/paged/lib/pageflow_paged.rb | 3 +- entry_types/scrolled/doc/creating_themes.md | 9 +++ .../install/templates/theme/logo_print.png | Bin 0 -> 2596 bytes .../install/templates/theme/preview.png | Bin 0 -> 109534 bytes .../templates/theme/preview_thumbnail.png | Bin 0 -> 31381 bytes entry_types/scrolled/lib/pageflow_scrolled.rb | 1 + .../pageflow_scrolled/theme_asset_resolver.rb | 33 +++++++++ .../theme_asset_resolver_spec.rb | 69 ++++++++++++++++++ lib/pageflow/entry_type.rb | 7 +- .../sprockets_theme_asset_resolver.rb | 19 +++++ .../pageflow/structured_data_helper_spec.rb | 21 ++++++ spec/helpers/pageflow/themes_helper_spec.rb | 17 +++++ .../sprockets_theme_asset_resolver_spec.rb | 50 +++++++++++++ 17 files changed, 239 insertions(+), 8 deletions(-) create mode 100644 entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/logo_print.png create mode 100644 entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/preview.png create mode 100644 entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/preview_thumbnail.png create mode 100644 entry_types/scrolled/lib/pageflow_scrolled/theme_asset_resolver.rb create mode 100644 entry_types/scrolled/spec/pageflow_scrolled/theme_asset_resolver_spec.rb create mode 100644 lib/pageflow/sprockets_theme_asset_resolver.rb create mode 100644 spec/pageflow/sprockets_theme_asset_resolver_spec.rb diff --git a/app/helpers/pageflow/themes_helper.rb b/app/helpers/pageflow/themes_helper.rb index 9eaa19bca3..6246599677 100644 --- a/app/helpers/pageflow/themes_helper.rb +++ b/app/helpers/pageflow/themes_helper.rb @@ -6,10 +6,11 @@ def themes_options_json_seed(config = Pageflow.config) config.themes.to_h { |theme| [theme.name, theme.options] }.to_json.html_safe end - def theme_json_seeds(config) + def theme_json_seeds(config, theme_asset_resolver: SprocketsThemeAssetResolver.new) render_json_partial('pageflow/themes/theme', collection: config.themes.to_a, - as: :theme) + as: :theme, + theme_asset_resolver:) end end end diff --git a/app/views/pageflow/editor/entries/seed.json.erb b/app/views/pageflow/editor/entries/seed.json.erb index f86c29dfc0..349e8cec29 100644 --- a/app/views/pageflow/editor/entries/seed.json.erb +++ b/app/views/pageflow/editor/entries/seed.json.erb @@ -16,7 +16,10 @@ "site": <%= render_json_seed(@entry.site) %>, "widget_types": <%= widget_types_json_seeds(@entry_config) %>, "page_types": <%= page_type_json_seeds(@entry_config) %>, - "themes": <%= theme_json_seeds(@entry_config) %>, + "themes": <%= theme_json_seeds( + @entry_config, + theme_asset_resolver: @entry.entry_type.theme_asset_resolver + ) %>, "common": <%= render_json { |json| common_entry_seed(json, @entry) }.html_safe %>, diff --git a/app/views/pageflow/structured_data/_entry.json.jbuilder b/app/views/pageflow/structured_data/_entry.json.jbuilder index 35cfd0ab7c..e127fa278f 100644 --- a/app/views/pageflow/structured_data/_entry.json.jbuilder +++ b/app/views/pageflow/structured_data/_entry.json.jbuilder @@ -23,7 +23,9 @@ if meta_data[:publisher].present? json.name meta_data[:publisher].split(',').map(&:squish) json.logo do json.set! '@type', 'ImageObject' - json.url structured_data_normalize_protocol(asset_url(entry.theme.print_logo_path)) + json.url structured_data_normalize_protocol( + entry.entry_type.theme_asset_resolver.publisher_logo_url(entry, view_context: self) + ) end end end diff --git a/app/views/pageflow/themes/_theme.json.jbuilder b/app/views/pageflow/themes/_theme.json.jbuilder index e50898caad..1dcc29ecef 100644 --- a/app/views/pageflow/themes/_theme.json.jbuilder +++ b/app/views/pageflow/themes/_theme.json.jbuilder @@ -1,7 +1,7 @@ json.(theme, :name, :options) -json.preview_image_url(image_url(theme.preview_image_path)) -json.preview_thumbnail_url(image_url(theme.preview_thumbnail_path)) +json.preview_image_url(theme_asset_resolver.preview_image_url(theme, view_context: self)) +json.preview_thumbnail_url(theme_asset_resolver.preview_thumbnail_url(theme, view_context: self)) json.home_button theme.has_home_button? json.overview_button theme.has_overview_button? diff --git a/entry_types/paged/lib/pageflow_paged.rb b/entry_types/paged/lib/pageflow_paged.rb index 551ccefd1f..01b1b5852f 100644 --- a/entry_types/paged/lib/pageflow_paged.rb +++ b/entry_types/paged/lib/pageflow_paged.rb @@ -12,7 +12,8 @@ def entry_type frontend_app: PageflowPaged::EntriesController.action(:show), configuration: PageflowPaged::Configuration, editor_app: PageflowPaged::Engine, - editor_fragment_renderer:) + editor_fragment_renderer:, + theme_asset_resolver: Pageflow::SprocketsThemeAssetResolver.new) end private diff --git a/entry_types/scrolled/doc/creating_themes.md b/entry_types/scrolled/doc/creating_themes.md index 0ac2b1106f..d63fe6607f 100644 --- a/entry_types/scrolled/doc/creating_themes.md +++ b/entry_types/scrolled/doc/creating_themes.md @@ -11,6 +11,15 @@ only a subset of icons [required for modern browsers](https://evilmartians.com/chronicles/how-to-favicon-in-2021-six-files-that-fit-most-needs) has been included. Webmanifests are generated dynamically. +The following images are used by the editor and for structured data: + +* `preview.png` +* `preview_thumbnail.png` +* `logo_print.png` + +If one of these files is missing, Pageflow falls back to resolving it +from the legacy Sprockets theme directory. + Register the theme in the theme plugin created by the `pageflow_scrolled:install` generator: diff --git a/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/logo_print.png b/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/logo_print.png new file mode 100644 index 0000000000000000000000000000000000000000..5f4ed4a6e169927158529dc61bd435ad6adf4f74 GIT binary patch literal 2596 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

;Y3ey~V{)X?Y-_$+I`%#1~ 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/` # + # @param theme_asset_resolver [#preview_image_url, #preview_thumbnail_url, + # #publisher_logo_url] Resolves URLs of theme assets used by core. + # # @param theme_files [Hash] A hash of the following form defining # what files can be uploaded when customizing themes of the # entry type and which Paperclip styles shall be processed: @@ -31,12 +34,14 @@ class EntryType # @param web_app_manifest [#call] Receives published entry and # returns JSON for webmanifest file. def initialize(name:, frontend_app:, editor_fragment_renderer:, configuration:, editor_app: nil, + theme_asset_resolver: SprocketsThemeAssetResolver.new, theme_files: {}, web_app_manifest: nil) @name = name @frontend_app = frontend_app @editor_fragment_renderer = editor_fragment_renderer @configuration = configuration @editor_app = editor_app + @theme_asset_resolver = theme_asset_resolver @theme_files = theme_files @web_app_manifest = web_app_manifest end diff --git a/lib/pageflow/sprockets_theme_asset_resolver.rb b/lib/pageflow/sprockets_theme_asset_resolver.rb new file mode 100644 index 0000000000..2b8e648e57 --- /dev/null +++ b/lib/pageflow/sprockets_theme_asset_resolver.rb @@ -0,0 +1,19 @@ +module Pageflow + # Resolves conventional theme assets from the Sprockets asset pipeline. + # + # Used as the default for backwards compatibility with entry types and + # themes created before entry types could provide their own resolver. + class SprocketsThemeAssetResolver + def preview_image_url(theme, view_context:) + view_context.image_url(theme.preview_image_path) + end + + def preview_thumbnail_url(theme, view_context:) + view_context.image_url(theme.preview_thumbnail_path) + end + + def publisher_logo_url(entry, view_context:) + view_context.asset_url(entry.theme.print_logo_path) + end + end +end diff --git a/spec/helpers/pageflow/structured_data_helper_spec.rb b/spec/helpers/pageflow/structured_data_helper_spec.rb index 4dec3b9f3c..d90513f732 100644 --- a/spec/helpers/pageflow/structured_data_helper_spec.rb +++ b/spec/helpers/pageflow/structured_data_helper_spec.rb @@ -61,6 +61,27 @@ module Pageflow 'thumbnailUrl' => image_file.thumbnail_url(:thumbnail_large)) end + it 'uses entry type theme asset resolver for publisher logo' do + entry = create(:published_entry, + revision_attributes: {publisher: 'Some publisher'}) + resolver = double + allow(entry.entry_type).to receive(:theme_asset_resolver).and_return(resolver) + allow(resolver).to receive(:publisher_logo_url) + .with(entry, view_context: anything) + .and_return('https://example.com/publisher.png') + + html = helper.structured_data_for_entry(entry) + + expect(html).to have_json_ld( + 'publisher' => a_hash_including( + 'logo' => { + '@type' => 'ImageObject', + 'url' => 'https://example.com/publisher.png' + } + ) + ) + end + it 'skips metadata if not present' do pageflow_configure do |config| config.default_keywords_meta_tag = '' diff --git a/spec/helpers/pageflow/themes_helper_spec.rb b/spec/helpers/pageflow/themes_helper_spec.rb index fb96d29ef1..7ca5db0b07 100644 --- a/spec/helpers/pageflow/themes_helper_spec.rb +++ b/spec/helpers/pageflow/themes_helper_spec.rb @@ -31,6 +31,23 @@ module Pageflow expect(result.dig('options', 'some')).to eq('value') end + + it 'uses supplied theme asset resolver' do + Pageflow.config.themes.register(:test_theme) + resolver = double( + preview_image_url: 'https://example.com/preview.png', + preview_thumbnail_url: 'https://example.com/preview_thumbnail.png' + ) + + result = JSON.parse( + helper.theme_json_seeds(Pageflow.config, theme_asset_resolver: resolver) + ).last + + expect(result).to include( + 'preview_image_url' => 'https://example.com/preview.png', + 'preview_thumbnail_url' => 'https://example.com/preview_thumbnail.png' + ) + end end end end diff --git a/spec/pageflow/sprockets_theme_asset_resolver_spec.rb b/spec/pageflow/sprockets_theme_asset_resolver_spec.rb new file mode 100644 index 0000000000..485430474b --- /dev/null +++ b/spec/pageflow/sprockets_theme_asset_resolver_spec.rb @@ -0,0 +1,50 @@ +require 'spec_helper' + +module Pageflow + RSpec.describe SprocketsThemeAssetResolver do + describe '#preview_image_url' do + it 'resolves conventional preview image path' do + theme = Theme.new(:custom) + view_context = double + + expect(view_context).to receive(:image_url) + .with('pageflow/themes/custom/preview.png') + .and_return('https://example.com/preview.png') + + result = described_class.new.preview_image_url(theme, view_context:) + + expect(result).to eq('https://example.com/preview.png') + end + end + + describe '#preview_thumbnail_url' do + it 'resolves conventional preview thumbnail path' do + theme = Theme.new(:custom) + view_context = double + + expect(view_context).to receive(:image_url) + .with('pageflow/themes/custom/preview_thumbnail.png') + .and_return('https://example.com/preview_thumbnail.png') + + result = described_class.new.preview_thumbnail_url(theme, view_context:) + + expect(result).to eq('https://example.com/preview_thumbnail.png') + end + end + + describe '#publisher_logo_url' do + it 'resolves conventional print logo path' do + entry = double(theme: Theme.new(:custom)) + view_context = double + + expect(view_context).to receive(:asset_url) + .with('pageflow/themes/custom/logo_print.png') + .and_return('https://example.com/logo_print.png') + + result = described_class.new.publisher_logo_url(entry, view_context:) + + expect(result).to eq('https://example.com/logo_print.png') + end + end + end +end