Patch integration cleanups

This commit is contained in:
Alexander Meindl 2020-04-12 15:49:53 +02:00
parent 2a5fe8b27c
commit f91d562bb9
16 changed files with 142 additions and 130 deletions

View File

@ -1,16 +1,16 @@
module Additionals
module Patches
module AccessControlPatch
def self.included(base)
base.class_eval do
def self.available_project_modules
@available_project_modules = available_project_modules_all
.reject { |m| Additionals.setting(:disabled_modules).to_a.include?(m.to_s) }
end
extend ActiveSupport::Concern
def self.available_project_modules_all
@permissions.collect(&:project_module).compact!.uniq
end
included do
def self.available_project_modules
@available_project_modules = available_project_modules_all
.reject { |m| Additionals.setting(:disabled_modules).to_a.include?(m.to_s) }
end
def self.available_project_modules_all
@permissions.collect(&:project_module).compact!.uniq
end
end
end

View File

@ -1,13 +1,13 @@
module Additionals
module Patches
module AccountControllerPatch
def self.included(base)
base.include InstanceMethods
base.class_eval do
invisible_captcha(only: [:register],
on_timestamp_spam: :timestamp_spam_check,
if: -> { Additionals.setting?(:invisible_captcha) })
end
extend ActiveSupport::Concern
included do
include InstanceMethods
invisible_captcha(only: [:register],
on_timestamp_spam: :timestamp_spam_check,
if: -> { Additionals.setting?(:invisible_captcha) })
end
module InstanceMethods

View File

@ -1,11 +1,11 @@
module Additionals
module Patches
module ApplicationControllerPatch
def self.included(base)
base.include InstanceMethods
base.class_eval do
before_action :enable_smileys
end
extend ActiveSupport::Concern
included do
include InstanceMethods
before_action :enable_smileys
end
module InstanceMethods

View File

@ -1,17 +1,17 @@
module Additionals
module Patches
module FormatterMarkdownPatch
def self.included(base)
base.class_eval do
base.include Additionals::Formatter
extend ActiveSupport::Concern
# Add a postprocess hook to redcarpet's html formatter
def postprocess(text)
if Additionals.setting?(:legacy_smiley_support)
render_inline_smileys(inline_emojify(text))
else
text
end
included do
include Additionals::Formatter
# Add a postprocess hook to redcarpet's html formatter
def postprocess(text)
if Additionals.setting?(:legacy_smiley_support)
render_inline_smileys(inline_emojify(text))
else
text
end
end
end

View File

@ -1,8 +1,10 @@
module Additionals
module Patches
module FormatterTextilePatch
def self.included(base)
base.include Additionals::Formatter
extend ActiveSupport::Concern
included do
include Additionals::Formatter
# emojify are always enabled
Redmine::WikiFormatting::Textile::Formatter::RULES << :inline_emojify

View File

@ -1,11 +1,13 @@
module Additionals
module Patches
module FormattingHelperPatch
def self.included(base)
base.prepend InstancOverwriteMethods
extend ActiveSupport::Concern
included do
prepend InstanceOverwriteMethods
end
module InstancOverwriteMethods
module InstanceOverwriteMethods
def heads_for_wiki_formatter
super
return if @additionals_macro_list

View File

@ -1,28 +1,28 @@
module Additionals
module Patches
module IssuePatch
def self.included(base)
base.extend ClassMethods
base.include InstanceMethods
base.class_eval do
alias_method :editable_without_additionals?, :editable?
alias_method :editable?, :editable_with_additionals?
validate :validate_change_on_closed
validate :validate_timelog_required
validate :validate_current_user_status
before_validation :auto_assigned_to
before_save :change_status_with_assigned_to_change,
:autowatch_involved
extend ActiveSupport::Concern
safe_attributes 'author_id',
if: proc { |issue, user|
issue.new_record? && user.allowed_to?(:change_new_issue_author, issue.project) ||
issue.persisted? && user.allowed_to?(:edit_issue_author, issue.project)
}
end
included do
include InstanceMethods
alias_method :editable_without_additionals?, :editable?
alias_method :editable?, :editable_with_additionals?
validate :validate_change_on_closed
validate :validate_timelog_required
validate :validate_current_user_status
before_validation :auto_assigned_to
before_save :change_status_with_assigned_to_change,
:autowatch_involved
safe_attributes 'author_id',
if: proc { |issue, user|
issue.new_record? && user.allowed_to?(:change_new_issue_author, issue.project) ||
issue.persisted? && user.allowed_to?(:edit_issue_author, issue.project)
}
end
module ClassMethods
class_methods do
def join_issue_status(options = {})
sql = "JOIN #{IssueStatus.table_name} ON #{IssueStatus.table_name}.id = #{table_name}.status_id"
return sql unless options.key?(:is_closed)

View File

@ -1,12 +1,13 @@
module Additionals
module Patches
module IssuePriorityPatch
def self.included(base)
base.include InstanceMethods
base.class_eval do
alias_method :css_classes_without_additionals, :css_classes
alias_method :css_classes, :css_classes_with_additionals
end
extend ActiveSupport::Concern
included do
include InstanceMethods
alias_method :css_classes_without_additionals, :css_classes
alias_method :css_classes, :css_classes_with_additionals
end
module InstanceMethods

View File

