diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2008-01-20 21:29:51 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2008-01-20 21:29:51 +0000 |
commit | d6bfb7fa4da4068c3e64f3fce16574de56fd72e9 (patch) | |
tree | eec2bb152a3d5aa0782563baa38c59e170d1ea9c /app | |
parent | 59c5d995c339f726f7c6249d543a2b2a2a7bc061 (diff) | |
download | redmine-d6bfb7fa4da4068c3e64f3fce16574de56fd72e9.tar.gz redmine-d6bfb7fa4da4068c3e64f3fce16574de56fd72e9.zip |
Added default value for custom fields. Fixed javascript on custom field form for project and user custom fields.
git-svn-id: http://redmine.rubyforge.org/svn/trunk@1090 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app')
-rw-r--r-- | app/models/custom_field.rb | 5 | ||||
-rw-r--r-- | app/models/custom_value.rb | 6 | ||||
-rw-r--r-- | app/views/custom_fields/_form.rhtml | 22 |
3 files changed, 28 insertions, 5 deletions
diff --git a/app/models/custom_field.rb b/app/models/custom_field.rb index 5a134c4ec..6be081b0b 100644 --- a/app/models/custom_field.rb +++ b/app/models/custom_field.rb @@ -53,6 +53,11 @@ class CustomField < ActiveRecord::Base errors.add(:possible_values, :activerecord_error_blank) if self.possible_values.nil? || self.possible_values.empty? errors.add(:possible_values, :activerecord_error_invalid) unless self.possible_values.is_a? Array end + + # validate default value + v = CustomValue.new(:custom_field => self.dup, :value => default_value, :customized => nil) + v.custom_field.is_required = false + errors.add(:default_value, :activerecord_error_invalid) unless v.valid? end def <=>(field) diff --git a/app/models/custom_value.rb b/app/models/custom_value.rb index c3d6b7bb9..94b797bcc 100644 --- a/app/models/custom_value.rb +++ b/app/models/custom_value.rb @@ -19,6 +19,12 @@ class CustomValue < ActiveRecord::Base belongs_to :custom_field belongs_to :customized, :polymorphic => true + def after_initialize + if custom_field && new_record? && (customized_type.blank? || (customized && customized.new_record?)) + self.value ||= custom_field.default_value + end + end + protected def validate errors.add(:value, :activerecord_error_blank) and return if custom_field.is_required? and value.blank? diff --git a/app/views/custom_fields/_form.rhtml b/app/views/custom_fields/_form.rhtml index 915daab32..5e4eadf21 100644 --- a/app/views/custom_fields/_form.rhtml +++ b/app/views/custom_fields/_form.rhtml @@ -8,31 +8,42 @@ function toggle_custom_field_format() { p_regexp = $("custom_field_regexp"); p_values = $("custom_field_possible_values"); p_searchable = $("custom_field_searchable"); + p_default = $("custom_field_default_value"); + + p_default.setAttribute('type','text'); + Element.show(p_default.parentNode); + switch (format.value) { case "list": Element.hide(p_length.parentNode); Element.hide(p_regexp.parentNode); - Element.show(p_searchable.parentNode); + if (p_searchable) Element.show(p_searchable.parentNode); Element.show(p_values); break; - case "date": case "bool": + p_default.setAttribute('type','checkbox'); + Element.hide(p_length.parentNode); + Element.hide(p_regexp.parentNode); + if (p_searchable) Element.hide(p_searchable.parentNode); + Element.hide(p_values); + break; + case "date": Element.hide(p_length.parentNode); Element.hide(p_regexp.parentNode); - Element.hide(p_searchable.parentNode); + if (p_searchable) Element.hide(p_searchable.parentNode); Element.hide(p_values); break; case "float": case "int": Element.show(p_length.parentNode); Element.show(p_regexp.parentNode); - Element.hide(p_searchable.parentNode); + if (p_searchable) Element.hide(p_searchable.parentNode); Element.hide(p_values); break; default: Element.show(p_length.parentNode); Element.show(p_regexp.parentNode); - Element.show(p_searchable.parentNode); + if (p_searchable) Element.show(p_searchable.parentNode); Element.hide(p_values); break; } @@ -70,6 +81,7 @@ function deleteValueField(e) { <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><%= @custom_field.field_format == 'bool' ? f.check_box(:default_value) : f.text_field(:default_value) %></p> </div> <div class="box"> |