From af16383439dc5eb72314d9b311c31ccf40d9ca45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20Pi=C4=8Dman?= Date: Mon, 16 May 2022 10:04:04 +0200 Subject: [PATCH] #1354 split into two independent patches --- lib/redmine_dmsf.rb | 9 ++- lib/redmine_dmsf/patches/notifiable_patch.rb | 38 +----------- .../patches/notifiable_ru_patch.rb | 59 +++++++++++++++++++ 3 files changed, 69 insertions(+), 37 deletions(-) create mode 100644 lib/redmine_dmsf/patches/notifiable_ru_patch.rb diff --git a/lib/redmine_dmsf.rb b/lib/redmine_dmsf.rb index 9c050018..5425eef5 100644 --- a/lib/redmine_dmsf.rb +++ b/lib/redmine_dmsf.rb @@ -40,7 +40,14 @@ require File.dirname(__FILE__) + '/redmine_dmsf/patches/user_patch' require File.dirname(__FILE__) + '/redmine_dmsf/patches/issue_patch' require File.dirname(__FILE__) + '/redmine_dmsf/patches/role_patch' require File.dirname(__FILE__) + '/redmine_dmsf/patches/queries_controller_patch' -require File.dirname(__FILE__) + '/redmine_dmsf/patches/notifiable_patch' + +# redmine_resources depends on redmine_contact and redmine_contacts is alphabetically sorted before redmine_dmsf +# in the plugin list. +if Redmine::Plugin.installed?(:redmine_contacts) && !Redmine::Plugin.installed?(:easy_extensions) + require File.dirname(__FILE__) + '/redmine_dmsf/patches/notifiable_ru_patch' +else + require File.dirname(__FILE__) + '/redmine_dmsf/patches/notifiable_patch' +end if defined?(EasyExtensions) require File.dirname(__FILE__) + '/redmine_dmsf/patches/easy_crm_case_patch' diff --git a/lib/redmine_dmsf/patches/notifiable_patch.rb b/lib/redmine_dmsf/patches/notifiable_patch.rb index 7ab7f6f2..fe16237e 100644 --- a/lib/redmine_dmsf/patches/notifiable_patch.rb +++ b/lib/redmine_dmsf/patches/notifiable_patch.rb @@ -48,34 +48,6 @@ module RedmineDmsf end - # TODO: This is just a workaround to fix alias_method usage in redmine_resources plugin, which is in conflict with - # prepend and causes an infinite loop. - module RedmineUpNotifiablePatch - - def self.included(base) - base.extend ClassMethods - base.class_eval do - unloadable - class << self - alias_method :all_without_resources_dmsf, :all - alias_method :all, :all_with_resources_dmsf - end - end - end - - module ClassMethods - - def all_with_resources_dmsf - notifications = all_without_resources_dmsf - notifications << Redmine::Notifiable.new('dmsf_workflow_plural') - notifications << Redmine::Notifiable.new('dmsf_legacy_notifications') - notifications - end - - end - - end - end end @@ -83,12 +55,6 @@ end if Redmine::Plugin.installed?(:easy_extensions) RedmineExtensions::PatchManager.register_patch_to_be_first 'Redmine::Notifiable', 'RedmineDmsf::Patches::NotifiablePatch', prepend: true, first: true -else - # redmine_resources depends on redmine_contact and redmine_contacts if alphabetically sorted before redmine_dmsf - # in the plugin list. - if Redmine::Plugin.installed?(:redmine_contacts) - Redmine::Notifiable.send :include, RedmineDmsf::Patches::RedmineUpNotifiablePatch - else - Redmine::Notifiable.prepend RedmineDmsf::Patches::NotifiablePatch - end +elsif !Redmine::Plugin.installed?(:redmine_contacts) + Redmine::Notifiable.prepend RedmineDmsf::Patches::NotifiablePatch end \ No newline at end of file diff --git a/lib/redmine_dmsf/patches/notifiable_ru_patch.rb b/lib/redmine_dmsf/patches/notifiable_ru_patch.rb new file mode 100644 index 00000000..7c5abd40 --- /dev/null +++ b/lib/redmine_dmsf/patches/notifiable_ru_patch.rb @@ -0,0 +1,59 @@ +# encoding: utf-8 +# frozen_string_literal: true +# +# Redmine plugin for Document Management System "Features" +# +# Copyright © 2011-22 Karel Pičman +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +module RedmineDmsf + module Patches + + # TODO: This is just a workaround to fix alias_method usage in redmine_resources plugin, which is in conflict with + # prepend and causes an infinite loop with RedmineUp's Resource plugin . + module NotifiableRuPatch + + def self.included(base) + base.extend ClassMethods + base.class_eval do + unloadable + class << self + alias_method :all_without_resources_dmsf, :all + alias_method :all, :all_with_resources_dmsf + end + end + end + + module ClassMethods + + def all_with_resources_dmsf + notifications = all_without_resources_dmsf + notifications << Redmine::Notifiable.new('dmsf_workflow_plural') + notifications << Redmine::Notifiable.new('dmsf_legacy_notifications') + notifications + end + + end + + end + + end +end + +# Apply the patch +if Redmine::Plugin.installed?(:redmine_contacts) && !Redmine::Plugin.installed?(:easy_extensions) + Redmine::Notifiable.send :include, RedmineDmsf::Patches::NotifiableRuPatch +end \ No newline at end of file