##// END OF EJS Templates
Fixes content vertical overflow (#3053)....
Fixes content vertical overflow (#3053). git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2639 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r2411:4601ed2f3aeb
r2550:f1b5127cbbf7
Show More
enumeration.rb
93 lines | 3.1 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 Enumeration < ActiveRecord::Base
Jean-Philippe Lang
Added position on Enumeration model....
r789 acts_as_list :scope => 'opt = \'#{opt}\''
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 before_destroy :check_integrity
validates_presence_of :opt, :name
validates_uniqueness_of :name, :scope => [:opt]
Jean-Philippe Lang
Added several validates_length_of...
r590 validates_length_of :name, :maximum => 30
Jean-Philippe Lang
Added position on Enumeration model....
r789
Jean-Philippe Lang
Ability to remove enumerations (activities, priorities, document categories) that are in use. Associated objects can be reassigned to another value (#1467)....
r1544 # Single table inheritance would be an option
Jean-Philippe Lang
Added position on Enumeration model....
r789 OPTIONS = {
Jean-Philippe Lang
Replaces Enumeration.get_values and Enumeration.default with named scopes....
r2411 "IPRI" => {:label => :enumeration_issue_priorities, :model => Issue, :foreign_key => :priority_id, :scope => :priorities},
"DCAT" => {:label => :enumeration_doc_categories, :model => Document, :foreign_key => :category_id, :scope => :document_categories},
"ACTI" => {:label => :enumeration_activities, :model => TimeEntry, :foreign_key => :activity_id, :scope => :activities}
Jean-Philippe Lang
Added position on Enumeration model....
r789 }.freeze
Jean-Philippe Lang
Replaces Enumeration.get_values and Enumeration.default with named scopes....
r2411 # Creates a named scope for each type of value. The scope has a +default+ method
# that returns the default value, or nil if no value is set as default.
# Example:
# Enumeration.priorities
# Enumeration.priorities.default
OPTIONS.each do |k, v|
next unless v[:scope]
named_scope v[:scope], :conditions => { :opt => k }, :order => 'position' do
def default
find(:first, :conditions => { :is_default => true })
end
end
Jean-Philippe Lang
Added position on Enumeration model....
r789 end
Jean-Philippe Lang
Added default value for enumerations....
r792
Jean-Philippe Lang
Replaces Enumeration.get_values and Enumeration.default with named scopes....
r2411 named_scope :values, lambda {|opt| { :conditions => { :opt => opt }, :order => 'position' } } do
def default
find(:first, :conditions => { :is_default => true })
end
Jean-Philippe Lang
Added default value for enumerations....
r792 end
Jean-Philippe Lang
Added position on Enumeration model....
r789
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 def option_name
Jean-Philippe Lang
Ability to remove enumerations (activities, priorities, document categories) that are in use. Associated objects can be reassigned to another value (#1467)....
r1544 OPTIONS[self.opt][:label]
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 end
Jean-Philippe Lang
Added default value for enumerations....
r792
def before_save
Jean-Philippe Lang
Fixed: default flag removed when editing a default enumeration (#2327)....
r2121 if is_default? && is_default_changed?
Enumeration.update_all("is_default = #{connection.quoted_false}", {:opt => opt})
end
Jean-Philippe Lang
Added default value for enumerations....
r792 end
Jean-Philippe Lang
Added position on Enumeration model....
r789
Jean-Philippe Lang
Ability to remove enumerations (activities, priorities, document categories) that are in use. Associated objects can be reassigned to another value (#1467)....
r1544 def objects_count
OPTIONS[self.opt][:model].count(:conditions => "#{OPTIONS[self.opt][:foreign_key]} = #{id}")
end
def in_use?
self.objects_count != 0
end
alias :destroy_without_reassign :destroy
# Destroy the enumeration
# If a enumeration is specified, objects are reassigned
def destroy(reassign_to = nil)
if reassign_to && reassign_to.is_a?(Enumeration)
OPTIONS[self.opt][:model].update_all("#{OPTIONS[self.opt][:foreign_key]} = #{reassign_to.id}", "#{OPTIONS[self.opt][:foreign_key]} = #{id}")
end
destroy_without_reassign
end
Jean-Philippe Lang
Added radio buttons on the documents list to sort documents by category, date, title or author....
r866 def <=>(enumeration)
position <=> enumeration.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
Jean-Philippe Lang
Ability to remove enumerations (activities, priorities, document categories) that are in use. Associated objects can be reassigned to another value (#1467)....
r1544 raise "Can't delete enumeration" if self.in_use?
Jean-Philippe Lang
Initial commit...
r2 end
end