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 | 75 | end |
76 | 76 | end |
77 | 77 | |
78 | + def display_disabled?(field, answer) | |
79 | + (answer.present? && answer.id.present?) || field.form.expired? | |
80 | + end | |
81 | + | |
78 | 82 | def display_text_field(field, answer, form) |
79 | 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 | 89 | end |
82 | 90 | |
83 | 91 | def display_select_field(field, answer, form) |
84 | 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 | 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 | 99 | when 'check_box' |
89 | 100 | field.alternatives.map do |alternative| |
90 | 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 | 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 | 104 | when 'radio' |
97 | 105 | field.alternatives.map do |alternative| |
98 | 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 | 108 | end.join("\n") |
101 | 109 | end |
102 | 110 | end | ... | ... |