Skip to content
Snippets Groups Projects
with_special_pages.rb 968 B
Newer Older
pabois's avatar
pabois committed
module Communication::Website::WithSpecialPages
  extend ActiveSupport::Concern

  included do
pabois's avatar
pabois committed
    after_create :create_missing_special_pages
Arnaud Levy's avatar
Arnaud Levy committed
    after_touch :create_missing_special_pages
  end
pabois's avatar
pabois committed

Arnaud Levy's avatar
Arnaud Levy committed
  def create_missing_special_pages
    home = nil
    special_pages = Communication::Website::Page::TYPES.each do |page_class|
      page = create_special_page page_class, home
      home = page if home.nil?
pabois's avatar
pabois committed
    end
  end

Arnaud Levy's avatar
Arnaud Levy committed
  protected
pabois's avatar
pabois committed

Arnaud Levy's avatar
Arnaud Levy committed
  def create_special_page(page_class, parent)
    page = page_class.where(website: self, university: university).first_or_initialize
pabois's avatar
pabois committed
    if page.new_record?
Arnaud Levy's avatar
Arnaud Levy committed
      i18n_key = "communication.website.pages.defaults.#{page.type_key}"
      page.title = I18n.t("#{i18n_key}.title")
      page.slug = I18n.t("#{i18n_key}.slug")
      page.parent = parent
      page.full_width = page.full_width_by_default?
      page.published = page.published_by_default?
      page.save_and_sync if page.is_necessary_for_website?
pabois's avatar
pabois committed
    end
pabois's avatar
pabois committed
    page
pabois's avatar
pabois committed
  end
end