summaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2008-01-20 21:29:51 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2008-01-20 21:29:51 +0000
commitd6bfb7fa4da4068c3e64f3fce16574de56fd72e9 (patch)
treeeec2bb152a3d5aa0782563baa38c59e170d1ea9c /app
parent59c5d995c339f726f7c6249d543a2b2a2a7bc061 (diff)
downloadredmine-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.rb5
-rw-r--r--app/models/custom_value.rb6
-rw-r--r--app/views/custom_fields/_form.rhtml22
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">