]> source.dussan.org Git - redmine.git/commitdiff
Merged r22747 from trunk to 5.0-stable (#39948).
authorMarius Balteanu <marius.balteanu@zitec.com>
Tue, 27 Feb 2024 07:23:06 +0000 (07:23 +0000)
committerMarius Balteanu <marius.balteanu@zitec.com>
Tue, 27 Feb 2024 07:23:06 +0000 (07:23 +0000)
git-svn-id: https://svn.redmine.org/redmine/branches/5.0-stable@22751 e93f8b46-1217-0410-a6f0-8f06a7374b81

lib/redmine/plugin.rb
test/unit/lib/redmine/plugin_test.rb

index c76ff5a2e475a77ae3c3f3b05572054c1b3670be..d1092b5f2e4fc29b4d63f9b97fdb85e7cf010def 100644 (file)
@@ -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?
index 26d8ec85f6a564aa3c323697b7a2d352247c7182..56c04de718363410b7109d0e2b87dbfe1f1fad7b 100644 (file)
@@ -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) {}