##// END OF EJS Templates
Status can now be updated when bulk editing issues....
Status can now be updated when bulk editing issues. Workflow permissions are applied as when changing the status of a single issue. The issue is not saved (and an error is displayed) if the status transition is not allowed for the user. git-svn-id: http://redmine.rubyforge.org/svn/trunk@831 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r820:65e05d822acd
r820:65e05d822acd
Show More
issue_status.rb
67 lines | 2.7 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
validates_length_of :html_color, :is => 6
validates_format_of :html_color, :with => /^[a-f0-9]*$/i
def before_save
IssueStatus.update_all "is_default=#{connection.quoted_false}" if self.is_default?
end
# Returns the default status for new issues
def self.default
find(:first, :conditions =>["is_default=?", true])
end
# 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
added svn:eol-style native property on /app files...
r330 def new_statuses_allowed_to(role, tracker)
Jean-Philippe Lang
The ability to change the issue status to the same status is no longer forced....
r467 new_statuses = workflows.select {|w| w.role_id == role.id && w.tracker_id == tracker.id}.collect{|w| w.new_status} if role && tracker
Jean-Philippe Lang
Fixed: Error when editing the wokflow after deleting a status...
r581 new_statuses ? new_statuses.compact.sort{|x, y| x.position <=> y.position } : []
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
def find_new_statuses_allowed_to(role, tracker)
Jean-Philippe Lang
The ability to change the issue status to the same status is no longer forced....
r467 new_statuses = workflows.find(:all,
Jean-Philippe Lang
Fixed a regression (crash when an admin with no role on the project try to create an issue)...
r417 :include => :new_status,
Jean-Philippe Lang
Added :dependent => :delete_all on IssueStatus Workflow association....
r555 :conditions => ["role_id=? and tracker_id=?", role.id, tracker.id]).collect{ |w| w.new_status }.compact if role && tracker
Jean-Philippe Lang
Fixed: default status not showing in new issue...
r472 new_statuses ? new_statuses.sort{|x, y| x.position <=> y.position } : []
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
def new_status_allowed_to?(status, role, tracker)
status && role && tracker ?
!workflows.find(:first, :conditions => {:new_status_id => status.id, :role_id => role.id, :tracker_id => tracker.id}).nil? :
false
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