Commit 45a88ecff7f5760f2102b30dd954194c357fc550

Authored by Rodrigo Souto
1 parent 4b5140d0

custom-forms-helper: encapsulate disabled logic and select default value

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
... ...