diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2007-11-20 20:29:03 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2007-11-20 20:29:03 +0000 |
commit | 8d91afc33e3b5e7ef491fb30fb5ccbda35a1d02d (patch) | |
tree | 8318d86019c2000aa720c737b50e77a5aee8bce6 /app/models | |
parent | 987a5aa22114ec2e931464782351431e4dfec97c (diff) | |
download | redmine-8d91afc33e3b5e7ef491fb30fb5ccbda35a1d02d.tar.gz redmine-8d91afc33e3b5e7ef491fb30fb5ccbda35a1d02d.zip |
Added per-project tracker selection. Trackers can be selected on project settings.
git-svn-id: http://redmine.rubyforge.org/svn/trunk@920 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app/models')
-rw-r--r-- | app/models/custom_value.rb | 4 | ||||
-rw-r--r-- | app/models/issue.rb | 6 | ||||
-rw-r--r-- | app/models/project.rb | 1 | ||||
-rw-r--r-- | app/models/tracker.rb | 4 |
4 files changed, 12 insertions, 3 deletions
diff --git a/app/models/custom_value.rb b/app/models/custom_value.rb index afe4c1afb..c3d6b7bb9 100644 --- a/app/models/custom_value.rb +++ b/app/models/custom_value.rb @@ -31,9 +31,9 @@ protected when 'float' begin; !value.blank? && Kernel.Float(value); rescue; errors.add(:value, :activerecord_error_invalid) end when 'date' - errors.add(:value, :activerecord_error_not_a_date) unless value =~ /^\d{4}-\d{2}-\d{2}$/ or value.empty? + errors.add(:value, :activerecord_error_not_a_date) unless value =~ /^\d{4}-\d{2}-\d{2}$/ or value.blank? when 'list' - errors.add(:value, :activerecord_error_inclusion) unless custom_field.possible_values.include? value or value.empty? + errors.add(:value, :activerecord_error_inclusion) unless custom_field.possible_values.include?(value) or value.blank? end end end diff --git a/app/models/issue.rb b/app/models/issue.rb index 60cca4051..f7b01ea6a 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -40,7 +40,7 @@ class Issue < ActiveRecord::Base acts_as_event :title => Proc.new {|o| "#{o.tracker.name} ##{o.id}: #{o.subject}"}, :url => Proc.new {|o| {:controller => 'issues', :action => 'show', :id => o.id}} - validates_presence_of :subject, :description, :priority, :tracker, :author, :status + validates_presence_of :subject, :description, :priority, :project, :tracker, :author, :status validates_length_of :subject, :maximum => 255 validates_inclusion_of :done_ratio, :in => 0..100 validates_numericality_of :estimated_hours, :allow_nil => true @@ -106,6 +106,10 @@ class Issue < ActiveRecord::Base end end + def validate_on_create + errors.add :tracker_id, :activerecord_error_invalid unless project.trackers.include?(tracker) + end + def before_create # default assignment based on category if assigned_to.nil? && category && category.assigned_to diff --git a/app/models/project.rb b/app/models/project.rb index afaa049c6..be46d6189 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -24,6 +24,7 @@ class Project < ActiveRecord::Base has_many :users, :through => :members has_many :custom_values, :dependent => :delete_all, :as => :customized has_many :enabled_modules, :dependent => :delete_all + has_and_belongs_to_many :trackers, :order => "#{Tracker.table_name}.position" has_many :issues, :dependent => :destroy, :order => "#{Issue.table_name}.created_on DESC", :include => [:status, :tracker] has_many :issue_changes, :through => :issues, :source => :journals has_many :versions, :dependent => :destroy, :order => "#{Version.table_name}.effective_date DESC, #{Version.table_name}.name DESC" diff --git a/app/models/tracker.rb b/app/models/tracker.rb index 90ef31912..6de2a098c 100644 --- a/app/models/tracker.rb +++ b/app/models/tracker.rb @@ -29,6 +29,10 @@ class Tracker < ActiveRecord::Base def to_s; name end + def self.all + find(:all, :order => 'position') + end + private def check_integrity raise "Can't delete tracker" if Issue.find(:first, :conditions => ["tracker_id=?", self.id]) |