To check out this repository please hg clone the following URL, or open the URL using EasyMercurial or your preferred Mercurial client.

Statistics Download as Zip
| Branch: | Tag: | Revision:

root / .svn / pristine / 89 / 894d13790f5ed434472bb7c3f91f2b053917338e.svn-base @ 1297:0a574315af3e

History | View | Annotate | Download (2.29 KB)

1 1296:038ba2d95de8 Chris
# Redmine - project management software
2
# Copyright (C) 2006-2012  Jean-Philippe Lang
3
#
4
# This program is free software; you can redistribute it and/or
5
# modify it under the terms of the GNU General Public License
6
# as published by the Free Software Foundation; either version 2
7
# of the License, or (at your option) any later version.
8
#
9
# This program is distributed in the hope that it will be useful,
10
# but WITHOUT ANY WARRANTY; without even the implied warranty of
11
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
# GNU General Public License for more details.
13
#
14
# You should have received a copy of the GNU General Public License
15
# along with this program; if not, write to the Free Software
16
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
17
18
class IssuePriority < Enumeration
19
  has_many :issues, :foreign_key => 'priority_id'
20
21
  after_destroy {|priority| priority.class.compute_position_names}
22
  after_save {|priority| priority.class.compute_position_names if priority.position_changed? && priority.position}
23
24
  OptionName = :enumeration_issue_priorities
25
26
  def option_name
27
    OptionName
28
  end
29
30
  def objects_count
31
    issues.count
32
  end
33
34
  def transfer_relations(to)
35
    issues.update_all("priority_id = #{to.id}")
36
  end
37
38
  def css_classes
39
    "priority-#{id} priority-#{position_name}"
40
  end
41
42
  # Clears position_name for all priorities
43
  # Called from migration 20121026003537_populate_enumerations_position_name
44
  def self.clear_position_names
45
    update_all :position_name => nil
46
  end
47
48
  # Updates position_name for active priorities
49
  # Called from migration 20121026003537_populate_enumerations_position_name
50
  def self.compute_position_names
51
    priorities = where(:active => true).all.sort_by(&:position)
52
    if priorities.any?
53
      default = priorities.detect(&:is_default?) || priorities[(priorities.size - 1) / 2]
54
      priorities.each_with_index do |priority, index|
55
        name = case
56
          when priority.position == default.position
57
            "default"
58
          when priority.position < default.position
59
            index == 0 ? "lowest" : "low#{index+1}"
60
          else
61
            index == (priorities.size - 1) ? "highest" : "high#{priorities.size - index}"
62
          end
63
64
        update_all({:position_name => name}, :id => priority.id)
65
      end
66
    end
67
  end
68
end