summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Baptiste Barth <jeanbaptiste.barth@gmail.com>2014-08-13 04:56:44 +0000
committerJean-Baptiste Barth <jeanbaptiste.barth@gmail.com>2014-08-13 04:56:44 +0000
commit1617ee7bd8b0df0aaf13fcd8a66c07864182381d (patch)
tree20029ca82de4cafa9cb7ff87c751bcffb169a740
parentefc05bc73cf53e2c9d57147f7226f9b17a6350ce (diff)
downloadredmine-1617ee7bd8b0df0aaf13fcd8a66c07864182381d.tar.gz
redmine-1617ee7bd8b0df0aaf13fcd8a66c07864182381d.zip
Add a warning if two plugins have the same settings partial name (#14008).
git-svn-id: http://svn.redmine.org/redmine/trunk@13336 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r--lib/redmine/plugin.rb11
-rw-r--r--test/unit/lib/redmine/plugin_test.rb6
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