diff --git a/app/models/communication/website/localization.rb b/app/models/communication/website/localization.rb index 60a4013d3..bf72243c4 100644 --- a/app/models/communication/website/localization.rb +++ b/app/models/communication/website/localization.rb @@ -37,7 +37,9 @@ # class Communication::Website::Localization < ApplicationRecord include AsLocalization + include Contentful include Initials + include WithAccessibility include WithOpenApi include WithPublication include WithUniversity @@ -58,7 +60,8 @@ def exportable_to_git? def dependencies # 1 single file for all the languages - [website.config_default_languages] + [website.config_default_languages] + + contents_dependencies end def to_s @@ -67,6 +70,10 @@ def to_s protected + def check_accessibility + accessibility_merge_array blocks + end + def create_existing_menus_in_language menus = website.menus.for_language_id(website.default_language_id) menus.each do |menu| diff --git a/app/views/admin/communication/websites/edit_language.html.erb b/app/views/admin/communication/websites/edit_language.html.erb index 1e2e203ca..3737a0e7a 100644 --- a/app/views/admin/communication/websites/edit_language.html.erb +++ b/app/views/admin/communication/websites/edit_language.html.erb @@ -18,10 +18,15 @@
<%= render 'admin/application/contact_details/edit', f: f, lf: lf, about: @website, l10n: @l10n %> + <%= osuny_separator %>
-
+
+
+
+

<%= t('admin.communication.blocks.footer') %>

