diff lib/redmine/.svn/text-base/custom_field_format.rb.svn-base @ 442:753f1380d6bc cannam

Merge from branch "redmine-1.2"
author Chris Cannam
date Mon, 06 Jun 2011 14:41:04 +0100
parents cbce1fd3b1b7
children
line wrap: on
line diff
--- a/lib/redmine/.svn/text-base/custom_field_format.rb.svn-base	Thu Mar 03 15:08:45 2011 +0000
+++ b/lib/redmine/.svn/text-base/custom_field_format.rb.svn-base	Mon Jun 06 14:41:04 2011 +0100
@@ -22,12 +22,14 @@
     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 @@
         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 @@
       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 ]