Use redmine_plugin kit as loader

This commit is contained in:
Alexander Meindl
2021-12-07 19:40:32 +01:00
parent 923d3b8408
commit a4dabae9c9
6 changed files with 36 additions and 42 deletions

View File

@@ -1,5 +1,6 @@
# frozen_string_literal: true
gem 'redmine_plugin_kit'
gem 'slim-rails'
group :development do

View File

@@ -73,7 +73,7 @@ Requirements
------------
* Redmine version >= 4.1.0
* Ruby version >= 2.5.0
* Ruby version >= 2.6.0
### Older versions

View File

@@ -27,7 +27,7 @@ class Messenger
end
def speak(msg, channels, url, options)
url ||= RedmineMessenger.settings[:messenger_url]
url ||= RedmineMessenger.setting :messenger_url
return if url.blank? || channels.blank?
params = { text: msg, link_names: 1 }
@@ -71,7 +71,7 @@ class Messenger
parent_url = url_for_project proj.parent
return parent_url if parent_url.present?
# system based
return RedmineMessenger.settings[:messenger_url] if RedmineMessenger.settings[:messenger_url].present?
return RedmineMessenger.setting :messenger_url if RedmineMessenger.setting(:messenger_url).present?
nil
end
@@ -98,7 +98,7 @@ class Messenger
# parent project based
parent_field = textfield_for_project proj.parent, config
return parent_field if parent_field.present?
return RedmineMessenger.settings[config] if RedmineMessenger.settings[config].present?
return RedmineMessenger.setting config if RedmineMessenger.setting(config).present?
''
end
@@ -137,7 +137,7 @@ class Messenger
return parent_setting if @setting_found == 1
end
# system based
return true if RedmineMessenger.settings[config].present? && RedmineMessenger.setting?(config)
return true if RedmineMessenger.setting(config).present? && RedmineMessenger.setting?(config)
false
end
@@ -280,9 +280,9 @@ class Messenger
parent_channel = channels_for_project proj.parent
return parent_channel if parent_channel.present?
# system based
if RedmineMessenger.settings[:messenger_channel].present? &&
RedmineMessenger.settings[:messenger_channel] != '-'
return RedmineMessenger.settings[:messenger_channel].split(',').map!(&:strip).uniq
if RedmineMessenger.setting(:messenger_channel).present? &&
RedmineMessenger.setting(:messenger_channel) != '-'
return RedmineMessenger.setting(:messenger_channel).split(',').map!(&:strip).uniq
end
[]

View File

@@ -1,6 +1,6 @@
# frozen_string_literal: true
raise "\n\033[31mredmine_messenger requires ruby 2.6 or newer. Please update your ruby version.\033[0m" if RUBY_VERSION < '2.6'
loader = RedminePluginKit::Loader.new plugin_id: 'redmine_messenger'
Redmine::Plugin.register :redmine_messenger do
name 'Redmine Messenger'
@@ -42,8 +42,5 @@ Redmine::Plugin.register :redmine_messenger do
}, partial: 'settings/messenger_settings'
end
if Rails.version > '6.0'
ActiveSupport.on_load(:active_record) { RedmineMessenger.setup }
else
Rails.configuration.to_prepare { RedmineMessenger.setup }
end
RedminePluginKit::Loader.persisting { loader.load_model_hooks! }
RedminePluginKit::Loader.to_prepare { RedmineMessenger.setup! } if Rails.version < '6.0'

View File

@@ -5,39 +5,29 @@ module RedmineMessenger
REDMINE_CONTACTS_SUPPORT = Redmine::Plugin.installed? 'redmine_contacts'
REDMINE_DB_SUPPORT = Redmine::Plugin.installed? 'redmine_db'
include RedminePluginKit::PluginBase
class << self
private
def setup
# Patches
Issue.include RedmineMessenger::Patches::IssuePatch
Project.include RedmineMessenger::Patches::ProjectPatch
WikiPage.include RedmineMessenger::Patches::WikiPagePatch
ProjectsController.send :helper, MessengerProjectsHelper
Contact.include RedmineMessenger::Patches::ContactPatch if RedmineMessenger::REDMINE_CONTACTS_SUPPORT
DbEntry.include RedmineMessenger::Patches::DbEntryPatch if RedmineMessenger::REDMINE_DB_SUPPORT
Password.include RedmineMessenger::Patches::PasswordPatch if Redmine::Plugin.installed? 'redmine_passwords'
loader.add_patch %w[Issue
Project
WikiPage]
loader.add_patch 'Contact' if RedmineMessenger::REDMINE_CONTACTS_SUPPORT
loader.add_patch 'DbEntry' if RedmineMessenger::REDMINE_DB_SUPPORT
loader.add_patch 'Password' if Redmine::Plugin.installed? 'redmine_passwords'
# Helper
loader.add_helper [{ controller: 'Projects', helper: 'MessengerProjects' }]
# Global helpers
ActionView::Base.include RedmineMessenger::Helpers
loader.add_global_helper RedmineMessenger::Helpers
# Hooks
RedmineMessenger::Hooks
end
def settings
if Setting[:plugin_redmine_messenger].is_a? Hash
new_settings = ActiveSupport::HashWithIndifferentAccess.new Setting[:plugin_redmine_messenger]
Setting.plugin_redmine_messenger = new_settings
new_settings
else
# Rails 5 uses ActiveSupport::HashWithIndifferentAccess
Setting[:plugin_redmine_messenger]
end
end
def setting?(value)
return true if settings[value].to_i == 1
false
# Apply patches and helper
loader.apply!
end
end
end

View File

@@ -2,7 +2,13 @@
module RedmineMessenger
module Hooks
class MessengerListener < Redmine::Hook::Listener
class ModelHook < Redmine::Hook::Listener
def after_plugins_loaded(_context = {})
return if Rails.version < '6.0'
RedmineMessenger.setup!
end
def model_changeset_scan_commit_for_issue_ids_pre_issue_update(context = {})
issue = context[:issue]
journal = issue.current_journal