Skip to content

Commit f4993cc

Browse files
authored
Merge pull request #5 from ishikawa999/develop
Fix an issue where an exception would occur if init.rb works before running migration.
2 parents 8cb39b6 + fc890cf commit f4993cc

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

60 files changed

+178
-70
lines changed

app/controllers/custom_message_settings_controller.rb

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
class CustomMessageSettingsController < ApplicationController
22
layout 'admin'
33
before_action :require_admin, :set_custom_message_setting, :set_lang
4-
require_sudo_mode :edit, :update
4+
require_sudo_mode :edit, :update, :toggle_enabled
55

66
def edit
77
end
88

99
def update
10-
original_custom_messages = @setting.custom_messages
11-
languages = (original_custom_messages.try(:keys) ? original_custom_messages.keys.map(&:to_s) : [])
10+
languages = @setting.using_languages
1211

1312
if setting_params.key?(:custom_messages) || params[:tab] == 'normal'
1413
@setting.update_with_custom_messages(setting_params[:custom_messages].try(:to_unsafe_h).try(:to_hash) || {}, @lang)
@@ -18,8 +17,7 @@ def update
1817

1918
if @setting.errors.blank?
2019
flash[:notice] = l(:notice_successful_update)
21-
new_custom_messages = @setting.custom_messages
22-
languages += new_custom_messages.keys.map(&:to_s) if new_custom_messages.try(:keys)
20+
languages += @setting.using_languages
2321
CustomMessageSetting.reload_translations!(languages)
2422

2523
redirect_to edit_custom_message_settings_path(tab: params[:tab], lang: @lang)
@@ -28,6 +26,16 @@ def update
2826
end
2927
end
3028

29+
def toggle_enabled
30+
if @setting.toggle_enabled!
31+
flash[:notice] =
32+
@setting.enabled? ? l(:notice_enabled_customize) : l(:notice_disabled_customize)
33+
redirect_to edit_custom_message_settings_path
34+
else
35+
render :edit
36+
end
37+
end
38+
3139
private
3240
def set_custom_message_setting
3341
@setting = CustomMessageSetting.find_or_default

app/models/custom_message_setting.rb

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,21 @@ def self.find_or_default
66
super('plugin_redmine_message_customize')
77
end
88

9-
def custom_messages(lang=nil)
9+
def enabled?
10+
self.value[:enabled] != 'false'
11+
end
12+
13+
def custom_messages(lang=nil, check_enabled=false)
1014
messages = self.value[:custom_messages] || self.value['custom_messages']
1115
if lang.present?
1216
messages = messages[self.class.find_language(lang)]
1317
end
1418

15-
messages.present? ? messages : {}
19+
if messages.blank? || (check_enabled && !self.enabled?)
20+
{}
21+
else
22+
messages
23+
end
1624
end
1725

1826
def custom_messages_to_flatten_hash(lang=nil)
@@ -57,11 +65,29 @@ def update_with_custom_messages_yaml(yaml)
5765
self.save
5866
end
5967

68+
def toggle_enabled!
69+
self.value = self.value.deep_merge({enabled: (!self.enabled?).to_s})
70+
71+
if result = self.save
72+
self.class.reload_translations!(self.using_languages)
73+
end
74+
result
75+
end
76+
77+
def using_languages
78+
messages = self.custom_messages
79+
if messages.is_a?(Hash)
80+
messages.keys.map(&:to_s)
81+
else
82+
[User.current.language]
83+
end
84+
end
85+
6086
def self.available_messages(lang)
61-
messages = I18n.backend.translations[self.find_language(lang).to_s.to_sym]
87+
messages = I18n.backend.send(:translations)[self.find_language(lang).to_s.to_sym]
6288
if messages.nil?
6389
CustomMessageSetting.reload_translations!([lang])
64-
messages = I18n.backend.translations[lang.to_s.to_sym] || {}
90+
messages = I18n.backend.send(:translations)[lang.to_s.to_sym] || {}
6591
end
6692
self.flatten_hash(messages)
6793
end
@@ -92,7 +118,7 @@ def self.nested_hash(hash=nil)
92118
end
93119

94120
def self.reload_translations!(languages)
95-
paths = ::I18n.load_path.select {|path| self.find_language(languages).include?(File.basename(path, '.*').to_s)}
121+
paths = I18n.load_path.select {|path| self.find_language(languages).include?(File.basename(path, '.*').to_s)}
96122
I18n.backend.load_translations(paths)
97123
end
98124

app/views/custom_message_settings/edit.html.erb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,8 @@
66
<% if @setting.errors.any? %>
77
<%= error_messages_for(@setting) %>
88
<% end %>
9+
<p class='toggle-enable'>
10+
<span class='icon icon-settings'></span>
11+
<%= link_to (@setting.enabled? ? l(:label_disable_customize) : l(:label_enable_customize)), toggle_enabled_custom_message_settings_path, method: :post %>
12+
</p>
913
<%= render_tabs (@setting.errors.any? ? [] : [{name: 'normal', partial: 'normal_tab', label: 'label_normal_tab'}]) + [{name: 'yaml', partial: 'yaml_tab', label: 'label_yaml_tab'}] %>

assets/stylesheets/custom_messages.css

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,8 @@
3434
}
3535
.select2-container--default .select2-results__option[aria-disabled=true] span {
3636
color: white;
37+
}
38+
39+
p.toggle-enable {
40+
text-align: right;
3741
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{ ar: CustomMessageSetting.find_or_default.custom_messages('ar') }
1+
{ ar: CustomMessageSetting.find_or_default.custom_messages('ar', true) }
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{ az: CustomMessageSetting.find_or_default.custom_messages('az') }
1+
{ az: CustomMessageSetting.find_or_default.custom_messages('az', true) }
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{ bg: CustomMessageSetting.find_or_default.custom_messages('bg') }
1+
{ bg: CustomMessageSetting.find_or_default.custom_messages('bg', true) }
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{ bs: CustomMessageSetting.find_or_default.custom_messages('bs') }
1+
{ bs: CustomMessageSetting.find_or_default.custom_messages('bs', true) }
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{ ca: CustomMessageSetting.find_or_default.custom_messages('ca') }
1+
{ ca: CustomMessageSetting.find_or_default.custom_messages('ca', true) }
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{ cs: CustomMessageSetting.find_or_default.custom_messages('cs') }
1+
{ cs: CustomMessageSetting.find_or_default.custom_messages('cs', true) }

0 commit comments

Comments
 (0)