|
|
|
|
|
|
|
|
# redMine - project management software |
|
|
|
|
|
# Copyright (C) 2006 Jean-Philippe Lang |
|
|
|
|
|
|
|
|
# Redmine - project management software |
|
|
|
|
|
# Copyright (C) 2006-2011 Jean-Philippe Lang |
|
|
# |
|
|
# |
|
|
# This program is free software; you can redistribute it and/or |
|
|
# This program is free software; you can redistribute it and/or |
|
|
# modify it under the terms of the GNU General Public License |
|
|
# modify it under the terms of the GNU General Public License |
|
|
# as published by the Free Software Foundation; either version 2 |
|
|
# as published by the Free Software Foundation; either version 2 |
|
|
# of the License, or (at your option) any later version. |
|
|
# of the License, or (at your option) any later version. |
|
|
# |
|
|
|
|
|
|
|
|
# |
|
|
# This program is distributed in the hope that it will be useful, |
|
|
# This program is distributed in the hope that it will be useful, |
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
|
# GNU General Public License for more details. |
|
|
# GNU General Public License for more details. |
|
|
# |
|
|
|
|
|
|
|
|
# |
|
|
# You should have received a copy of the GNU General Public License |
|
|
# You should have received a copy of the GNU General Public License |
|
|
# along with this program; if not, write to the Free Software |
|
|
# along with this program; if not, write to the Free Software |
|
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
|
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
|
|
|
|
|
|
|
|
self.value ||= custom_field.default_value |
|
|
self.value ||= custom_field.default_value |
|
|
end |
|
|
end |
|
|
end |
|
|
end |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Returns true if the boolean custom value is true |
|
|
# Returns true if the boolean custom value is true |
|
|
def true? |
|
|
def true? |
|
|
self.value == '1' |
|
|
self.value == '1' |
|
|
end |
|
|
end |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def editable? |
|
|
def editable? |
|
|
custom_field.editable? |
|
|
custom_field.editable? |
|
|
end |
|
|
end |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def visible? |
|
|
def visible? |
|
|
custom_field.visible? |
|
|
custom_field.visible? |
|
|
end |
|
|
end |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def required? |
|
|
def required? |
|
|
custom_field.is_required? |
|
|
custom_field.is_required? |
|
|
end |
|
|
end |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def to_s |
|
|
def to_s |
|
|
value.to_s |
|
|
value.to_s |
|
|
end |
|
|
end |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
protected |
|
|
protected |
|
|
def validate |
|
|
def validate |
|
|
if value.blank? |
|
|
if value.blank? |
|
|
errors.add(:value, :blank) if custom_field.is_required? and value.blank? |
|
|
|
|
|
|
|
|
errors.add(:value, :blank) if custom_field.is_required? and value.blank? |
|
|
else |
|
|
else |
|
|
errors.add(:value, :invalid) unless custom_field.regexp.blank? or value =~ Regexp.new(custom_field.regexp) |
|
|
errors.add(:value, :invalid) unless custom_field.regexp.blank? or value =~ Regexp.new(custom_field.regexp) |
|
|
errors.add(:value, :too_short, :count => custom_field.min_length) if custom_field.min_length > 0 and value.length < custom_field.min_length |
|
|
errors.add(:value, :too_short, :count => custom_field.min_length) if custom_field.min_length > 0 and value.length < custom_field.min_length |
|
|
errors.add(:value, :too_long, :count => custom_field.max_length) if custom_field.max_length > 0 and value.length > custom_field.max_length |
|
|
errors.add(:value, :too_long, :count => custom_field.max_length) if custom_field.max_length > 0 and value.length > custom_field.max_length |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Format specific validations |
|
|
# Format specific validations |
|
|
case custom_field.field_format |
|
|
case custom_field.field_format |
|
|
when 'int' |
|
|
when 'int' |