##// END OF EJS Templates
Backported r2429, r2430, r248 to r2491 and r2522 from trunk (request and controller objects added to the hooks by default.)....
Backported r2429, r2430, r248 to r2491 and r2522 from trunk (request and controller objects added to the hooks by default.). git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.8-stable@2558 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r1759:2042e3bbd9bb
r2490:36b5d4f6af04
Show More
custom_field.rb
75 lines | 2.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 CustomField < ActiveRecord::Base
has_many :custom_values, :dependent => :delete_all
Jean-Philippe Lang
Custom fields can now be reordered....
r888 acts_as_list :scope => 'type = \'#{self.class}\''
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 serialize :possible_values
FIELD_FORMATS = { "string" => { :name => :label_string, :order => 1 },
"text" => { :name => :label_text, :order => 2 },
"int" => { :name => :label_integer, :order => 3 },
Jean-Philippe Lang
Added "Float" as a custom field format....
r857 "float" => { :name => :label_float, :order => 4 },
"list" => { :name => :label_list, :order => 5 },
"date" => { :name => :label_date, :order => 6 },
"bool" => { :name => :label_boolean, :order => 7 }
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 }.freeze
validates_presence_of :name, :field_format
Jean-Philippe Lang
Allow same name for custom fields on different object types....
r1729 validates_uniqueness_of :name, :scope => :type
Jean-Philippe Lang
Added several validates_length_of...
r590 validates_length_of :name, :maximum => 30
Jean-Philippe Lang
Dots allowed in custom field name (#1723)....
r1759 validates_format_of :name, :with => /^[\w\s\.\'\-]*$/i
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 validates_inclusion_of :field_format, :in => FIELD_FORMATS.keys
def initialize(attributes = nil)
super
self.possible_values ||= []
Jean-Philippe Lang
0.3 unstable...
r10 end
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330
def before_validation
# remove empty values
self.possible_values = self.possible_values.collect{|v| v unless v.empty?}.compact
Jean-Philippe Lang
Search engine: issue custom fields can now be searched....
r981 # make sure these fields are not searchable
self.searchable = false if %w(int float date bool).include?(field_format)
Jean-Philippe Lang
Fixed: can not save numeric, date and boolean custom fields (broken by r994)....
r983 true
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 end
def validate
if self.field_format == "list"
errors.add(:possible_values, :activerecord_error_blank) if self.possible_values.nil? || self.possible_values.empty?
errors.add(:possible_values, :activerecord_error_invalid) unless self.possible_values.is_a? Array
end
Jean-Philippe Lang
Added default value for custom fields. Fixed javascript on custom field form for project and user custom fields....
r1076
# validate default value
Jean-Philippe Lang
Fixed: Issue custom fields "required" flag not stored (broken by r1090). Closes #715....
r1157 v = CustomValue.new(:custom_field => self.clone, :value => default_value, :customized => nil)
Jean-Philippe Lang
Added default value for custom fields. Fixed javascript on custom field form for project and user custom fields....
r1076 v.custom_field.is_required = false
errors.add(:default_value, :activerecord_error_invalid) unless v.valid?
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 end
Jean-Philippe Lang
Custom fields can now be reordered....
r888 def <=>(field)
position <=> field.position
end
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 # to move in project_custom_field
def self.for_all
Jean-Philippe Lang
Fixes custom fields display order at several places (#1768)....
r1730 find(:all, :conditions => ["is_for_all=?", true], :order => 'position')
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 end
def type_name
nil
end
end