Commit 45a88ecff7f5760f2102b30dd954194c357fc550
1 parent
4b5140d0
Exists in
master
and in
29 other branches
custom-forms-helper: encapsulate disabled logic and select default value
Showing
1 changed file
with
16 additions
and
8 deletions
Show diff stats
plugins/custom_forms/lib/custom_forms_plugin/helper.rb
@@ -75,28 +75,36 @@ module CustomFormsPlugin::Helper | @@ -75,28 +75,36 @@ module CustomFormsPlugin::Helper | ||
75 | end | 75 | end |
76 | end | 76 | end |
77 | 77 | ||
78 | + def display_disabled?(field, answer) | ||
79 | + (answer.present? && answer.id.present?) || field.form.expired? | ||
80 | + end | ||
81 | + | ||
78 | def display_text_field(field, answer, form) | 82 | def display_text_field(field, answer, form) |
79 | value = answer.present? ? answer.value : field.default_value | 83 | value = answer.present? ? answer.value : field.default_value |
80 | - text_field(form, "#{field.id}", :value => value, :disabled => (answer.present? && answer.id.present?) || field.form.expired? ) | 84 | + text_field(form, "#{field.id}", :value => value, :disabled => display_disabled?(field, answer)) |
85 | + end | ||
86 | + | ||
87 | + def default_selected(field, answer) | ||
88 | + answer.present? ? answer.value.split(',') : field.alternatives.select {|a| a.selected_by_default}.map{|a| a.id.to_s} | ||
81 | end | 89 | end |
82 | 90 | ||
83 | def display_select_field(field, answer, form) | 91 | def display_select_field(field, answer, form) |
84 | case field.select_field_type | 92 | case field.select_field_type |
93 | + when 'select' | ||
94 | + selected = default_selected(field, answer) | ||
95 | + select_tag form.to_s + "[#{field.id}]", options_for_select([['','']] + field.alternatives.map {|a| [a.label, a.id.to_s]}, selected), :disabled => display_disabled?(field, answer) | ||
85 | when 'multiple_select' | 96 | when 'multiple_select' |
86 | - selected = answer.present? ? answer.value.split(',') : field.alternatives.select {|a| a.selected_by_default}.map{|a| a.id.to_s} | ||
87 | - select_tag form.to_s + "[#{field.id}]", options_for_select(field.alternatives.map{|a| [a.label, a.id.to_s]}, selected), :multiple => true, :title => _('Hold down Ctrl to select options'), :size => field.alternatives.size, :disabled => (answer.present? && answer.id.present?) || field.form.expired? | 97 | + selected = default_selected(field, answer) |
98 | + select_tag form.to_s + "[#{field.id}]", options_for_select(field.alternatives.map{|a| [a.label, a.id.to_s]}, selected), :multiple => true, :title => _('Hold down Ctrl to select options'), :size => field.alternatives.size, :disabled => display_disabled?(field, answer) | ||
88 | when 'check_box' | 99 | when 'check_box' |
89 | field.alternatives.map do |alternative| | 100 | field.alternatives.map do |alternative| |
90 | default = answer.present? ? answer.value.split(',').include?(alternative.id.to_s) : alternative.selected_by_default | 101 | default = answer.present? ? answer.value.split(',').include?(alternative.id.to_s) : alternative.selected_by_default |
91 | - labelled_check_box alternative.label, form.to_s + "[#{field.id}][#{alternative.id}]", '1', default, :disabled => (answer.present? && answer.id.present?) || field.form.expired? | 102 | + labelled_check_box alternative.label, form.to_s + "[#{field.id}][#{alternative.id}]", '1', default, :disabled => display_disabled?(field, answer) |
92 | end.join("\n") | 103 | end.join("\n") |
93 | - when 'select' | ||
94 | - selected = answer.present? ? answer.value.split(',') : field.alternatives.select {|a| a.selected_by_default}.map{|a| a.id.to_s} | ||
95 | - select_tag form.to_s + "[#{field.id}]", options_for_select([['','']] + field.alternatives.map {|a| [a.label, a.id.to_s]}, selected), :disabled => (answer.present? && answer.id.present?) || field.form.expired? | ||
96 | when 'radio' | 104 | when 'radio' |
97 | field.alternatives.map do |alternative| | 105 | field.alternatives.map do |alternative| |
98 | default = answer.present? ? answer.value == alternative.id.to_s : alternative.selected_by_default | 106 | default = answer.present? ? answer.value == alternative.id.to_s : alternative.selected_by_default |
99 | - labelled_radio_button alternative.label, form.to_s + "[#{field.id}]", alternative.id, default, :disabled => (answer.present? && answer.id.present?) || field.form.expired? | 107 | + labelled_radio_button alternative.label, form.to_s + "[#{field.id}]", alternative.id, default, :disabled => display_disabled?(field, answer) |
100 | end.join("\n") | 108 | end.join("\n") |
101 | end | 109 | end |
102 | end | 110 | end |