diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2013-12-14 08:22:43 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2013-12-14 08:22:43 +0000 |
commit | 2e2e2cfe425c2664517fb59836fbd3eff5e35861 (patch) | |
tree | e3daa66ee8b36d2f1a1468ec9501fba5bc37d71c /app/helpers/custom_fields_helper.rb | |
parent | c74f6d9f9bcf02ccc480a2028802b83ec5d91aca (diff) | |
download | redmine-2e2e2cfe425c2664517fb59836fbd3eff5e35861.tar.gz redmine-2e2e2cfe425c2664517fb59836fbd3eff5e35861.zip |
Merged custom fields format refactoring.
git-svn-id: http://svn.redmine.org/redmine/trunk@12400 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app/helpers/custom_fields_helper.rb')
-rw-r--r-- | app/helpers/custom_fields_helper.rb | 131 |
1 files changed, 44 insertions, 87 deletions
diff --git a/app/helpers/custom_fields_helper.rb b/app/helpers/custom_fields_helper.rb index fd549f5ab..f62c36f68 100644 --- a/app/helpers/custom_fields_helper.rb +++ b/app/helpers/custom_fields_helper.rb @@ -44,51 +44,39 @@ module CustomFieldsHelper CUSTOM_FIELDS_TABS end - # Return custom field html tag corresponding to its format - def custom_field_tag(name, custom_value) - custom_field = custom_value.custom_field - field_name = "#{name}[custom_field_values][#{custom_field.id}]" - field_name << "[]" if custom_field.multiple? - field_id = "#{name}_custom_field_values_#{custom_field.id}" - - tag_options = {:id => field_id, :class => "#{custom_field.field_format}_cf"} - - field_format = Redmine::CustomFieldFormat.find_by_name(custom_field.field_format) - case field_format.try(:edit_as) - when "date" - text_field_tag(field_name, custom_value.value, tag_options.merge(:size => 10)) + - calendar_for(field_id) - when "text" - text_area_tag(field_name, custom_value.value, tag_options.merge(:rows => 3)) - when "bool" - hidden_field_tag(field_name, '0') + check_box_tag(field_name, '1', custom_value.true?, tag_options) - when "list" - blank_option = ''.html_safe - unless custom_field.multiple? - if custom_field.is_required? - unless custom_field.default_value.present? - blank_option = content_tag('option', "--- #{l(:actionview_instancetag_blank_option)} ---", :value => '') - end - else - blank_option = content_tag('option') - end - end - s = select_tag(field_name, blank_option + options_for_select(custom_field.possible_values_options(custom_value.customized), custom_value.value), - tag_options.merge(:multiple => custom_field.multiple?)) - if custom_field.multiple? - s << hidden_field_tag(field_name, '') - end - s - else - text_field_tag(field_name, custom_value.value, tag_options) + def render_custom_field_format_partial(form, custom_field) + partial = custom_field.format.form_partial + if partial + render :partial => custom_field.format.form_partial, :locals => {:f => form, :custom_field => custom_field} end end + def custom_field_tag_name(prefix, custom_field) + name = "#{prefix}[custom_field_values][#{custom_field.id}]" + name << "[]" if custom_field.multiple? + name + end + + def custom_field_tag_id(prefix, custom_field) + "#{prefix}_custom_field_values_#{custom_field.id}" + end + + # Return custom field html tag corresponding to its format + def custom_field_tag(prefix, custom_value) + custom_value.custom_field.format.edit_tag self, + custom_field_tag_id(prefix, custom_value.custom_field), + custom_field_tag_name(prefix, custom_value.custom_field), + custom_value, + :class => "#{custom_value.custom_field.field_format}_cf" + end + # Return custom field label tag def custom_field_label_tag(name, custom_value, options={}) required = options[:required] || custom_value.custom_field.is_required? + title = custom_value.custom_field.description.presence + content = content_tag 'span', custom_value.custom_field.name, :title => title - content_tag "label", h(custom_value.custom_field.name) + + content_tag "label", content + (required ? " <span class=\"required\">*</span>".html_safe : ""), :for => "#{name}_custom_field_values_#{custom_value.custom_field.id}" end @@ -98,65 +86,30 @@ module CustomFieldsHelper custom_field_label_tag(name, custom_value, options) + custom_field_tag(name, custom_value) end - def custom_field_tag_for_bulk_edit(name, custom_field, projects=nil, value='') - field_name = "#{name}[custom_field_values][#{custom_field.id}]" - field_name << "[]" if custom_field.multiple? - field_id = "#{name}_custom_field_values_#{custom_field.id}" - - tag_options = {:id => field_id, :class => "#{custom_field.field_format}_cf"} - - unset_tag = '' - unless custom_field.is_required? - unset_tag = content_tag('label', - check_box_tag(field_name, '__none__', (value == '__none__'), :id => nil, :data => {:disables => "##{field_id}"}) + l(:button_clear), - :class => 'inline' - ) - end - - field_format = Redmine::CustomFieldFormat.find_by_name(custom_field.field_format) - case field_format.try(:edit_as) - when "date" - text_field_tag(field_name, value, tag_options.merge(:size => 10)) + - calendar_for(field_id) + - unset_tag - when "text" - text_area_tag(field_name, value, tag_options.merge(:rows => 3)) + - '<br />'.html_safe + - unset_tag - when "bool" - select_tag(field_name, options_for_select([[l(:label_no_change_option), ''], - [l(:general_text_yes), '1'], - [l(:general_text_no), '0']], value), tag_options) - when "list" - options = [] - options << [l(:label_no_change_option), ''] unless custom_field.multiple? - options << [l(:label_none), '__none__'] unless custom_field.is_required? - options += custom_field.possible_values_options(projects) - select_tag(field_name, options_for_select(options, value), tag_options.merge(:multiple => custom_field.multiple?)) - else - text_field_tag(field_name, value, tag_options) + - unset_tag - end + # Returns the custom field tag for when bulk editing objects + def custom_field_tag_for_bulk_edit(prefix, custom_field, objects=nil, value='') + custom_field.format.bulk_edit_tag self, + custom_field_tag_id(prefix, custom_field), + custom_field_tag_name(prefix, custom_field), + custom_field, + objects, + value, + :class => "#{custom_field.field_format}_cf" end # Return a string used to display a custom value - def show_value(custom_value) - return "" unless custom_value - format_value(custom_value.value, custom_value.custom_field.field_format) + def show_value(custom_value, html=true) + format_object(custom_value, html) end # Return a string used to display a custom value - def format_value(value, field_format) - if value.is_a?(Array) - value.collect {|v| format_value(v, field_format)}.compact.sort.join(', ') - else - Redmine::CustomFieldFormat.format_value(value, field_format) - end + def format_value(value, custom_field) + format_object(custom_field.format.formatted_value(self, custom_field, value, false), false) end # Return an array of custom field formats which can be used in select_tag def custom_field_formats_for_select(custom_field) - Redmine::CustomFieldFormat.as_select(custom_field.class.customized_class.name) + Redmine::FieldFormat.as_select(custom_field.class.customized_class.name) end # Renders the custom_values in api views @@ -179,4 +132,8 @@ module CustomFieldsHelper end end unless custom_values.empty? end + + def edit_tag_style_tag(form) + form.select :edit_tag_style, [[l(:label_drop_down_list), ''], [l(:label_checkboxes), 'check_box']], :label => :label_display + end end |