diff options
-rw-r--r-- | lib/redmine/plugin.rb | 11 | ||||
-rw-r--r-- | test/unit/lib/redmine/plugin_test.rb | 6 |
2 files changed, 17 insertions, 0 deletions
diff --git a/lib/redmine/plugin.rb b/lib/redmine/plugin.rb index e26ea91b9..9c67399d9 100644 --- a/lib/redmine/plugin.rb +++ b/lib/redmine/plugin.rb @@ -50,6 +50,8 @@ module Redmine #:nodoc: self.public_directory = File.join(Rails.root, 'public', 'plugin_assets') @registered_plugins = {} + @used_partials = {} + class << self attr_reader :registered_plugins private :new @@ -93,6 +95,15 @@ module Redmine #:nodoc: ActiveSupport::Dependencies.autoload_paths += [dir] end + # Warn for potential settings[:partial] collisions + if p.configurable? + partial = p.settings[:partial] + if @used_partials[partial] + Rails.logger.warn "WARNING: settings partial '#{partial}' is declared in '#{p.id}' plugin but it is already used by plugin '#{@used_partials[partial]}'. Only one settings view will be used. You may want to contact those plugins authors to fix this." + end + @used_partials[partial] = p.id + end + registered_plugins[id] = p end diff --git a/test/unit/lib/redmine/plugin_test.rb b/test/unit/lib/redmine/plugin_test.rb index 1853b678e..dfce04060 100644 --- a/test/unit/lib/redmine/plugin_test.rb +++ b/test/unit/lib/redmine/plugin_test.rb @@ -173,4 +173,10 @@ class Redmine::PluginTest < ActiveSupport::TestCase end end end + + def test_settings_warns_about_possible_partial_collision + @klass.register(:foo) { settings :partial => 'foo/settings' } + Rails.logger.expects(:warn) + @klass.register(:bar) { settings :partial => 'foo/settings' } + end end |