@@ -6,13 +6,21 @@ def self.find_or_default
6
6
super ( 'plugin_redmine_message_customize' )
7
7
end
8
8
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 )
10
14
messages = self . value [ :custom_messages ] || self . value [ 'custom_messages' ]
11
15
if lang . present?
12
16
messages = messages [ self . class . find_language ( lang ) ]
13
17
end
14
18
15
- messages . present? ? messages : { }
19
+ if messages . blank? || ( check_enabled && !self . enabled? )
20
+ { }
21
+ else
22
+ messages
23
+ end
16
24
end
17
25
18
26
def custom_messages_to_flatten_hash ( lang = nil )
@@ -57,11 +65,29 @@ def update_with_custom_messages_yaml(yaml)
57
65
self . save
58
66
end
59
67
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
+
60
86
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 ]
62
88
if messages . nil?
63
89
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 ] || { }
65
91
end
66
92
self . flatten_hash ( messages )
67
93
end
@@ -92,7 +118,7 @@ def self.nested_hash(hash=nil)
92
118
end
93
119
94
120
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 ) }
96
122
I18n . backend . load_translations ( paths )
97
123
end
98
124
0 commit comments