From 0cb7b758b53f25900a9bee8616029878cf01b820 Mon Sep 17 00:00:00 2001 From: Martin Meyerhoff Date: Thu, 21 Apr 2022 17:27:07 +0200 Subject: [PATCH 1/2] Set preview mode early in Admin::PagesController When running `OnPageLayout` callbacks, it's probably wise to have `@version` available for choosing draft or public versions of pages (e.g. when loading a referenced page via the `Alchemy::Ingredient::Page`). --- app/controllers/alchemy/admin/pages_controller.rb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/app/controllers/alchemy/admin/pages_controller.rb b/app/controllers/alchemy/admin/pages_controller.rb index 9d8e908a11..3af32dce18 100644 --- a/app/controllers/alchemy/admin/pages_controller.rb +++ b/app/controllers/alchemy/admin/pages_controller.rb @@ -23,6 +23,8 @@ class PagesController < ResourcesController before_action :set_root_page, only: [:index, :show, :order] + before_action :set_preview_mode, only: [:show] + before_action :run_on_page_layout_callbacks, if: :run_on_page_layout_callbacks?, only: [:show] @@ -64,7 +66,6 @@ def tree # Used by page preview iframe in Page#edit view. # def show - @preview_mode = true Page.current_preview = @page # Setting the locale to pages language, so the page content has it's correct translations. ::I18n.locale = @page.language.locale @@ -397,6 +398,10 @@ def load_languages_and_layouts @languages_with_page_tree = Language.on_current_site.with_root_page @page_layouts = PageLayout.layouts_for_select(@language.id) end + + def set_preview_mode + @preview_mode = true + end end end end From eca0e023f8776d707a55555c8037243d6cfe6248 Mon Sep 17 00:00:00 2001 From: Martin Meyerhoff Date: Thu, 21 Apr 2022 17:28:54 +0200 Subject: [PATCH 2/2] Run `OnPageLayout` callbacks after setting page version It's useful to have not just the page, but also the page version available in `OnPageLayout` callbacks. --- app/controllers/alchemy/admin/pages_controller.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/controllers/alchemy/admin/pages_controller.rb b/app/controllers/alchemy/admin/pages_controller.rb index 3af32dce18..e0b62e681a 100644 --- a/app/controllers/alchemy/admin/pages_controller.rb +++ b/app/controllers/alchemy/admin/pages_controller.rb @@ -25,10 +25,6 @@ class PagesController < ResourcesController before_action :set_preview_mode, only: [:show] - before_action :run_on_page_layout_callbacks, - if: :run_on_page_layout_callbacks?, - only: [:show] - before_action :load_languages_and_layouts, unless: -> { @page_root }, only: [:index] @@ -37,6 +33,10 @@ class PagesController < ResourcesController before_action :set_page_version, only: [:show, :edit] + before_action :run_on_page_layout_callbacks, + if: :run_on_page_layout_callbacks?, + only: [:show] + def index @query = @current_language.pages.contentpages.ransack(search_filter_params[:q])