Adds User and Version custom field format that can be used to reference a project member or version in custom fields (#2096).

These new field formats are available for project, issue, version and time entry custom fields.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@5272 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang
2011-04-01 13:44:58 +00:00
parent 122ba564b9
commit 1cd6a2aa84
10 changed files with 229 additions and 28 deletions
+2
View File
@@ -41,6 +41,8 @@ Redmine::CustomFieldFormat.map do |fields|
fields.register Redmine::CustomFieldFormat.new('list', :label => :label_list, :order => 5)
fields.register Redmine::CustomFieldFormat.new('date', :label => :label_date, :order => 6)
fields.register Redmine::CustomFieldFormat.new('bool', :label => :label_boolean, :order => 7)
fields.register Redmine::CustomFieldFormat.new('user', :label => :label_user, :only => %w(Issue TimeEntry Version Project), :edit_as => 'list', :order => 8)
fields.register Redmine::CustomFieldFormat.new('version', :label => :label_version, :only => %w(Issue TimeEntry Version Project), :edit_as => 'list', :order => 9)
end
# Permissions
+12 -9
View File
@@ -22,12 +22,14 @@ module Redmine
cattr_accessor :available
@@available = {}
attr_accessor :name, :order, :label
attr_accessor :name, :order, :label, :edit_as, :class_names
def initialize(name, options={})
self.name = name
self.label = options[:label]
self.order = options[:order]
self.edit_as = options[:edit_as] || name
self.class_names = options[:only]
end
def format(value)
@@ -47,12 +49,11 @@ module Redmine
return value
}
end
# Allow displaying the edit type of another field_format
#
# Example: display a custom field as a list
def edit_as
name
['user', 'version'].each do |name|
define_method("format_as_#{name}") {|value|
return value.blank? ? "" : name.classify.constantize.find_by_id(value.to_i).to_s
}
end
class << self
@@ -79,8 +80,10 @@ module Redmine
end
# Return an array of custom field formats which can be used in select_tag
def as_select
@@available.values.sort {|a,b|
def as_select(class_name=nil)
fields = @@available.values
fields = fields.select {|field| field.class_names.nil? || field.class_names.include?(class_name)}
fields.sort {|a,b|
a.order <=> b.order
}.collect {|custom_field_format|
[ l(custom_field_format.label), custom_field_format.name ]