@ -1,45 +1,45 @@
module Additionals
module Patches
module PrincipalPatch
def self.included(base)
base.class_eval do
# TODO: find better solution, which not requires overwrite visible
# to filter out hide role members
scope :visible, lambda { |*args|
user = args.first || User.current
extend ActiveSupport::Concern
if user.admin?
all
included do
# TODO: find better solution, which not requires overwrite visible
# to filter out hide role members
scope :visible, lambda { |*args|
user = args.first || User.current
if user.admin?
all
else
view_all_active = if user.memberships.to_a.any?
user.memberships.any? { |m| m.roles.any? { |r| r.users_visibility == 'all' } }
else
user.builtin_role.users_visibility == 'all'
end
if view_all_active
active
else
view_all_active = if user.memberships.to_a.any?
user.memberships.any? { |m| m.roles.any? { |r| r.users_visibility == 'all' } }
else
user.builtin_role.users_visibility == 'all'
end
# self and members of visible projects
scope = if user.allowed_to?(:show_hidden_roles_in_memberbox, nil, global: true)
active.where("#{table_name}.id = ? OR #{table_name}.id IN (SELECT user_id " \
"FROM #{Member.table_name} WHERE project_id IN (?))",
user.id, user.visible_project_ids)
else
active.where("#{table_name}.id = ? OR #{table_name}.id IN (SELECT user_id " \
"FROM #{Member.table_name} JOIN #{MemberRole.table_name} " \
" ON #{Member.table_name}.id = #{MemberRole.table_name}.member_id" \
" JOIN #{Role.table_name} " \
" ON #{Role.table_name}.id = #{MemberRole.table_name}.role_id" \
" WHERE project_id IN (?) AND #{Role.table_name}.hide = ?)",
user.id, user.visible_project_ids, false)
end
if view_all_active
active
else
# self and members of visible projects
scope = if user.allowed_to?(:show_hidden_roles_in_memberbox, nil, global: true)
active.where("#{table_name}.id = ? OR #{table_name}.id IN (SELECT user_id " \
"FROM #{Member.table_name} WHERE project_id IN (?))",
user.id, user.visible_project_ids)
else
active.where("#{table_name}.id = ? OR #{table_name}.id IN (SELECT user_id " \
"FROM #{Member.table_name} JOIN #{MemberRole.table_name} " \
" ON #{Member.table_name}.id = #{MemberRole.table_name}.member_id" \
" JOIN #{Role.table_name} " \
" ON #{Role.table_name}.id = #{MemberRole.table_name}.role_id" \
" WHERE project_id IN (?) AND #{Role.table_name}.hide = ?)",
user.id, user.visible_project_ids, false)
end
scope
end
scope
end
}
end
end
}
end
end
end

View File

@ -1,12 +1,14 @@
module Additionals
module Patches
module ProjectPatch
def self.included(base)
base.prepend InstancOverwriteMethods
base.include InstanceMethods
extend ActiveSupport::Concern
included do
prepend InstanceOverwriteMethods
include InstanceMethods
end
module InstancOverwriteMethods
module InstanceOverwriteMethods
def users_by_role
roles_with_users = super
roles_with_users.each do |role_with_users|

View File

@ -1,11 +1,13 @@
module Additionals
module Patches
module ReportsControllerPatch
def self.included(base)
base.prepend InstancOverwriteMethods
extend ActiveSupport::Concern
included do
prepend InstanceOverwriteMethods
end
module InstancOverwriteMethods
module InstanceOverwriteMethods
def issue_report_details
super
return if @rows.nil?

View File

@ -1,10 +1,10 @@
module Additionals
module Patches
module RolePatch
def self.included(base)
base.class_eval do
safe_attributes 'hide'
end
extend ActiveSupport::Concern
included do
safe_attributes 'hide'
end
end
end

View File

@ -1,13 +1,14 @@
module Additionals
module Patches
module TimeEntryPatch
def self.included(base)
base.include InstanceMethods
base.class_eval do
alias_method :editable_by_without_additionals?, :editable_by?
alias_method :editable_by?, :editable_by_with_additionals?
validate :validate_issue_allowed
end
extend ActiveSupport::Concern
included do
include InstanceMethods
alias_method :editable_by_without_additionals?, :editable_by?
alias_method :editable_by?, :editable_by_with_additionals?
validate :validate_issue_allowed
end
module InstanceMethods

View File

@ -1,10 +1,10 @@
module Additionals
module Patches
module UserPreferencePatch
def self.included(base)
base.class_eval do
safe_attributes 'autowatch_involved_issue'
end
extend ActiveSupport::Concern
included do
safe_attributes 'autowatch_involved_issue'
end
end
end

View File

@ -3,12 +3,13 @@ require_dependency 'wiki_controller'
module Additionals
module Patches
module WikiControllerPatch
def self.included(base)
base.include InstanceMethods
base.class_eval do
alias_method :respond_to_without_additionals, :respond_to
alias_method :respond_to, :respond_to_with_additionals
end
extend ActiveSupport::Concern
included do
include InstanceMethods
alias_method :respond_to_without_additionals, :respond_to
alias_method :respond_to, :respond_to_with_additionals
end
module InstanceMethods

View File

@ -4,12 +4,13 @@ module Additionals
module Patches
# Patch wiki to include sidebar
module WikiPatch
def self.included(base)
base.include InstanceMethods
base.class_eval do
alias_method :sidebar_without_additionals, :sidebar
alias_method :sidebar, :sidebar_with_additionals
end
extend ActiveSupport::Concern
included do
include InstanceMethods
alias_method :sidebar_without_additionals, :sidebar
alias_method :sidebar, :sidebar_with_additionals
end
module InstanceMethods