+ <%= render 'admin/communication/contents/editor', about: @l10n %> <% content_for :action_bar_right do %> <%= submit f %> diff --git a/app/views/admin/communication/websites/static.html.erb b/app/views/admin/communication/websites/static.html.erb index 5cabf7e62..3339b4ac3 100644 --- a/app/views/admin/communication/websites/static.html.erb +++ b/app/views/admin/communication/websites/static.html.erb @@ -7,3 +7,4 @@ default: shared_image: id: <%= @website.default_shared_image.blob&.id %> <% end %> +<%= render 'admin/communication/contents/static', about: @l10n %> diff --git a/config/locales/communication/contents/en.yml b/config/locales/communication/contents/en.yml index 9098a42c9..4034c07d1 100644 --- a/config/locales/communication/contents/en.yml +++ b/config/locales/communication/contents/en.yml @@ -67,6 +67,7 @@ en: close: Close block edition title: Block edition empty: This block is empty and will not appear + footer: The blocks here appear in the website footer, on each page. templates: agenda: description: A list of upcoming events. diff --git a/config/locales/communication/contents/fr.yml b/config/locales/communication/contents/fr.yml index 447a11bd1..73ddd9a8c 100644 --- a/config/locales/communication/contents/fr.yml +++ b/config/locales/communication/contents/fr.yml @@ -67,6 +67,7 @@ fr: close: Fermer l'édition du bloc title: Édition de bloc empty: Ce bloc est vide et n'apparaitra pas + footer: Les blocs ajoutés ici apparaissent dans le pied de page (footer) du site, sur chaque page. templates: agenda: description: Une liste d'événements à venir. diff --git a/db/schema.rb b/db/schema.rb index 63ea4c722..066eb427f 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -486,6 +486,13 @@ t.index ["event_id", "category_id"], name: "event_category" end + create_table "communication_website_agenda_categories_exhibitions", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| + t.uuid "category_id", null: false + t.uuid "exhibition_id", null: false + t.index ["category_id"], name: "idx_on_category_id_8612661ce8" + t.index ["exhibition_id"], name: "idx_on_exhibition_id_462c88c523" + end + create_table "communication_website_agenda_category_localizations", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.string "featured_image_alt" t.text "featured_image_credit" @@ -507,6 +514,20 @@ t.index ["university_id"], name: "idx_on_university_id_934ff72e5e" end + create_table "communication_website_agenda_event_days", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| + t.uuid "university_id", null: false + t.uuid "language_id", null: false + t.uuid "communication_website_id", null: false + t.uuid "communication_website_agenda_event_id", null: false + t.date "date" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["communication_website_agenda_event_id"], name: "idx_on_communication_website_agenda_event_id_4defccd002" + t.index ["communication_website_id"], name: "idx_on_communication_website_id_38a3895ffa" + t.index ["language_id"], name: "index_communication_website_agenda_event_days_on_language_id" + t.index ["university_id"], name: "index_communication_website_agenda_event_days_on_university_id" + end + create_table "communication_website_agenda_event_localizations", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.jsonb "add_to_calendar_urls" t.string "featured_image_alt" @@ -535,6 +556,34 @@ t.index ["university_id"], name: "idx_on_university_id_eaf79b0514" end + create_table "communication_website_agenda_event_time_slot_localizations", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| + t.uuid "university_id", null: false + t.uuid "communication_website_id", null: false + t.uuid "about_id", null: false + t.uuid "language_id", null: false + t.string "place" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.jsonb "add_to_calendar_urls" + t.index ["about_id"], name: "idx_on_about_id_e52a2e12b0" + t.index ["communication_website_id"], name: "idx_on_communication_website_id_526f156fed" + t.index ["language_id"], name: "idx_on_language_id_f50f565794" + t.index ["university_id"], name: "idx_on_university_id_4dee92bcc5" + end + + create_table "communication_website_agenda_event_time_slots", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| + t.uuid "university_id", null: false + t.uuid "communication_website_id", null: false + t.uuid "communication_website_agenda_event_id", null: false + t.datetime "datetime" + t.integer "duration" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["communication_website_agenda_event_id"], name: "idx_on_communication_website_agenda_event_id_022d825cf7" + t.index ["communication_website_id"], name: "idx_on_communication_website_id_c0ac516bb5" + t.index ["university_id"], name: "idx_on_university_id_bca328e63c" + end + create_table "communication_website_agenda_events", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| t.uuid "university_id", null: false t.uuid "communication_website_id", null: false @@ -554,6 +603,48 @@ t.index ["university_id"], name: "index_communication_website_agenda_events_on_university_id" end + create_table "communication_website_agenda_exhibition_localizations", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| + t.jsonb "add_to_calendar_urls" + t.string "featured_image_alt" + t.text "featured_image_credit" + t.boolean "header_cta" + t.string "header_cta_label" + t.string "header_cta_url" + t.string "meta_description" + t.string "migration_identifier" + t.boolean "published", default: false + t.datetime "published_at" + t.string "slug" + t.string "subtitle" + t.text "summary" + t.string "title" + t.uuid "about_id", null: false + t.uuid "language_id", null: false + t.uuid "university_id", null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.uuid "communication_website_id", null: false + t.index ["about_id"], name: "idx_on_about_id_a6e772a338" + t.index ["communication_website_id"], name: "idx_on_communication_website_id_8261badeaa" + t.index ["language_id"], name: "idx_on_language_id_a2de6ce8d0" + t.index ["university_id"], name: "idx_on_university_id_64ba331f7d" + end + + create_table "communication_website_agenda_exhibitions", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| + t.uuid "university_id", null: false + t.uuid "communication_website_id", null: false + t.uuid "created_by_id" + t.date "from_day" + t.date "to_day" + t.string "migration_identifier" + t.string "time_zone" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["communication_website_id"], name: "index_agenda_exhibitions_on_communication_website_id" + t.index ["created_by_id"], name: "idx_on_created_by_id_c3766f3a0a" + t.index ["university_id"], name: "idx_on_university_id_46e895f493" + end + create_table "communication_website_connections", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| t.uuid "university_id", null: false t.uuid "website_id", null: false @@ -2070,18 +2161,37 @@ add_foreign_key "communication_website_agenda_categories", "communication_websites" add_foreign_key "communication_website_agenda_categories", "education_programs", column: "program_id" add_foreign_key "communication_website_agenda_categories", "universities" + add_foreign_key "communication_website_agenda_categories_exhibitions", "communication_website_agenda_categories", column: "category_id" + add_foreign_key "communication_website_agenda_categories_exhibitions", "communication_website_agenda_exhibitions", column: "exhibition_id" add_foreign_key "communication_website_agenda_category_localizations", "communication_website_agenda_categories", column: "about_id" add_foreign_key "communication_website_agenda_category_localizations", "communication_websites" add_foreign_key "communication_website_agenda_category_localizations", "languages" add_foreign_key "communication_website_agenda_category_localizations", "universities" + add_foreign_key "communication_website_agenda_event_days", "communication_website_agenda_events" + add_foreign_key "communication_website_agenda_event_days", "communication_websites" + add_foreign_key "communication_website_agenda_event_days", "languages" + add_foreign_key "communication_website_agenda_event_days", "universities" add_foreign_key "communication_website_agenda_event_localizations", "communication_website_agenda_events", column: "about_id" add_foreign_key "communication_website_agenda_event_localizations", "communication_websites" add_foreign_key "communication_website_agenda_event_localizations", "languages" add_foreign_key "communication_website_agenda_event_localizations", "universities" + add_foreign_key "communication_website_agenda_event_time_slot_localizations", "communication_website_agenda_event_time_slots", column: "about_id" + add_foreign_key "communication_website_agenda_event_time_slot_localizations", "communication_websites" + add_foreign_key "communication_website_agenda_event_time_slot_localizations", "languages" + add_foreign_key "communication_website_agenda_event_time_slot_localizations", "universities" + add_foreign_key "communication_website_agenda_event_time_slots", "communication_website_agenda_events" + add_foreign_key "communication_website_agenda_event_time_slots", "communication_websites" + add_foreign_key "communication_website_agenda_event_time_slots", "universities" add_foreign_key "communication_website_agenda_events", "communication_website_agenda_events", column: "parent_id" add_foreign_key "communication_website_agenda_events", "communication_websites" add_foreign_key "communication_website_agenda_events", "universities" add_foreign_key "communication_website_agenda_events", "users", column: "created_by_id" + add_foreign_key "communication_website_agenda_exhibition_localizations", "communication_website_agenda_exhibitions", column: "about_id" + add_foreign_key "communication_website_agenda_exhibition_localizations", "communication_websites" + add_foreign_key "communication_website_agenda_exhibition_localizations", "universities" + add_foreign_key "communication_website_agenda_exhibitions", "communication_websites" + add_foreign_key "communication_website_agenda_exhibitions", "universities" + add_foreign_key "communication_website_agenda_exhibitions", "users", column: "created_by_id" add_foreign_key "communication_website_connections", "communication_websites", column: "website_id" add_foreign_key "communication_website_connections", "universities" add_foreign_key "communication_website_git_file_layouts", "communication_websites"