#17: Compatibility with 2.x.x

This commit is contained in:
Anton Argirov 2015-06-24 13:32:45 +06:00
parent b0b17c20da
commit 208a84eebd
2 changed files with 22 additions and 8 deletions

View File

@ -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) }

View File

@ -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