From: Jean-Baptiste Barth Date: Wed, 13 Aug 2014 04:56:44 +0000 (+0000) Subject: Add a warning if two plugins have the same settings partial name (#14008). X-Git-Tag: 2.6.0~82 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=1617ee7bd8b0df0aaf13fcd8a66c07864182381d;p=redmine.git 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 --- 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