Sha256: ad1d8dbb7d5a5635559ed5e64a829539a0878c23cf09f562847778c9a11bb797

Contents?: true

Size: 1.92 KB

Versions: 23

Compression:

Stored size: 1.92 KB

Contents

module Enjoy::SeoPages
  extend ActiveSupport::Concern
  included do
    before_filter :find_page
  end

  private
  def find_page
    return if rails_admin?
    @seo_page = find_seo_page request.path
    if !@seo_page.nil? && !@seo_page.redirect.blank?
      redirect_to @seo_page.redirect, status: :moved_permanently
    end
  end

  def find_seo_page(path)
    do_redirect = false
    if path[0] != '/'
      path = '/' + path
    end
    if path.length > 1 && path[-1] == '/'
      path = path[0..-2]
      do_redirect = true
    end
    page = page_class.enabled.where(fullpath: path).first

    if page.nil? && !params[:slug].blank?
      page = page_class.enabled.where(fullpath: "/" + params[:slug]).first
    end

    if page.nil?
      page = find_seo_extra(path)
    end

    if page.nil?
      do_redirect = true
      spath = path.chomp(File.extname(path))
      if spath != path
        page = Enjoy::Page.enabled.where(fullpath: spath).first
      end
    end

    if !page.nil? && do_redirect
      redirect_to path, status: :moved_permanently
    end

    page
  end

  def find_seo_page_with_redirect(path)
    do_redirect = false
    if path[0] != '/'
      path = '/' + path
    end
    if path.length > 1 && path[-1] == '/'
      path = path[0..-2]
      do_redirect = true
    end

    page = page_class.enabled.any_of({fullpath: path}, {redirect: path}).first
    if page.nil?
      do_redirect = true
      spath = path.chomp(File.extname(path))
      if spath != path
        page = page_class.enabled.any_of({fullpath: spath}, {redirect: spath}).first
      end
    end
    if !page.nil? && do_redirect
      redirect_to path, status: :moved_permanently
    end

    page

  end

  def find_seo_extra(path)
    nil
  end

  def page_class_name
    "Enjoy::Page"
  end
  def page_class
    page_class_name.constantize
  end

  def rails_admin?
    self.is_a?(RailsAdmin::ApplicationController) || self.is_a?(RailsAdmin::MainController)
  end
end

Version data entries

23 entries across 23 versions & 1 rubygems

Version Path
enjoy_cms-0.3.7.4 app/controllers/concerns/enjoy/seo_pages.rb
enjoy_cms-0.3.7.3 app/controllers/concerns/enjoy/seo_pages.rb
enjoy_cms-0.3.7.2 app/controllers/concerns/enjoy/seo_pages.rb
enjoy_cms-0.3.7.1 app/controllers/concerns/enjoy/seo_pages.rb
enjoy_cms-0.3.7 app/controllers/concerns/enjoy/seo_pages.rb
enjoy_cms-0.3.6.2 app/controllers/concerns/enjoy/seo_pages.rb
enjoy_cms-0.3.6.1 app/controllers/concerns/enjoy/seo_pages.rb
enjoy_cms-0.3.6 app/controllers/concerns/enjoy/seo_pages.rb
enjoy_cms-0.3.5 app/controllers/concerns/enjoy/seo_pages.rb
enjoy_cms-0.3.4 app/controllers/concerns/enjoy/seo_pages.rb
enjoy_cms-0.3.3 app/controllers/concerns/enjoy/seo_pages.rb
enjoy_cms-0.3.2.1 app/controllers/concerns/enjoy/seo_pages.rb
enjoy_cms-0.3.2 app/controllers/concerns/enjoy/seo_pages.rb
enjoy_cms-0.3.1.2 app/controllers/concerns/enjoy/seo_pages.rb
enjoy_cms-0.3.1.1 app/controllers/concerns/enjoy/seo_pages.rb
enjoy_cms-0.3.1 app/controllers/concerns/enjoy/seo_pages.rb
enjoy_cms-0.3.0.4 app/controllers/concerns/enjoy/seo_pages.rb
enjoy_cms-0.3.0.3 app/controllers/concerns/enjoy/seo_pages.rb
enjoy_cms-0.3.0.2 app/controllers/concerns/enjoy/seo_pages.rb
enjoy_cms-0.2.1 app/controllers/concerns/enjoy/seo_pages.rb