##// END OF EJS Templates
remove trailing white-spaces from app/models/enumeration.rb....
Toshi MARUYAMA -
r6381:8be05afff8bd
parent child
Show More
@@ -1,135 +1,135
1 # redMine - project management software
2 # Copyright (C) 2006 Jean-Philippe Lang
1 # Redmine - project management software
2 # Copyright (C) 2006-2011 Jean-Philippe Lang
3 3 #
4 4 # This program is free software; you can redistribute it and/or
5 5 # modify it under the terms of the GNU General Public License
6 6 # as published by the Free Software Foundation; either version 2
7 7 # of the License, or (at your option) any later version.
8 #
8 #
9 9 # This program is distributed in the hope that it will be useful,
10 10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 12 # GNU General Public License for more details.
13 #
13 #
14 14 # You should have received a copy of the GNU General Public License
15 15 # along with this program; if not, write to the Free Software
16 16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17 17
18 18 class Enumeration < ActiveRecord::Base
19 19 default_scope :order => "#{Enumeration.table_name}.position ASC"
20
20
21 21 belongs_to :project
22
22
23 23 acts_as_list :scope => 'type = \'#{type}\''
24 24 acts_as_customizable
25 25 acts_as_tree :order => 'position ASC'
26 26
27 27 before_destroy :check_integrity
28
28
29 29 validates_presence_of :name
30 30 validates_uniqueness_of :name, :scope => [:type, :project_id]
31 31 validates_length_of :name, :maximum => 30
32 32
33 33 named_scope :shared, :conditions => { :project_id => nil }
34 34 named_scope :active, :conditions => { :active => true }
35 35 named_scope :named, lambda {|arg| { :conditions => ["LOWER(#{table_name}.name) = LOWER(?)", arg.to_s.strip]}}
36 36
37 37 def self.default
38 38 # Creates a fake default scope so Enumeration.default will check
39 39 # it's type. STI subclasses will automatically add their own
40 40 # types to the finder.
41 41 if self.descends_from_active_record?
42 42 find(:first, :conditions => { :is_default => true, :type => 'Enumeration' })
43 43 else
44 44 # STI classes are
45 45 find(:first, :conditions => { :is_default => true })
46 46 end
47 47 end
48
48
49 49 # Overloaded on concrete classes
50 50 def option_name
51 51 nil
52 52 end
53 53
54 54 def before_save
55 55 if is_default? && is_default_changed?
56 56 Enumeration.update_all("is_default = #{connection.quoted_false}", {:type => type})
57 57 end
58 58 end
59
59
60 60 # Overloaded on concrete classes
61 61 def objects_count
62 62 0
63 63 end
64
64
65 65 def in_use?
66 66 self.objects_count != 0
67 67 end
68 68
69 69 # Is this enumeration overiding a system level enumeration?
70 70 def is_override?
71 71 !self.parent.nil?
72 72 end
73
73
74 74 alias :destroy_without_reassign :destroy
75
75
76 76 # Destroy the enumeration
77 77 # If a enumeration is specified, objects are reassigned
78 78 def destroy(reassign_to = nil)
79 79 if reassign_to && reassign_to.is_a?(Enumeration)
80 80 self.transfer_relations(reassign_to)
81 81 end
82 82 destroy_without_reassign
83 83 end
84
84
85 85 def <=>(enumeration)
86 86 position <=> enumeration.position
87 87 end
88
88
89 89 def to_s; name end
90 90
91 91 # Returns the Subclasses of Enumeration. Each Subclass needs to be
92 92 # required in development mode.
93 93 #
94 94 # Note: subclasses is protected in ActiveRecord
95 95 def self.get_subclasses
96 96 @@subclasses[Enumeration]
97 97 end
98 98
99 99 # Does the +new+ Hash override the previous Enumeration?
100 100 def self.overridding_change?(new, previous)
101 101 if (same_active_state?(new['active'], previous.active)) && same_custom_values?(new,previous)
102 102 return false
103 103 else
104 104 return true
105 105 end
106 106 end
107 107
108 108 # Does the +new+ Hash have the same custom values as the previous Enumeration?
109 109 def self.same_custom_values?(new, previous)
110 110 previous.custom_field_values.each do |custom_value|
111 111 if custom_value.value != new["custom_field_values"][custom_value.custom_field_id.to_s]
112 112 return false
113 113 end
114 114 end
115 115
116 116 return true
117 117 end
118
118
119 119 # Are the new and previous fields equal?
120 120 def self.same_active_state?(new, previous)
121 121 new = (new == "1" ? true : false)
122 122 return new == previous
123 123 end
124
124
125 125 private
126 126 def check_integrity
127 127 raise "Can't delete enumeration" if self.in_use?
128 128 end
129 129
130 130 end
131 131
132 132 # Force load the subclasses in development mode
133 133 require_dependency 'time_entry_activity'
134 134 require_dependency 'document_category'
135 135 require_dependency 'issue_priority'
General Comments 0
You need to be logged in to leave comments. Login now