diff --git a/app/assets/config/manifest.js b/app/assets/config/manifest.js index 81bb3bef8f4b325864f9e94e1d9e37f0bdd36c79..8194b57860ef2e23fb4e7a406909f0fcb43336f0 100644 --- a/app/assets/config/manifest.js +++ b/app/assets/config/manifest.js @@ -3,8 +3,6 @@ //= link_tree ../fonts //= link_directory ../stylesheets .css //= link_directory ../javascripts .js +//= link_directory ../stylesheets/admin .css +//= link_directory ../javascripts/admin .js //= link vue.js -//= link admin/appstack.css -//= link admin/pure.css -//= link admin/appstack.js -//= link admin/pure.js diff --git a/app/assets/javascripts/admin/communication/init.js b/app/assets/javascripts/admin/communication/init.js index 7d114c0b6b8bc7f6d8ddb0fceef848600696dc56..45d6ce61db4a77a57dacbd9e1f13169b7113f53b 100644 --- a/app/assets/javascripts/admin/communication/init.js +++ b/app/assets/javascripts/admin/communication/init.js @@ -1,6 +1,5 @@ //= require_self -//= require ./menu_items //= require ./preview -//= require ./websites +//= require ./websites/init window.osuny.communication = {}; diff --git a/app/assets/javascripts/admin/communication/websites.js b/app/assets/javascripts/admin/communication/websites/form.js similarity index 94% rename from app/assets/javascripts/admin/communication/websites.js rename to app/assets/javascripts/admin/communication/websites/form.js index 9f223d1c278c60f89cd2164ffa964d75723e55cf..84fe2ad08f2321b88ddda543eccc79b2bde6f54e 100644 --- a/app/assets/javascripts/admin/communication/websites.js +++ b/app/assets/javascripts/admin/communication/websites/form.js @@ -1,4 +1,4 @@ -window.osuny.communication.websites = { +window.osuny.communication.websites.form = { init: function () { 'use strict'; this.languagesCheckboxes = document.querySelectorAll('.js-languages input[type="checkbox"]'); @@ -48,6 +48,6 @@ window.osuny.communication.websites = { window.addEventListener('DOMContentLoaded', function () { 'use strict'; if (window.osuny.isInControllerForm('websites')) { - window.osuny.communication.websites.init(); + window.osuny.communication.websites.form.init(); } }); diff --git a/app/assets/javascripts/admin/communication/websites/init.js b/app/assets/javascripts/admin/communication/websites/init.js new file mode 100644 index 0000000000000000000000000000000000000000..3eaee3747f8b9a534f26b2613a2c2915297cb6b5 --- /dev/null +++ b/app/assets/javascripts/admin/communication/websites/init.js @@ -0,0 +1,6 @@ +//= require_self +//= require ./form +//= require ./lang_switch +//= require ./menu_items + +window.osuny.communication.websites = {}; diff --git a/app/assets/javascripts/admin/communication/websites/lang_switch.js b/app/assets/javascripts/admin/communication/websites/lang_switch.js new file mode 100644 index 0000000000000000000000000000000000000000..390243899da76c997cf7a9317e38886db33775ae --- /dev/null +++ b/app/assets/javascripts/admin/communication/websites/lang_switch.js @@ -0,0 +1,26 @@ +window.osuny.communication.websites.langSwitch = { + init: function () { + 'use strict'; + this.select = document.querySelector('#js-website-lang-switch'); + if (this.select) { + this.select.addEventListener('change', this.onChange.bind(this)); + } + }, + + onChange: function () { + 'use strict'; + document.location.href = this.select.selectedOptions[0].value; + }, + + invoke: function () { + 'use strict'; + return { + init: this.init.bind(this) + }; + } +}.invoke(); + +window.addEventListener('DOMContentLoaded', function () { + 'use strict'; + window.osuny.communication.websites.langSwitch.init(); +}); diff --git a/app/assets/javascripts/admin/communication/menu_items.js b/app/assets/javascripts/admin/communication/websites/menu_items.js similarity index 95% rename from app/assets/javascripts/admin/communication/menu_items.js rename to app/assets/javascripts/admin/communication/websites/menu_items.js index a4bfdc477aca48a94c296f5aaae215baad7ceff1..afe1adb1bc025a27d2a25209e8a13c4bf5d36147 100644 --- a/app/assets/javascripts/admin/communication/menu_items.js +++ b/app/assets/javascripts/admin/communication/websites/menu_items.js @@ -1,5 +1,5 @@ /* global $ */ -window.osuny.communication.menuItems = { +window.osuny.communication.websites.menuItems = { init: function () { 'use strict'; var i, @@ -74,6 +74,6 @@ window.osuny.communication.menuItems = { window.addEventListener('DOMContentLoaded', function () { 'use strict'; if (window.osuny.isInControllerForm('items')) { - window.osuny.communication.menuItems.init(); + window.osuny.communication.websites.menuItems.init(); } }); diff --git a/app/views/admin/communication/websites/_sidebar.html.erb b/app/views/admin/communication/websites/_sidebar.html.erb index 9572cc2609e83687f686f7a48862f1eafbec2508..ebd838a964c77d1885ece044b7f398625327ad18 100644 --- a/app/views/admin/communication/websites/_sidebar.html.erb +++ b/app/views/admin/communication/websites/_sidebar.html.erb @@ -9,7 +9,7 @@ icon: Icon::COMMUNICATION_WEBSITE_HOME, ability: can?(:read, @website) } - + navigation << { title: Communication::Website::Post.model_name.human(count: 2), path: admin_communication_website_posts_path(website_id: @website), @@ -59,16 +59,19 @@ <% end %> </ul> <% if @website.languages.many? %> - <select class="form-control form-select my-5" onchange="if (this.value) window.location.href=this.value"> - <% @website.languages.each do |language| %> - <% - label = language_name(language.iso_code) - path = url_for request.params.merge(lang: language.iso_code) - selected = current_website_language == language - %> - <option value="<%= path %>"<% if selected %> selected="selected"<% end %>><%= label %></option> - <% end %> - </select> + <% + languages_options = @website.languages.map { |language| + [ + language_name(language.iso_code), + url_for(request.params.merge(lang: language.iso_code)) + ] + } + selected_option = url_for(request.params.merge(lang: current_website_language.iso_code)) + %> + <%= select_tag nil, + options_for_select(languages_options, selected_option), + class: "form-control form-select my-5", + id: "js-website-lang-switch" %> <% end %> </div> <div class="col-lg-9">