diff --git a/app/models/communication/website.rb b/app/models/communication/website.rb index 72f5ddb8be1dabf5cbaf76b8b71245e82a1fa267..30298135c9fcc3d60a04280bdabfb42550e2f5c8 100644 --- a/app/models/communication/website.rb +++ b/app/models/communication/website.rb @@ -73,7 +73,7 @@ class Communication::Website < ApplicationRecord end def git_dependencies(website) - dependencies = [self, config_permalinks, config_base_url] + menus + dependencies = [self, config_default_languages, config_default_permalinks, config_development_config, config_production_config] + menus dependencies += pages + pages.map(&:active_storage_blobs).flatten dependencies += posts + posts.map(&:active_storage_blobs).flatten dependencies += people_with_facets + people.map(&:active_storage_blobs).flatten diff --git a/app/models/communication/website/configs/default_languages.rb b/app/models/communication/website/configs/default_languages.rb new file mode 100644 index 0000000000000000000000000000000000000000..56f6c9865ff42b7c454c12ad0ee5f00b95a1c910 --- /dev/null +++ b/app/models/communication/website/configs/default_languages.rb @@ -0,0 +1,46 @@ +# == Schema Information +# +# Table name: communication_websites +# +# id :uuid not null, primary key +# about_type :string indexed => [about_id] +# access_token :string +# git_branch :string +# git_endpoint :string +# git_provider :integer default("github") +# in_production :boolean default(FALSE) +# name :string +# plausible_url :string +# repository :string +# style :text +# style_updated_at :date +# url :string +# created_at :datetime not null +# updated_at :datetime not null +# about_id :uuid indexed => [about_type] +# university_id :uuid not null, indexed +# +# Indexes +# +# index_communication_websites_on_about (about_type,about_id) +# index_communication_websites_on_university_id (university_id) +# +# Foreign Keys +# +# fk_rails_bb6a496c08 (university_id => universities.id) +# +class Communication::Website::Configs::DefaultLanguages < Communication::Website + + def self.polymorphic_name + 'Communication::Website::Configs::DefaultLanguages' + end + + def git_path(website) + "config/_default/languages.yaml" + end + + def template_static + "admin/communication/websites/configs/default_languages/static" + end + +end diff --git a/app/models/communication/website/configs/permalinks.rb b/app/models/communication/website/configs/default_permalinks.rb similarity index 84% rename from app/models/communication/website/configs/permalinks.rb rename to app/models/communication/website/configs/default_permalinks.rb index cf836fd47e1a754b79dd1922b498f0d4b5c0e929..b028dd2b65b46dd2de15e783f299a650b56fdd2e 100644 --- a/app/models/communication/website/configs/permalinks.rb +++ b/app/models/communication/website/configs/default_permalinks.rb @@ -29,10 +29,10 @@ # # fk_rails_bb6a496c08 (university_id => universities.id) # -class Communication::Website::Configs::Permalinks < Communication::Website +class Communication::Website::Configs::DefaultPermalinks < Communication::Website def self.polymorphic_name - 'Communication::Website::Configs::Permalinks' + 'Communication::Website::Configs::DefaultPermalinks' end def git_path(website) @@ -40,7 +40,7 @@ class Communication::Website::Configs::Permalinks < Communication::Website end def template_static - "admin/communication/websites/configs/permalinks/static" + "admin/communication/websites/configs/default_permalinks/static" end end diff --git a/app/models/communication/website/configs/development_config.rb b/app/models/communication/website/configs/development_config.rb new file mode 100644 index 0000000000000000000000000000000000000000..5d5d9a8cb869d73ea6159c10b7eea307a6966278 --- /dev/null +++ b/app/models/communication/website/configs/development_config.rb @@ -0,0 +1,46 @@ +# == Schema Information +# +# Table name: communication_websites +# +# id :uuid not null, primary key +# about_type :string indexed => [about_id] +# access_token :string +# git_branch :string +# git_endpoint :string +# git_provider :integer default("github") +# in_production :boolean default(FALSE) +# name :string +# plausible_url :string +# repository :string +# style :text +# style_updated_at :date +# url :string +# created_at :datetime not null +# updated_at :datetime not null +# about_id :uuid indexed => [about_type] +# university_id :uuid not null, indexed +# +# Indexes +# +# index_communication_websites_on_about (about_type,about_id) +# index_communication_websites_on_university_id (university_id) +# +# Foreign Keys +# +# fk_rails_bb6a496c08 (university_id => universities.id) +# +class Communication::Website::Configs::DevelopmentConfig < Communication::Website + + def self.polymorphic_name + 'Communication::Website::Configs::DevelopmentConfig' + end + + def git_path(website) + "config/development/config.yaml" + end + + def template_static + "admin/communication/websites/configs/development_config/static" + end + +end diff --git a/app/models/communication/website/configs/base_url.rb b/app/models/communication/website/configs/production_config.rb similarity index 84% rename from app/models/communication/website/configs/base_url.rb rename to app/models/communication/website/configs/production_config.rb index 080e03ddd7e4bfabb0ec4ecb17b67e8beb1b9afd..b5aff16217640f864b212a6af6c90837be4b3c09 100644 --- a/app/models/communication/website/configs/base_url.rb +++ b/app/models/communication/website/configs/production_config.rb @@ -29,10 +29,10 @@ # # fk_rails_bb6a496c08 (university_id => universities.id) # -class Communication::Website::Configs::BaseUrl < Communication::Website +class Communication::Website::Configs::ProductionConfig < Communication::Website def self.polymorphic_name - 'Communication::Website::Configs::BaseUrl' + 'Communication::Website::Configs::ProductionConfig' end def git_path(website) @@ -40,7 +40,7 @@ class Communication::Website::Configs::BaseUrl < Communication::Website end def template_static - "admin/communication/websites/configs/base_urls/static" + "admin/communication/websites/configs/production_config/static" end end diff --git a/app/models/communication/website/menu.rb b/app/models/communication/website/menu.rb index 9a792698bd684c1af01c3977744b6e1cf02b22a9..6317937ec4d8593d097573a82732e5d97cae157c 100644 --- a/app/models/communication/website/menu.rb +++ b/app/models/communication/website/menu.rb @@ -39,7 +39,10 @@ class Communication::Website::Menu < ApplicationRecord end def git_path(website) - "data/menus/#{identifier}.yml" + # TODO I18n : Right now, we use the language of the website. Add a language to the menu (and future translations) + path = "data/menus/" + path += "#{website.languages.first.iso_code}/" if website.languages.any? + "#{path}#{identifier}.yml" end def template_static diff --git a/app/models/communication/website/page/with_kind.rb b/app/models/communication/website/page/with_kind.rb index a504be139e5ba52bca589079f034558a561aaeff..b3724e96458ca1dba27b4d3550f1345ee1d472b2 100644 --- a/app/models/communication/website/page/with_kind.rb +++ b/app/models/communication/website/page/with_kind.rb @@ -51,7 +51,7 @@ module Communication::Website::Page::WithKind end def special_page_git_dependencies(website) - dependencies = [website.config_permalinks] + dependencies = [website.config_default_permalinks] case kind when "communication_posts" dependencies += [ diff --git a/app/models/communication/website/with_configs.rb b/app/models/communication/website/with_configs.rb index c08987ad4b046d183411613df7cd17cce3aa70d2..34cb40689d735b835a8aa6cb04345bcdecd5d7ff 100644 --- a/app/models/communication/website/with_configs.rb +++ b/app/models/communication/website/with_configs.rb @@ -3,12 +3,20 @@ module Communication::Website::WithConfigs included do - def config_permalinks - @config_permalinks ||= Communication::Website::Configs::Permalinks.find(id) + def config_default_languages + @config_default_languages ||= Communication::Website::Configs::DefaultLanguages.find(id) end - def config_base_url - @config_base_url ||= Communication::Website::Configs::BaseUrl.find(id) + def config_default_permalinks + @config_default_permalinks ||= Communication::Website::Configs::DefaultPermalinks.find(id) + end + + def config_development_config + @config_development_config ||= Communication::Website::Configs::DevelopmentConfig.find(id) + end + + def config_production_config + @config_production_config ||= Communication::Website::Configs::ProductionConfig.find(id) end end diff --git a/app/views/admin/communication/websites/configs/base_urls/static.html.erb b/app/views/admin/communication/websites/configs/base_urls/static.html.erb deleted file mode 100644 index 47d8819e135ff980812c48754213d616caabb1ca..0000000000000000000000000000000000000000 --- a/app/views/admin/communication/websites/configs/base_urls/static.html.erb +++ /dev/null @@ -1 +0,0 @@ -baseURL: <%= @website.url %> diff --git a/app/views/admin/communication/websites/configs/default_languages/static.html.erb b/app/views/admin/communication/websites/configs/default_languages/static.html.erb new file mode 100644 index 0000000000000000000000000000000000000000..761b5f61ab0d52da9ab2a996aa933f4ea5badf20 --- /dev/null +++ b/app/views/admin/communication/websites/configs/default_languages/static.html.erb @@ -0,0 +1,7 @@ +<% @website.languages.each do |language| %> +<%= language.iso_code %>: + title: <%= @website %><%# TODO I18n: Traduire le nom du site %> + contentDir: content/<%= language.iso_code %> + languageCode: <%= language.iso_code %> + languageName: <%= language.name %> +<% end %> \ No newline at end of file diff --git a/app/views/admin/communication/websites/configs/permalinks/static.html.erb b/app/views/admin/communication/websites/configs/default_permalinks/static.html.erb similarity index 100% rename from app/views/admin/communication/websites/configs/permalinks/static.html.erb rename to app/views/admin/communication/websites/configs/default_permalinks/static.html.erb diff --git a/app/views/admin/communication/websites/configs/development_config/static.html.erb b/app/views/admin/communication/websites/configs/development_config/static.html.erb new file mode 100644 index 0000000000000000000000000000000000000000..a7b621aa3ad165aa2f13b9760a164eeb430ac67c --- /dev/null +++ b/app/views/admin/communication/websites/configs/development_config/static.html.erb @@ -0,0 +1,4 @@ +## LANGUAGE +<%# TODO I18n: Add "Default language" in Communication::Website %> +defaultContentLanguage: <%= @website.languages.first.iso_code %> +defaultContentLanguageInSubdir: <%= @website.languages.many? %> \ No newline at end of file diff --git a/app/views/admin/communication/websites/configs/production_config/static.html.erb b/app/views/admin/communication/websites/configs/production_config/static.html.erb new file mode 100644 index 0000000000000000000000000000000000000000..249cc5b701e9d251b9a162352155a970bd9c88dd --- /dev/null +++ b/app/views/admin/communication/websites/configs/production_config/static.html.erb @@ -0,0 +1,6 @@ +baseURL: <%= @website.url %> + +## LANGUAGE +<%# TODO I18n: Add "Default language" in Communication::Website %> +defaultContentLanguage: <%= @website.languages.first.iso_code %> +defaultContentLanguageInSubdir: <%= @website.languages.many? %> \ No newline at end of file