##// END OF EJS Templates
By default, only show statuses that are used by the tracker on the workflow edit view....
By default, only show statuses that are used by the tracker on the workflow edit view. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3188 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r3043:d905f2ce7eb2
r3074:6bf0723d0654
Show More
issue_status.rb
92 lines | 3.2 KiB | text/x-ruby | RubyLexer
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 # redMine - project management software
# Copyright (C) 2006 Jean-Philippe Lang
#
# 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.
#
# 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.
#
# 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 IssueStatus < ActiveRecord::Base
before_destroy :check_integrity
Jean-Philippe Lang
Added :dependent => :delete_all on IssueStatus Workflow association....
r555 has_many :workflows, :foreign_key => "old_status_id", :dependent => :delete_all
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 acts_as_list
validates_presence_of :name
validates_uniqueness_of :name
Jean-Philippe Lang
Added several validates_length_of...
r590 validates_length_of :name, :maximum => 30
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 validates_format_of :name, :with => /^[\w\s\'\-]*$/i
Jean-Philippe Lang
Allow blank value for IssueStatus#default_done_ratio....
r3043 validates_inclusion_of :default_done_ratio, :in => 0..100, :allow_nil => true
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330
Jean-Philippe Lang
Fixed: the default status is lost when reordering issue statuses (#1955)....
r1909 def after_save
IssueStatus.update_all("is_default=#{connection.quoted_false}", ['id <> ?', id]) if self.is_default?
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 end
# Returns the default status for new issues
def self.default
find(:first, :conditions =>["is_default=?", true])
end
Eric Davis
Adds a Setting to control how an Issue's done_ratio is calculated:...
r3037
# Update all the +Issues+ setting their done_ratio to the value of their +IssueStatus+
def self.update_issue_done_ratios
if Issue.use_status_for_done_ratio?
IssueStatus.find(:all, :conditions => ["default_done_ratio >= 0"]).each do |status|
Issue.update_all(["done_ratio = ?", status.default_done_ratio],
["status_id = ?", status.id])
end
end
return Issue.use_status_for_done_ratio?
end
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330
# Returns an array of all statuses the given role can switch to
Jean-Philippe Lang
Various code cleaning, mainly on User, Permission and IssueStatus models....
r411 # Uses association cache when called more than one time
Jean-Philippe Lang
Allows multiple roles on the same project (#706). Prerequisite for user groups feature....
r2627 def new_statuses_allowed_to(roles, tracker)
if roles && tracker
role_ids = roles.collect(&:id)
new_statuses = workflows.select {|w| role_ids.include?(w.role_id) && w.tracker_id == tracker.id}.collect{|w| w.new_status}.compact.sort
else
[]
end
Jean-Philippe Lang
Various code cleaning, mainly on User, Permission and IssueStatus models....
r411 end
# Same thing as above but uses a database query
# More efficient than the previous method if called just once
Jean-Philippe Lang
Allows multiple roles on the same project (#706). Prerequisite for user groups feature....
r2627 def find_new_statuses_allowed_to(roles, tracker)
if roles && tracker
workflows.find(:all,
:include => :new_status,
:conditions => { :role_id => roles.collect(&:id),
:tracker_id => tracker.id}).collect{ |w| w.new_status }.compact.sort
else
[]
end
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 end
Jean-Philippe Lang
Status can now be updated when bulk editing issues....
r820
Jean-Philippe Lang
Allows multiple roles on the same project (#706). Prerequisite for user groups feature....
r2627 def new_status_allowed_to?(status, roles, tracker)
if status && roles && tracker
!workflows.find(:first, :conditions => {:new_status_id => status.id, :role_id => roles.collect(&:id), :tracker_id => tracker.id}).nil?
else
Jean-Philippe Lang
Status can now be updated when bulk editing issues....
r820 false
Jean-Philippe Lang
Allows multiple roles on the same project (#706). Prerequisite for user groups feature....
r2627 end
Jean-Philippe Lang
Status can now be updated when bulk editing issues....
r820 end
Jean-Philippe Lang
Added the ability to customize columns of a saved query....
r771
Jean-Philippe Lang
Merged IssuesController change_status and add_note actions....
r1030 def <=>(status)
position <=> status.position
end
Jean-Philippe Lang
Added the ability to customize columns of a saved query....
r771 def to_s; name end
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 private
def check_integrity
raise "Can't delete status" if Issue.find(:first, :conditions => ["status_id=?", self.id])
Jean-Philippe Lang
Initial commit...
r2 end
end