diff options
| author | erdgeist <erdgeist@erdgeist.org> | 2026-07-28 00:02:55 +0200 |
|---|---|---|
| committer | erdgeist <erdgeist@erdgeist.org> | 2026-07-28 00:02:55 +0200 |
| commit | eca95f90de3de7c6507fc529e00e1e36f136a234 (patch) | |
| tree | c2ad60e1c3f7ff7969da2e004b245f662a32df4c /app | |
| parent | 7605ececf7055e6da28eb54160324356c5dfe31c (diff) | |
Let editors manage menu titles in both locales
Diffstat (limited to 'app')
| -rw-r--r-- | app/controllers/menu_items_controller.rb | 6 | ||||
| -rw-r--r-- | app/models/menu_item.rb | 6 | ||||
| -rw-r--r-- | app/views/menu_items/edit.html.erb | 3 | ||||
| -rw-r--r-- | app/views/menu_items/new.html.erb | 3 |
4 files changed, 12 insertions, 6 deletions
diff --git a/app/controllers/menu_items_controller.rb b/app/controllers/menu_items_controller.rb index b095c8df..8b4e636e 100644 --- a/app/controllers/menu_items_controller.rb +++ b/app/controllers/menu_items_controller.rb | |||
| @@ -19,7 +19,9 @@ class MenuItemsController < ApplicationController | |||
| 19 | end | 19 | end |
| 20 | 20 | ||
| 21 | def create | 21 | def create |
| 22 | if MenuItem.create( menu_item_params ) | 22 | @menu_item = MenuItem.new( menu_item_params ) |
| 23 | |||
| 24 | if @menu_item.save | ||
| 23 | redirect_to menu_items_path | 25 | redirect_to menu_items_path |
| 24 | else | 26 | else |
| 25 | render :new | 27 | render :new |
| @@ -58,6 +60,6 @@ class MenuItemsController < ApplicationController | |||
| 58 | private | 60 | private |
| 59 | 61 | ||
| 60 | def menu_item_params | 62 | def menu_item_params |
| 61 | params.require(:menu_item).permit(:node_id, :path, :position, :type, :title, :type_id) | 63 | params.require(:menu_item).permit(:node_id, :path, :position, :titles => {}) |
| 62 | end | 64 | end |
| 63 | end | 65 | end |
diff --git a/app/models/menu_item.rb b/app/models/menu_item.rb index 7769b7fa..b8df9ddb 100644 --- a/app/models/menu_item.rb +++ b/app/models/menu_item.rb | |||
| @@ -3,11 +3,17 @@ class MenuItem < ApplicationRecord | |||
| 3 | default_scope -> { where(:type => "MenuItem") } | 3 | default_scope -> { where(:type => "MenuItem") } |
| 4 | 4 | ||
| 5 | translates :title | 5 | translates :title |
| 6 | validates :title, presence: true | ||
| 6 | 7 | ||
| 7 | acts_as_list :scope => :type | 8 | acts_as_list :scope => :type |
| 8 | 9 | ||
| 9 | before_save :determine_type_id | 10 | before_save :determine_type_id |
| 10 | 11 | ||
| 12 | def titles=(values) | ||
| 13 | values.each do |locale, value| | ||
| 14 | Globalize.with_locale(locale) { self.title = value.to_s.strip.presence } | ||
| 15 | end | ||
| 16 | end | ||
| 11 | 17 | ||
| 12 | private | 18 | private |
| 13 | 19 | ||
diff --git a/app/views/menu_items/edit.html.erb b/app/views/menu_items/edit.html.erb index 0652dc78..2bd65575 100644 --- a/app/views/menu_items/edit.html.erb +++ b/app/views/menu_items/edit.html.erb | |||
| @@ -15,8 +15,7 @@ | |||
| 15 | <div class="layout_row_label"><%= MenuItem.human_attribute_name(:path) %></div> | 15 | <div class="layout_row_label"><%= MenuItem.human_attribute_name(:path) %></div> |
| 16 | <div class="layout_row_content"><%= f.text_field :path %></div> | 16 | <div class="layout_row_content"><%= f.text_field :path %></div> |
| 17 | 17 | ||
| 18 | <div class="layout_row_label"><%= MenuItem.human_attribute_name(:title) %></div> | 18 | <%= render "title_fields", :menu_item => @menu_item %> |
| 19 | <div class="layout_row_content"><%= f.text_field :title %></div> | ||
| 20 | 19 | ||
| 21 | <div class="layout_row_label"></div> | 20 | <div class="layout_row_label"></div> |
| 22 | <div class="layout_row_content"><%= f.submit t("admin.common.update") %></div> | 21 | <div class="layout_row_content"><%= f.submit t("admin.common.update") %></div> |
diff --git a/app/views/menu_items/new.html.erb b/app/views/menu_items/new.html.erb index 713ac967..08872ec0 100644 --- a/app/views/menu_items/new.html.erb +++ b/app/views/menu_items/new.html.erb | |||
| @@ -13,8 +13,7 @@ | |||
| 13 | <div class="layout_row_label"><%= MenuItem.human_attribute_name(:path) %></div> | 13 | <div class="layout_row_label"><%= MenuItem.human_attribute_name(:path) %></div> |
| 14 | <div class="layout_row_content"><%= f.text_field :path %></div> | 14 | <div class="layout_row_content"><%= f.text_field :path %></div> |
| 15 | 15 | ||
| 16 | <div class="layout_row_label"><%= MenuItem.human_attribute_name(:title) %></div> | 16 | <%= render "title_fields", :menu_item => @menu_item %> |
| 17 | <div class="layout_row_content"><%= f.text_field :title %></div> | ||
| 18 | 17 | ||
| 19 | <div class="layout_row_content"><%= f.submit t("admin.common.create") %></div> | 18 | <div class="layout_row_content"><%= f.submit t("admin.common.create") %></div> |
| 20 | <% end %> | 19 | <% end %> |
