Skip to content
Snippets Groups Projects
Unverified Commit a89a9179 authored by Sébastien Gaya's avatar Sébastien Gaya
Browse files

handle creation in special_page method

parent 2e17cdad
No related branches found
No related tags found
No related merge requests found
......@@ -7,12 +7,17 @@ module Communication::Website::WithSpecialPages
end
def special_page(type, language: default_language)
find_special_page(type, language) || translate_special_page(type, language)
page = find_special_page(type, language)
# If not found, create if default language, else translate
page ||= language == default_language ? create_special_page(type, language)
: translate_special_page(type, language)
page
end
def create_missing_special_pages
Communication::Website::Page::TYPES.each do |page_class|
page = page_class.where(website: self, university: university, language_id: default_language_id).first_or_initialize # Special pages have an before_validation (:on_create) callback to preset title, slug, ...
# Special pages have an before_validation (:on_create) callback to preset title, slug, ...
page = page_class.where(website: self, university: university, language_id: default_language_id).first_or_initialize
next if page.persisted? # No resave
next unless page.is_necessary_for_website? # No useless pages
page.save_and_sync
......@@ -25,10 +30,15 @@ module Communication::Website::WithSpecialPages
pages.where(type: type.to_s, language_id: language.id).first
end
def create_special_page(type, language)
# Special pages have an before_validation (:on_create) callback to preset title, slug, ...
page = pages.where(type: type.to_s, language_id: language.id, university_id: university_id).first_or_initialize
page.save_and_sync
end
def translate_special_page(type, language)
# Not found for given language, we create it from the page in default_language
original_special_page = pages.where(type: type.to_s, language_id: default_language_id).first
return unless original_special_page.present?
original_special_page = special_page(type, language: default_language)
translated_special_page = original_special_page.translate!(language)
# When we translate a new post, it will generate the permalink by looking for the posts special page
# It will try to find it, or translate it if not found
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment