summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarius Balteanu <marius.balteanu@zitec.com>2024-02-27 07:23:06 +0000
committerMarius Balteanu <marius.balteanu@zitec.com>2024-02-27 07:23:06 +0000
commitd60c0654e0ed2d45b8d3af0209278ec490f6c6e8 (patch)
tree63a143fb66c304335720688847459b3dae786a46
parent5a847b7e1490577cd46ca77b1ab2861bff8001a8 (diff)
downloadredmine-d60c0654e0ed2d45b8d3af0209278ec490f6c6e8.tar.gz
redmine-d60c0654e0ed2d45b8d3af0209278ec490f6c6e8.zip
Merged r22747 from trunk to 5.0-stable (#39948).
git-svn-id: https://svn.redmine.org/redmine/branches/5.0-stable@22751 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r--lib/redmine/plugin.rb12
-rw-r--r--test/unit/lib/redmine/plugin_test.rb8
2 files changed, 20 insertions, 0 deletions
diff --git a/lib/redmine/plugin.rb b/lib/redmine/plugin.rb
index c76ff5a2e..d1092b5f2 100644
--- a/lib/redmine/plugin.rb
+++ b/lib/redmine/plugin.rb
@@ -414,6 +414,18 @@ module Redmine
Redmine::WikiFormatting.register(name, *args)
end
+ # Register plugin models that use acts_as_attachable.
+ #
+ # Example:
+ # attachment_object_type SomeAttachableModel
+ #
+ # This is necessary for the core attachments controller routes and attachments/_form to work.
+ def attachment_object_type(*args)
+ args.each do |klass|
+ Redmine::Acts::Attachable::ObjectTypeConstraint.register_object_type(klass.name.underscore.pluralize)
+ end
+ end
+
# Returns +true+ if the plugin can be configured.
def configurable?
settings && settings.is_a?(Hash) && !settings[:partial].blank?
diff --git a/test/unit/lib/redmine/plugin_test.rb b/test/unit/lib/redmine/plugin_test.rb
index 26d8ec85f..56c04de71 100644
--- a/test/unit/lib/redmine/plugin_test.rb
+++ b/test/unit/lib/redmine/plugin_test.rb
@@ -62,6 +62,14 @@ class Redmine::PluginTest < ActiveSupport::TestCase
assert_equal File.join(@klass.directory, 'foo_plugin', 'assets'), plugin.assets_directory
end
+ ::FooModel = Class.new(ActiveRecord::Base)
+ def test_register_attachment_object_type
+ Redmine::Acts::Attachable::ObjectTypeConstraint.expects(:register_object_type).with("foo_models")
+ @klass.register :foo_plugin do
+ attachment_object_type FooModel
+ end
+ end
+
def test_register_should_raise_error_if_plugin_directory_does_not_exist
e = assert_raises Redmine::PluginNotFound do
@klass.register(:bar_plugin) {}