Switch from user defined project fields to project settings

This commit is contained in:
Alexander Meindl
2017-05-23 22:05:27 +02:00
parent 26d2e3978f
commit 7f1ac1ff38
27 changed files with 629 additions and 106 deletions

View File

@@ -1,9 +1,12 @@
# Redmine Messenger plugin for Redmine
Rails.configuration.to_prepare do
require_dependency 'projects_helper'
# Patches
require_dependency 'redmine_messenger/patches/issue_patch'
require_dependency 'redmine_messenger/patches/wiki_page_patch'
require_dependency 'redmine_messenger/patches/projects_helper_patch'
require 'redmine_messenger/patches/contact_patch' if RedmineMessenger::REDMINE_CONTACTS_SUPPORT
require 'redmine_messenger/patches/db_entry_patch' if RedmineMessenger::REDMINE_DB_SUPPORT

View File

@@ -9,10 +9,9 @@ module RedmineMessenger
channels = Messenger.channels_for_project issue.project
url = Messenger.url_for_project issue.project
post_private_issues = Messenger.post_private_issues_for_project(issue.project)
return unless channels.present? && url && issue.save
return if issue.is_private? && post_private_issues != '1'
return if issue.is_private? && !Messenger.setting_for_project(project, :post_private_issues)
msg = "[#{ERB::Util.html_escape(issue.project)}] #{ERB::Util.html_escape(journal.user.to_s)} updated <#{Messenger.object_url issue}|#{ERB::Util.html_escape(issue)}>"

View File

@@ -13,7 +13,7 @@ module RedmineMessenger
module InstanceMethods
def send_messenger_create
return unless RedmineMessenger.settings[:post_contact] == '1'
return unless Messenger.setting_for_project(project, :post_contact)
set_language_if_valid Setting.default_language
channels = Messenger.channels_for_project project
@@ -21,14 +21,14 @@ module RedmineMessenger
return unless channels.present? && url
Messenger.speak(l(:label_messenger_contact_created,
project_url: "<#{Messenger.object_url self}|#{ERB::Util.html_escape(project)}>",
project_url: "<#{Messenger.object_url project}|#{ERB::Util.html_escape(project)}>",
url: "<#{Messenger.object_url self}|#{name}>",
user: User.current),
channels, nil, url)
end
def send_messenger_update
return unless RedmineMessenger.settings[:post_contact_updates] == '1'
return unless Messenger.setting_for_project(project, :post_contact_updates)
set_language_if_valid Setting.default_language
channels = Messenger.channels_for_project project
@@ -36,7 +36,7 @@ module RedmineMessenger
return unless channels.present? && url
Messenger.speak(l(:label_messenger_contact_updated,
project_url: "<#{Messenger.object_url self}|#{ERB::Util.html_escape(project)}>",
project_url: "<#{Messenger.object_url project}|#{ERB::Util.html_escape(project)}>",
url: "<#{Messenger.object_url self}|#{name}>",
user: User.current),
channels, nil, url)

View File

@@ -13,7 +13,7 @@ module RedmineMessenger
module InstanceMethods
def send_messenger_create
return unless RedmineMessenger.settings[:post_db] == '1'
return unless Messenger.setting_for_project(project, :post_db)
set_language_if_valid Setting.default_language
channels = Messenger.channels_for_project project
@@ -21,14 +21,14 @@ module RedmineMessenger
return unless channels.present? && url
Messenger.speak(l(:label_messenger_db_entry_created,
project_url: "<#{Messenger.object_url self}|#{ERB::Util.html_escape(project)}>",
project_url: "<#{Messenger.object_url project}|#{ERB::Util.html_escape(project)}>",
url: "<#{Messenger.object_url self}|#{name}>",
user: User.current),
channels, nil, url)
end
def send_messenger_update
return unless RedmineMessenger.settings[:post_db_updates] == '1'
return unless Messenger.setting_for_project(project, :post_db_updates)
set_language_if_valid Setting.default_language
channels = Messenger.channels_for_project project
@@ -36,7 +36,7 @@ module RedmineMessenger
return unless channels.present? && url
Messenger.speak(l(:label_messenger_db_entry_updated,
project_url: "<#{Messenger.object_url self}|#{ERB::Util.html_escape(project)}>",
project_url: "<#{Messenger.object_url project}|#{ERB::Util.html_escape(project)}>",
url: "<#{Messenger.object_url self}|#{name}>",
user: User.current),
channels, nil, url)

