Sha256: 653044098e6ba12e2f762ffb46eac3a04cd2c6ddb4097eaf4e4e4b8d427a6547

Contents?: true

Size: 1.73 KB

Versions: 11

Compression:

Stored size: 1.73 KB

Contents

module Locomotive
  class PagesController < BaseController

    account_required & within_site

    localized

    before_action :back_to_default_site_locale, only: %w(new create)

    before_action :load_page, only: [:edit, :update, :sort, :destroy]

    respond_to :json, only: [:sort]

    def new
      authorize Page
      @page = current_site.pages.build
      respond_with @page
    end

    def create
      authorize Page
      @page = service.create(page_params)
      respond_with @page, location: -> { edit_content_path(@page) }
    end

    def edit
      authorize @page
      @page.find_layout
      respond_with @page
    end

    def update
      authorize @page
      service.update(@page, page_params)
      respond_with @page, location: edit_page_path(current_site, @page)
    end

    def destroy
      authorize @page
      service.destroy(@page)
      respond_with @page, location: edit_content_path(current_site.pages.root.first)
    end

    def sort
      authorize @page, :update?
      service.sort(@page, params.require(:children))
      respond_with @page, location: edit_page_path(current_site, @page)
    end

    private

    def load_page
      @page = current_site.pages.find(params[:id])
    end

    def page_params
      params.require(:page).permit(*policy(@page || Page).permitted_attributes)
    end

    def service
      @service ||= Locomotive::PageService.new(current_site, current_locomotive_account, current_content_locale)
    end

    def edit_content_path(page)
      # FIXME: keep the compatibility with the old system using the editable elements
      if current_site.sections.count == 0
        edit_page_path(current_site, page)
      else
        edit_page_content_path(current_site, page)
      end
    end

  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
locomotivecms-4.2.0.alpha2 app/controllers/locomotive/pages_controller.rb
locomotivecms-4.2.0.alpha1 app/controllers/locomotive/pages_controller.rb
locomotivecms-4.1.1 app/controllers/locomotive/pages_controller.rb
locomotivecms-4.1.0 app/controllers/locomotive/pages_controller.rb
locomotivecms-4.1.0.rc1 app/controllers/locomotive/pages_controller.rb
locomotivecms-4.0.3 app/controllers/locomotive/pages_controller.rb
locomotivecms-4.0.2 app/controllers/locomotive/pages_controller.rb
locomotivecms-4.0.1 app/controllers/locomotive/pages_controller.rb
locomotivecms-4.0.0 app/controllers/locomotive/pages_controller.rb
locomotivecms-4.0.0.rc0 app/controllers/locomotive/pages_controller.rb
locomotivecms-4.0.0.alpha3 app/controllers/locomotive/pages_controller.rb