Mercurial > hg > soundsoftware-site
diff app/models/custom_field.rb @ 441:cbce1fd3b1b7 redmine-1.2
Update to Redmine 1.2-stable branch (Redmine SVN rev 6000)
author | Chris Cannam |
---|---|
date | Mon, 06 Jun 2011 14:24:13 +0100 |
parents | 8661b858af72 |
children | cbb26bc654de |
line wrap: on
line diff
--- a/app/models/custom_field.rb Thu Mar 03 11:42:28 2011 +0000 +++ b/app/models/custom_field.rb Mon Jun 06 14:24:13 2011 +0100 @@ -1,5 +1,5 @@ -# 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 # modify it under the terms of the GNU General Public License @@ -48,6 +48,35 @@ errors.add(:default_value, :invalid) unless v.valid? end + def possible_values_options(obj=nil) + case field_format + when 'user', 'version' + if obj.respond_to?(:project) && obj.project + case field_format + when 'user' + obj.project.users.sort.collect {|u| [u.to_s, u.id.to_s]} + when 'version' + obj.project.versions.sort.collect {|u| [u.to_s, u.id.to_s]} + end + elsif obj.is_a?(Array) + obj.collect {|o| possible_values_options(o)}.inject {|memo, v| memo & v} + else + [] + end + else + read_attribute :possible_values + end + end + + def possible_values(obj=nil) + case field_format + when 'user', 'version' + possible_values_options(obj).collect(&:last) + else + read_attribute :possible_values + end + end + # Makes possible_values accept a multiline string def possible_values=(arg) if arg.is_a?(Array) @@ -71,6 +100,8 @@ casted = value.to_i when 'float' casted = value.to_f + when 'user', 'version' + casted = (value.blank? ? nil : field_format.classify.constantize.find_by_id(value.to_i)) end end casted