Sha256: 7bcf5c95b5e385fceaf2208f6cf19c5959c600404011300b470bb4c2fbd60140

Contents?: true

Size: 1.11 KB

Versions: 3

Compression:

Stored size: 1.11 KB

Contents

class PagesController < CmsController
  before_filter :find_page, only: :show

  private

  def find_page
    root = ActiveadminSelleoCms::Page.root

    raise "Create at least one page" unless root

    page_id = nil

    5.downto(1).each do |l|
      if params["slug#{l}"] and page = ActiveadminSelleoCms::Page.where(parent_id: page_id).find_by_slug(params["slug#{l}"])
        page_id = page.id
      end
    end

    @page = ActiveadminSelleoCms::Page.find_by_id(page_id)

    if !@page or (!@page.is_published? and @page != root)
      redirect_to page_path(I18n.locale, root)
    elsif @page.redirect_to_first_sub_page
      redirect_to page_path(I18n.locale, @page.children.first || root)
    end
  end

  public

  def show
    @page.update_column(:views, (@page.views || 0) + 1)
    render action: :show, layout: @page.layout_name
  end

  def index
    respond_to do |format|
      format.html { redirect_to page_path(I18n.locale, ActiveadminSelleoCms::Page.root) }
      format.json { render text: ActiveadminSelleoCms::Page.published.reorder("lft ASC").map{|p| [p.to_label, p.url(locale: false)]}.to_json }
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
activeadmin-selleo-cms-0.0.26 app/controllers/pages_controller.rb
activeadmin-selleo-cms-0.0.25 app/controllers/pages_controller.rb
activeadmin-selleo-cms-0.0.24 app/controllers/pages_controller.rb