From 208a84eebdbab1620dcc917cfe3301c24f4f1a9c Mon Sep 17 00:00:00 2001 From: Anton Argirov Date: Wed, 24 Jun 2015 13:32:45 +0600 Subject: [PATCH] #17: Compatibility with 2.x.x --- app/models/custom_workflow.rb | 11 +++++++++-- lib/redmine_custom_workflows/group_patch.rb | 19 +++++++++++++------ 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/app/models/custom_workflow.rb b/app/models/custom_workflow.rb index 1c1d6ba..2835e32 100644 --- a/app/models/custom_workflow.rb +++ b/app/models/custom_workflow.rb @@ -21,10 +21,17 @@ class CustomWorkflow < ActiveRecord::Base validates_format_of :author, :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i, :allow_blank => true validate :validate_syntax - default_scope { order(:position => :asc) } + if Rails::VERSION::MAJOR >= 4 + default_scope { order(:position => :asc) } + projects_join_table = reflect_on_association(:projects).join_table + else + default_scope :order => 'position ASC' + projects_join_table = reflect_on_association(:projects).options[:join_table] + end + scope :active, lambda { where(:active => true) } scope :for_project, (lambda do |project| - where("is_for_all OR EXISTS (SELECT * FROM #{reflect_on_association(:projects).join_table} WHERE project_id=? AND custom_workflow_id=id)", project.id) + where("is_for_all OR EXISTS (SELECT * FROM #{projects_join_table} WHERE project_id=? AND custom_workflow_id=id)", project.id) end) scope :observing, lambda { |observable| where(:observable => observable) } diff --git a/lib/redmine_custom_workflows/group_patch.rb b/lib/redmine_custom_workflows/group_patch.rb index 25130c1..ef80225 100644 --- a/lib/redmine_custom_workflows/group_patch.rb +++ b/lib/redmine_custom_workflows/group_patch.rb @@ -7,17 +7,24 @@ module RedmineCustomWorkflows before_save :before_save_custom_workflows after_save :after_save_custom_workflows - callback = lambda do |event, group, user| + def self.users_callback(event, group, user) group.instance_variable_set(:@group, group) group.instance_variable_set(:@user, user) CustomWorkflow.run_shared_code(group) if event.to_s.starts_with? 'before_' CustomWorkflow.run_custom_workflows(:group_users, group, event) end - - before_add_for_users << callback - before_remove_for_users << callback - after_add_for_users << callback - after_remove_for_users << callback + if Rails::VERSION::MAJOR >= 4 + callback_lambda = lambda { |event, group, user| Group.users_callback(event, group, user) } + before_add_for_users << callback_lambda + before_remove_for_users << callback_lambda + after_add_for_users << callback_lambda + after_remove_for_users << callback_lambda + else + before_add_for_users << lambda { |group, user| Group.users_callback(:before_add, group, user) } + before_remove_for_users << lambda { |group, user| Group.users_callback(:before_remove, group, user) } + after_add_for_users << lambda { |group, user| Group.users_callback(:after_add, group, user) } + after_remove_for_users << lambda { |group, user| Group.users_callback(:after_remove, group, user) } + end end end