View File

@@ -15,15 +15,14 @@ module RedmineMessenger
def send_messenger_create
channels = Messenger.channels_for_project project
url = Messenger.url_for_project project
post_private_issues = Messenger.post_private_issues_for_project(project)
return unless channels.present? && url
return if is_private? && post_private_issues != '1'
return if is_private? && !Messenger.setting_for_project(project, :post_private_issues)
set_language_if_valid Setting.default_language
attachment = {}
if description.present? && RedmineMessenger.settings[:new_include_description] == '1'
if description.present? && Messenger.setting_for_project(project, :new_include_description)
attachment[:text] = ERB::Util.html_escape(description)
end
attachment[:fields] = [{
@@ -49,7 +48,7 @@ module RedmineMessenger
end
Messenger.speak(l(:label_messenger_issue_created,
project_url: "<#{Messenger.object_url self}|#{ERB::Util.html_escape(project)}>",
project_url: "<#{Messenger.object_url project}|#{ERB::Util.html_escape(project)}>",
url: "<#{Messenger.object_url(self)}|#{ERB::Util.html_escape(self)}>#{Messenger.mentions description if RedmineMessenger.settings[:auto_mentions] == '1'}",
user: author),
channels, attachment, url)
@@ -60,26 +59,23 @@ module RedmineMessenger
channels = Messenger.channels_for_project project
url = Messenger.url_for_project project
post_private_issues = Messenger.post_private_issues_for_project(project)
post_private_notes = Messenger.post_private_notes_for_project(project)
return unless channels.present? && url && RedmineMessenger.settings[:post_updates] == '1'
return if is_private? && post_private_issues != '1'
return if current_journal.private_notes? && post_private_notes != '1'
return unless channels.present? && url && Messenger.setting_for_project(project, :post_updates)
return if is_private? && !Messenger.setting_for_project(project, :post_private_issues)
return if current_journal.private_notes? && !Messenger.setting_for_project(project, :post_private_notes)
set_language_if_valid Setting.default_language
attachment = {}
if current_journal.notes.present? &&
RedmineMessenger.settings[:updated_include_description] == '1'
if current_journal.notes.present? && Messenger.setting_for_project(project, :updated_include_description)
attachment[:text] = ERB::Util.html_escape(current_journal.notes)
end
fields = current_journal.details.map { |d| Messenger.detail_to_field d }
attachment[:fields] = fields if fields.any?
Messenger.speak(l(:label_messenger_issue_updated,
project_url: "<#{Messenger.object_url self}|#{ERB::Util.html_escape(project)}>",
url: "<#{Messenger.object_url self}|#{ERB::Util.html_escape(self)}>#{Messenger.mentions current_journal.notes if RedmineMessenger.settings[:auto_mentions] == '1'}",
project_url: "<#{Messenger.object_url project}|#{ERB::Util.html_escape(project)}>",
url: "<#{Messenger.object_url self}|#{ERB::Util.html_escape(self)}>#{Messenger.mentions(current_journal.notes) if Messenger.setting_for_project(project, :auto_mentions)}",
user: current_journal.user),
channels, attachment, url)
end

View File

@@ -13,7 +13,7 @@ module RedmineMessenger
module InstanceMethods
def send_messenger_create
return unless RedmineMessenger.settings[:post_password] == '1'
return unless Messenger.setting_for_project(project, :post_password)
set_language_if_valid Setting.default_language
channels = Messenger.channels_for_project project
@@ -21,14 +21,14 @@ module RedmineMessenger
return unless channels.present? && url
Messenger.speak(l(:label_messenger_password_created,
project_url: "<#{Messenger.object_url self}|#{ERB::Util.html_escape(project)}>",
project_url: "<#{Messenger.object_url project}|#{ERB::Util.html_escape(project)}>",
url: "<#{Messenger.object_url self}|#{name}>",
user: User.current),
channels, nil, url)
end
def send_messenger_update
return unless RedmineMessenger.settings[:post_password_updates] == '1'
return unless Messenger.setting_for_project(project, :post_password_updates)
set_language_if_valid Setting.default_language
channels = Messenger.channels_for_project project
@@ -36,7 +36,7 @@ module RedmineMessenger
return unless channels.present? && url
Messenger.speak(l(:label_messenger_password_updated,
project_url: "<#{Messenger.object_url self}|#{ERB::Util.html_escape(project)}>",
project_url: "<#{Messenger.object_url project}|#{ERB::Util.html_escape(project)}>",
url: "<#{Messenger.object_url self}|#{name}>",
user: User.current),
channels, nil, url)

View File

@@ -0,0 +1,48 @@
# Redmine Messenger plugin for Redmine
require_dependency 'projects_helper'
module RedmineMessenger
module Patches
module ProjectsHelperPatch
def self.included(base)
base.send(:include, InstanceMethods)
base.class_eval do
alias_method_chain :project_settings_tabs, :messenger
end
end
module InstanceMethods
def project_messenger_options(active)
options_for_select({ l(:label_messenger_settings_default) => 0,
l(:label_messenger_settings_disabled) => 1,
l(:label_messenger_settings_enabled) => 2 }, active)
end
def project_settings_tabs_with_messenger
tabs = project_settings_tabs_without_messenger
action = { name: 'messenger',
controller: 'messenger_settings',
action: :show,
partial: 'messenger_settings/show',
label: :label_messenger }
tabs << action if User.current.allowed_to?(:manage_messenger, @project)
tabs
end
def project_setting_messenger_default_value(value)
if RedmineMessenger.settings[value] == '1'
l(:label_messenger_settings_enabled)
else
l(:label_messenger_settings_disabled)
end
end
end
end
end
end
unless ProjectsHelper.included_modules.include?(RedmineMessenger::Patches::ProjectsHelperPatch)
ProjectsHelper.send(:include, RedmineMessenger::Patches::ProjectsHelperPatch)
end

View File

@@ -13,7 +13,7 @@ module RedmineMessenger
module InstanceMethods
def send_messenger_create
return unless RedmineMessenger.settings[:post_wiki] == '1'
return unless Messenger.setting_for_project(project, :post_wiki)
set_language_if_valid Setting.default_language
channels = Messenger.channels_for_project project
@@ -21,14 +21,14 @@ module RedmineMessenger
return unless channels.present? && url
Messenger.speak(l(:label_messenger_wiki_created,
project_url: "<#{Messenger.object_url self}|#{ERB::Util.html_escape(project)}>",
project_url: "<#{Messenger.object_url project}|#{ERB::Util.html_escape(project)}>",
url: "<#{Messenger.object_url self}|#{title}>",
user: User.current),
channels, nil, url)
end
def send_messenger_update
return unless RedmineMessenger.settings[:post_wiki_updates] == '1'
return unless Messenger.setting_for_project(project, :post_wiki_updates)
set_language_if_valid Setting.default_language
channels = Messenger.channels_for_project project
@@ -43,7 +43,7 @@ module RedmineMessenger
end
Messenger.speak(l(:label_messenger_wiki_updated,
project_url: "<#{Messenger.object_url self}|#{ERB::Util.html_escape(project)}>",
project_url: "<#{Messenger.object_url project}|#{ERB::Util.html_escape(project)}>",
url: "<#{Messenger.object_url self}|#{title}>",
user: content.author),
channels, attachment, url)