Use redmine_plugin kit as loader
This commit is contained in:
1
Gemfile
1
Gemfile
@@ -1,5 +1,6 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
gem 'redmine_plugin_kit'
|
||||
gem 'slim-rails'
|
||||
|
||||
group :development do
|
||||
|
||||
@@ -73,7 +73,7 @@ Requirements
|
||||
------------
|
||||
|
||||
* Redmine version >= 4.1.0
|
||||
* Ruby version >= 2.5.0
|
||||
* Ruby version >= 2.6.0
|
||||
|
||||
### Older versions
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
[]
|
||||
|
||||
9
init.rb
9
init.rb
@@ -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'
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user