app/controllers/maglev/editor/base_controller.rb
# frozen_string_literal: true module Maglev module Editor class BaseController < ::Maglev::ApplicationController layout 'maglev/editor/application' default_form_builder Maglev::Form::FormBuilder include Maglev::AuthenticationConcern include Maglev::UserInterfaceLocaleConcern include Maglev::ContentLocaleConcern include Maglev::ServicesConcern include Maglev::FlashI18nConcern include Maglev::Editor::ErrorsConcern include Maglev::Editor::TurboConcern include Maglev::Editor::PreviewUrlsConcern before_action :fetch_maglev_site before_action :fetch_maglev_page before_action :set_content_locale helper Maglev::ApplicationHelper helper_method :maglev_site, :maglev_theme, :current_maglev_page, :current_maglev_sections, :maglev_editing_route_context, :unpublished_changes? private def fetch_maglev_site maglev_site # simply force the fetching of the current site end def fetch_maglev_page current_maglev_page end def fetch_maglev_sections current_maglev_sections end def maglev_site @maglev_site ||= services.fetch_site.call end def maglev_page_resources ::Maglev::Page end def current_maglev_page @current_maglev_page ||= maglev_page_resources.find_by(id: params[:page_id]) end def maglev_home_page @maglev_home_page ||= maglev_page_resources.home.first end def current_maglev_sections @current_maglev_sections ||= Maglev::Content::SectionContent.build_many( theme: maglev_theme, content: services.get_page_sections.call(page: current_maglev_page, locale: content_locale) ) end def unpublished_changes? maglev_services.has_unpublished_changes.call(site: maglev_site, page: current_maglev_page, theme: maglev_theme) end def maglev_theme @maglev_theme ||= maglev_services.fetch_theme.call end def maglev_editing_route_context(page: nil, locale: nil) { locale: locale || ::Maglev::I18n.current_locale, page_id: page || current_maglev_page }.compact_blank end def redirect_to_real_root redirect_to editor_real_root_path(maglev_editing_route_context) end end end end