##// END OF EJS Templates
Update the issue subject when choosing an issue from the drop down menu....
Update the issue subject when choosing an issue from the drop down menu. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11083 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r10758:24be0551ccd7
r10853:6be315c1ff8e
Show More
workflows_controller.rb
128 lines | 5.1 KiB | text/x-ruby | RubyLexer
/ app / controllers / workflows_controller.rb
Jean-Philippe Lang
Adds a workflow overview screen....
r1912 # Redmine - project management software
Jean-Philippe Lang
Copyright update....
r9453 # Copyright (C) 2006-2012 Jean-Philippe Lang
Jean-Philippe Lang
Adds a workflow overview screen....
r1912 #
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/workflows_controller.rb....
r6751 #
Jean-Philippe Lang
Adds a workflow overview screen....
r1912 # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/workflows_controller.rb....
r6751 #
Jean-Philippe Lang
Adds a workflow overview screen....
r1912 # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class WorkflowsController < ApplicationController
Jean-Philippe Lang
Adds an admin layout that displays the admin menu in the sidebar....
r3062 layout 'admin'
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/workflows_controller.rb....
r6751
Jean-Philippe Lang
Code cleanup....
r9810 before_filter :require_admin, :find_roles, :find_trackers
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/workflows_controller.rb....
r6751
Jean-Philippe Lang
Adds a workflow overview screen....
r1912 def index
Jean-Philippe Lang
Workflow enhancement: editable and required fields configurable by role, tracker and status (#703, #3521)....
r9794 @workflow_counts = WorkflowTransition.count_by_tracker_and_role
Jean-Philippe Lang
Adds a workflow overview screen....
r1912 end
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/workflows_controller.rb....
r6751
Jean-Philippe Lang
Adds a workflow overview screen....
r1912 def edit
Jean-Philippe Lang
Find role and tracker only when param is present....
r9811 @role = Role.find_by_id(params[:role_id]) if params[:role_id]
@tracker = Tracker.find_by_id(params[:tracker_id]) if params[:tracker_id]
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/workflows_controller.rb....
r6751
Jean-Philippe Lang
Adds a workflow overview screen....
r1912 if request.post?
Jean-Philippe Lang
Workflow enhancement: editable and required fields configurable by role, tracker and status (#703, #3521)....
r9794 WorkflowTransition.destroy_all( ["role_id=? and tracker_id=?", @role.id, @tracker.id])
Jean-Philippe Lang
Allow additional workflow transitions for issue author and assignee (#2732)....
r4775 (params[:issue_status] || []).each { |status_id, transitions|
transitions.each { |new_status_id, options|
author = options.is_a?(Array) && options.include?('author') && !options.include?('always')
assignee = options.is_a?(Array) && options.include?('assignee') && !options.include?('always')
Jean-Philippe Lang
Workflow enhancement: editable and required fields configurable by role, tracker and status (#703, #3521)....
r9794 WorkflowTransition.create(:role_id => @role.id, :tracker_id => @tracker.id, :old_status_id => status_id, :new_status_id => new_status_id, :author => author, :assignee => assignee)
Jean-Philippe Lang
Adds a workflow overview screen....
r1912 }
}
if @role.save
Jean-Philippe Lang
Use named routes in controllers....
r10754 redirect_to workflows_edit_path(:role_id => @role, :tracker_id => @tracker, :used_statuses_only => params[:used_statuses_only])
Jean-Philippe Lang
Allow additional workflow transitions for issue author and assignee (#2732)....
r4775 return
Jean-Philippe Lang
Adds a workflow overview screen....
r1912 end
end
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/workflows_controller.rb....
r6751
Jean-Philippe Lang
By default, only show statuses that are used by the tracker on the workflow edit view....
r3074 @used_statuses_only = (params[:used_statuses_only] == '0' ? false : true)
if @tracker && @used_statuses_only && @tracker.issue_statuses.any?
@statuses = @tracker.issue_statuses
end
Jean-Philippe Lang
Code cleanup....
r9808 @statuses ||= IssueStatus.sorted.all
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/workflows_controller.rb....
r6751
Jean-Philippe Lang
Allow additional workflow transitions for issue author and assignee (#2732)....
r4775 if @tracker && @role && @statuses.any?
Jean-Philippe Lang
Code cleanup....
r9809 workflows = WorkflowTransition.where(:role_id => @role.id, :tracker_id => @tracker.id).all
Jean-Philippe Lang
Allow additional workflow transitions for issue author and assignee (#2732)....
r4775 @workflows = {}
@workflows['always'] = workflows.select {|w| !w.author && !w.assignee}
@workflows['author'] = workflows.select {|w| w.author}
@workflows['assignee'] = workflows.select {|w| w.assignee}
end
Jean-Philippe Lang
Adds a workflow overview screen....
r1912 end
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/workflows_controller.rb....
r6751
Jean-Philippe Lang
Workflow enhancement: editable and required fields configurable by role, tracker and status (#703, #3521)....
r9794 def permissions
Jean-Philippe Lang
Find role and tracker only when param is present....
r9811 @role = Role.find_by_id(params[:role_id]) if params[:role_id]
@tracker = Tracker.find_by_id(params[:tracker_id]) if params[:tracker_id]
Jean-Philippe Lang
Workflow enhancement: editable and required fields configurable by role, tracker and status (#703, #3521)....
r9794
Jean-Philippe Lang
Adds option for displaying all statuses on workflow permissions....
r9812 if request.post? && @role && @tracker
WorkflowPermission.replace_permissions(@tracker, @role, params[:permissions] || {})
Jean-Philippe Lang
Use named routes in controllers....
r10754 redirect_to workflows_permissions_path(:role_id => @role, :tracker_id => @tracker, :used_statuses_only => params[:used_statuses_only])
Jean-Philippe Lang
Adds option for displaying all statuses on workflow permissions....
r9812 return
end
Jean-Philippe Lang
Workflow enhancement: editable and required fields configurable by role, tracker and status (#703, #3521)....
r9794
Jean-Philippe Lang
Adds option for displaying all statuses on workflow permissions....
r9812 @used_statuses_only = (params[:used_statuses_only] == '0' ? false : true)
if @tracker && @used_statuses_only && @tracker.issue_statuses.any?
Jean-Philippe Lang
Workflow enhancement: editable and required fields configurable by role, tracker and status (#703, #3521)....
r9794 @statuses = @tracker.issue_statuses
Jean-Philippe Lang
Adds option for displaying all statuses on workflow permissions....
r9812 end
@statuses ||= IssueStatus.sorted.all
if @role && @tracker
Jean-Philippe Lang
Workflow enhancement: editable and required fields configurable by role, tracker and status (#703, #3521)....
r9794 @fields = (Tracker::CORE_FIELDS_ALL - @tracker.disabled_core_fields).map {|field| [field, l("field_"+field.sub(/_id$/, ''))]}
@custom_fields = @tracker.custom_fields
@permissions = WorkflowPermission.where(:tracker_id => @tracker.id, :role_id => @role.id).all.inject({}) do |h, w|
h[w.old_status_id] ||= {}
h[w.old_status_id][w.field_name] = w.rule
h
end
@statuses.each {|status| @permissions[status.id] ||= {}}
end
end
Jean-Philippe Lang
Adds workflow copy functionality (#1727)....
r3040 def copy
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/workflows_controller.rb....
r6751
Jean-Philippe Lang
Fixes an error with postgres....
r3079 if params[:source_tracker_id].blank? || params[:source_tracker_id] == 'any'
@source_tracker = nil
else
@source_tracker = Tracker.find_by_id(params[:source_tracker_id].to_i)
end
if params[:source_role_id].blank? || params[:source_role_id] == 'any'
@source_role = nil
else
@source_role = Role.find_by_id(params[:source_role_id].to_i)
end
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/workflows_controller.rb....
r6751
Jean-Philippe Lang
Adds workflow copy functionality (#1727)....
r3040 @target_trackers = params[:target_tracker_ids].blank? ? nil : Tracker.find_all_by_id(params[:target_tracker_ids])
@target_roles = params[:target_role_ids].blank? ? nil : Role.find_all_by_id(params[:target_role_ids])
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/workflows_controller.rb....
r6751
Jean-Philippe Lang
Adds workflow copy functionality (#1727)....
r3040 if request.post?
if params[:source_tracker_id].blank? || params[:source_role_id].blank? || (@source_tracker.nil? && @source_role.nil?)
flash.now[:error] = l(:error_workflow_copy_source)
Jean-Philippe Lang
Code cleanup....
r10758 elsif @target_trackers.blank? || @target_roles.blank?
Jean-Philippe Lang
Adds workflow copy functionality (#1727)....
r3040 flash.now[:error] = l(:error_workflow_copy_target)
else
Jean-Philippe Lang
Workflow enhancement: editable and required fields configurable by role, tracker and status (#703, #3521)....
r9794 WorkflowRule.copy(@source_tracker, @source_role, @target_trackers, @target_roles)
Jean-Philippe Lang
Adds workflow copy functionality (#1727)....
r3040 flash[:notice] = l(:notice_successful_update)
Jean-Philippe Lang
Use named routes in controllers....
r10754 redirect_to workflows_copy_path(:source_tracker_id => @source_tracker, :source_role_id => @source_role)
Jean-Philippe Lang
Adds workflow copy functionality (#1727)....
r3040 end
end
end
Eric Davis
Refactor: Extract methods to before_filters...
r3422
private
def find_roles
Jean-Philippe Lang
Code cleanup....
r9809 @roles = Role.sorted.all
Eric Davis
Refactor: Extract methods to before_filters...
r3422 end
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/workflows_controller.rb....
r6751
Eric Davis
Refactor: Extract methods to before_filters...
r3422 def find_trackers
Jean-Philippe Lang
Code cleanup....
r9809 @trackers = Tracker.sorted.all
Eric Davis
Refactor: Extract methods to before_filters...
r3422 end
Jean-Philippe Lang
Adds a workflow overview screen....
r1912 end