diff --git a/app/models/communication/website.rb b/app/models/communication/website.rb index 48e342be63c37ce2abbfe0f256c85d74c81db90b..f9dc4898cbf402c4f50a26c6bc178edb2c15049d 100644 --- a/app/models/communication/website.rb +++ b/app/models/communication/website.rb @@ -91,6 +91,7 @@ class Communication::Website < ApplicationRecord configs + pages.where(language_id: language_ids) + posts.where(language_id: language_ids) + + events.where(language_id: language_ids) + categories.where(language_id: language_ids) + menus.where(language_id: language_ids) + [about] diff --git a/app/models/communication/website/agenda/event.rb b/app/models/communication/website/agenda/event.rb index e0be85eb07b413f493ed289f939e6c9e9a0e1094..e6d02ea18cd5c52c6a6c5821ae34fac930ae85de 100644 --- a/app/models/communication/website/agenda/event.rb +++ b/app/models/communication/website/agenda/event.rb @@ -58,6 +58,21 @@ class Communication::Website::Agenda::Event < ApplicationRecord scope :ordered, -> { order(from_day: :desc) } + validates_presence_of :from_day + + def git_path(website) + return unless website.id == communication_website_id && published + "#{git_path_content_prefix(website)}events/#{static_path}.html" + end + + def static_path + "#{from_day.year}/#{from_day.strftime "%Y-%m-%d"}-#{slug}" + end + + def template_static + "admin/communication/websites/agenda/events/static" + end + def to_s "#{title}" end diff --git a/app/models/communication/website/page/communication_agenda.rb b/app/models/communication/website/page/communication_agenda.rb new file mode 100644 index 0000000000000000000000000000000000000000..d30481e867167faae0dde427640bf24ab53d226c --- /dev/null +++ b/app/models/communication/website/page/communication_agenda.rb @@ -0,0 +1,70 @@ +# == Schema Information +# +# Table name: communication_website_pages +# +# id :uuid not null, primary key +# bodyclass :string +# breadcrumb_title :string +# featured_image_alt :string +# featured_image_credit :text +# full_width :boolean default(FALSE) +# header_text :text +# kind :integer +# meta_description :text +# position :integer default(0), not null +# published :boolean default(FALSE) +# slug :string +# summary :text +# text :text +# title :string +# type :string +# created_at :datetime not null +# updated_at :datetime not null +# communication_website_id :uuid not null, indexed +# language_id :uuid not null, indexed +# original_id :uuid indexed +# parent_id :uuid indexed +# university_id :uuid not null, indexed +# +# Indexes +# +# index_communication_website_pages_on_communication_website_id (communication_website_id) +# index_communication_website_pages_on_language_id (language_id) +# index_communication_website_pages_on_original_id (original_id) +# index_communication_website_pages_on_parent_id (parent_id) +# index_communication_website_pages_on_university_id (university_id) +# +# Foreign Keys +# +# fk_rails_1a42003f06 (parent_id => communication_website_pages.id) +# fk_rails_280107c62b (communication_website_id => communication_websites.id) +# fk_rails_304f57360f (original_id => communication_website_pages.id) +# fk_rails_d208d15a73 (university_id => universities.id) +# +class Communication::Website::Page::CommunicationAgenda < Communication::Website::Page + + def editable_width? + false + end + + def full_width_by_default? + true + end + + def is_necessary_for_website? + website.feature_agenda + end + + def dependencies + super + + [website.config_default_languages] + + website.events + end + + protected + + def current_git_path + @current_git_path ||= "#{git_path_prefix}events/_index.html" + end + +end diff --git a/app/models/communication/website/page/with_type.rb b/app/models/communication/website/page/with_type.rb index d264af369064759f049f3e1015e4e7562f564416..0257d94c95643e8fecefeea0ed07a0a130072d63 100644 --- a/app/models/communication/website/page/with_type.rb +++ b/app/models/communication/website/page/with_type.rb @@ -9,6 +9,7 @@ module Communication::Website::Page::WithType Communication::Website::Page::Home, # Global objects Communication::Website::Page::CommunicationPost, + Communication::Website::Page::CommunicationAgenda, Communication::Website::Page::Person, Communication::Website::Page::Organization, # Education diff --git a/config/locales/communication/en.yml b/config/locales/communication/en.yml index 9515f05fa5708ad7f4956a697d5e4da46b33c3e9..476d99b35a129d23f6bea51a007a157ad34a1a81 100644 --- a/config/locales/communication/en.yml +++ b/config/locales/communication/en.yml @@ -798,6 +798,9 @@ en: communication_post: slug: posts title: Posts + communication_agenda: + slug: agenda + title: Agenda education_diploma: slug: diplomas title: Diplomas diff --git a/config/locales/communication/fr.yml b/config/locales/communication/fr.yml index 6050bb39c99b7e1f62e2f008583effb166b5a8ee..b5e5734f1fe279c2899a6d2a67b20e7c77dd66fe 100644 --- a/config/locales/communication/fr.yml +++ b/config/locales/communication/fr.yml @@ -795,6 +795,9 @@ fr: communication_post: slug: actualites title: Actualités + communication_agenda: + slug: agenda + title: Agenda education_diploma: slug: diplomes title: "Diplômes"