diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2009-01-16 21:02:03 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2009-01-16 21:02:03 +0000 |
commit | a276926f420d0369a3f9d0fe69e972d07ef74363 (patch) | |
tree | 799cbf1c70d971c339039856b8e0df03485775c9 /app | |
parent | f6282f9600b0656f68164118c4c5f557cb37968b (diff) | |
download | redmine-a276926f420d0369a3f9d0fe69e972d07ef74363.tar.gz redmine-a276926f420d0369a3f9d0fe69e972d07ef74363.zip |
Use a textarea for custom fields possible values (#2472).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2267 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app')
-rw-r--r-- | app/models/custom_field.rb | 11 | ||||
-rw-r--r-- | app/views/custom_fields/_form.rhtml | 26 |
2 files changed, 13 insertions, 24 deletions
diff --git a/app/models/custom_field.rb b/app/models/custom_field.rb index 79d12376a..f277dc349 100644 --- a/app/models/custom_field.rb +++ b/app/models/custom_field.rb @@ -41,8 +41,6 @@ class CustomField < ActiveRecord::Base end def before_validation - # remove empty values - self.possible_values = self.possible_values.collect{|v| v unless v.empty?}.compact # make sure these fields are not searchable self.searchable = false if %w(int float date bool).include?(field_format) true @@ -60,6 +58,15 @@ class CustomField < ActiveRecord::Base errors.add(:default_value, :activerecord_error_invalid) unless v.valid? end + # Makes possible_values accept a multiline string + def possible_values=(arg) + if arg.is_a?(Array) + write_attribute(:possible_values, arg.compact.collect(&:strip).select {|v| !v.blank?}) + else + self.possible_values = arg.to_s.split(/[\n\r]+/) + end + end + # Returns a ORDER BY clause that can used to sort customized # objects by their value of the custom field. # Returns false, if the custom field can not be used for sorting. diff --git a/app/views/custom_fields/_form.rhtml b/app/views/custom_fields/_form.rhtml index f4aee6870..43ed5feb9 100644 --- a/app/views/custom_fields/_form.rhtml +++ b/app/views/custom_fields/_form.rhtml @@ -49,23 +49,6 @@ function toggle_custom_field_format() { } } -function addValueField() { - var f = $$('p#custom_field_possible_values span'); - p = document.getElementById("custom_field_possible_values"); - var v = f[0].cloneNode(true); - v.childNodes[0].value = ""; - p.appendChild(v); -} - -function deleteValueField(e) { - var f = $$('p#custom_field_possible_values span'); - if (f.length == 1) { - e.parentNode.childNodes[0].value = ""; - } else { - Element.remove(e.parentNode); - } -} - //]]> </script> @@ -76,11 +59,10 @@ function deleteValueField(e) { <%= f.text_field :min_length, :size => 5, :no_label => true %> - <%= f.text_field :max_length, :size => 5, :no_label => true %><br>(<%=l(:text_min_max_length_info)%>)</p> <p><%= f.text_field :regexp, :size => 50 %><br>(<%=l(:text_regexp_info)%>)</p> -<p id="custom_field_possible_values"><label><%= l(:field_possible_values) %> <%= image_to_function "add.png", "addValueField();return false" %></label> -<% (@custom_field.possible_values.to_a + [""]).each do |value| %> -<span><%= text_field_tag 'custom_field[possible_values][]', value, :size => 30 %> <%= image_to_function "delete.png", "deleteValueField(this);return false" %><br /></span> -<% end %> -</p> +<p id="custom_field_possible_values"><%= f.text_area :possible_values, :value => @custom_field.possible_values.to_a.join("\n"), + :cols => 20, + :rows => 15 %> +<br /><em><%= l(:text_custom_field_possible_values_info) %></em></p> <p><%= @custom_field.field_format == 'bool' ? f.check_box(:default_value) : f.text_field(:default_value) %></p> </div> |