##// END OF EJS Templates
Moves password param to user hash param so that it can be set using the User API....
Moves password param to user hash param so that it can be set using the User API. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4493 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r3126:8db9ecef08ee
r4379:cde02954c845
Show More
enumeration.rb
134 lines | 3.8 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
Changes misleading scopes on Enumeration....
r2969 default_scope :order => "#{Enumeration.table_name}.position ASC"
Eric Davis
Added project specific Enumeration overrides....
r2833 belongs_to :project
Eric Davis
Changed Enumerations to use a Single Table Inheritance...
r2677 acts_as_list :scope => 'type = \'#{type}\''
Eric Davis
Enumerations can now have custom fields defined on them. #4077...
r2831 acts_as_customizable
Eric Davis
Added project specific Enumeration overrides....
r2833 acts_as_tree :order => 'position ASC'
Jean-Philippe Lang
Added position on Enumeration model....
r789
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 before_destroy :check_integrity
Eric Davis
Changed Enumerations to use a Single Table Inheritance...
r2677 validates_presence_of :name
Eric Davis
Added a Activities tab to Project Settings...
r2835 validates_uniqueness_of :name, :scope => [:type, :project_id]
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
Changes misleading scopes on Enumeration....
r2969 named_scope :shared, :conditions => { :project_id => nil }
named_scope :active, :conditions => { :active => true }
Eric Davis
Added an active field track if an Enumeration is active on the frontend view....
r2832
Eric Davis
Changed Enumerations to use a Single Table Inheritance...
r2677 def self.default
# Creates a fake default scope so Enumeration.default will check
# it's type. STI subclasses will automatically add their own
# types to the finder.
if self.descends_from_active_record?
find(:first, :conditions => { :is_default => true, :type => 'Enumeration' })
else
# STI classes are
find(:first, :conditions => { :is_default => true })
end
end
# Overloaded on concrete classes
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 def option_name
Eric Davis
Changed Enumerations to use a Single Table Inheritance...
r2677 nil
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?
Eric Davis
Changed Enumerations to use a Single Table Inheritance...
r2677 Enumeration.update_all("is_default = #{connection.quoted_false}", {:type => type})
Jean-Philippe Lang
Fixed: default flag removed when editing a default enumeration (#2327)....
r2121 end
Jean-Philippe Lang
Added default value for enumerations....
r792 end
Jean-Philippe Lang
Added position on Enumeration model....
r789
Eric Davis
Changed Enumerations to use a Single Table Inheritance...
r2677 # Overloaded on concrete classes
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
Eric Davis
Changed Enumerations to use a Single Table Inheritance...
r2677 0
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 end
def in_use?
self.objects_count != 0
end
Eric Davis
Added project specific Enumeration overrides....
r2833
# Is this enumeration overiding a system level enumeration?
def is_override?
!self.parent.nil?
end
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
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)
Eric Davis
Changed Enumerations to use a Single Table Inheritance...
r2677 self.transfer_relations(reassign_to)
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 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
Eric Davis
Changed Enumerations to use a Single Table Inheritance...
r2677
# Returns the Subclasses of Enumeration. Each Subclass needs to be
# required in development mode.
#
# Note: subclasses is protected in ActiveRecord
def self.get_subclasses
@@subclasses[Enumeration]
end
Eric Davis
Added a Activities tab to Project Settings...
r2835
# Does the +new+ Hash override the previous Enumeration?
def self.overridding_change?(new, previous)
if (same_active_state?(new['active'], previous.active)) && same_custom_values?(new,previous)
return false
else
return true
end
end
# Does the +new+ Hash have the same custom values as the previous Enumeration?
def self.same_custom_values?(new, previous)
previous.custom_field_values.each do |custom_value|
if custom_value.value != new["custom_field_values"][custom_value.custom_field_id.to_s]
return false
end
end
return true
end
# Are the new and previous fields equal?
def self.same_active_state?(new, previous)
new = (new == "1" ? true : false)
return new == previous
end
Jean-Philippe Lang
Added the ability to customize columns of a saved query....
r771
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
Eric Davis
Changed Enumerations to use a Single Table Inheritance...
r2677
Jean-Philippe Lang
Initial commit...
r2 end
Eric Davis
Changed Enumerations to use a Single Table Inheritance...
r2677
# Force load the subclasses in development mode
require_dependency 'time_entry_activity'
require_dependency 'document_category'
require_dependency 'issue_priority'