diff options
Diffstat (limited to 'app/helpers')
| -rw-r--r-- | app/helpers/exports_helper.rb | 37 |
1 files changed, 31 insertions, 6 deletions
diff --git a/app/helpers/exports_helper.rb b/app/helpers/exports_helper.rb index f30a80ed9..c095419bb 100644 --- a/app/helpers/exports_helper.rb +++ b/app/helpers/exports_helper.rb @@ -4,12 +4,37 @@ module ExportsHelper import_status status end - def export_option_input form, export, attr, option_def, type - opts = { required: option_def[:required], input_html: {value: export.try(attr) || option_def[:default_value]}, as: option_def[:type], selected: export.try(attr) || option_def[:default_value]} - opts[:collection] = option_def[:collection] if option_def.has_key?(:collection) - opts[:collection] = export.instance_exec(&option_def[:collection]) if option_def[:collection].is_a?(Proc) - opts[:label] = t "activerecord.attributes.export.#{type.name.demodulize.underscore}.#{attr}" - form.input attr, opts + def export_option_input form, export, attr, option_def, type, referentials + if !!option_def[:depends_on_referential] + out = "" + referentials.each do |referential| + out += content_tag :div, class: "slave", data: {master: "[name='export[referential_id]']", value: referential.id} do + _opts = {depends_on_referential: false, collection: option_def[:collection].call(referential)}.reverse_update(option_def) + export_option_input form, export, attr, _opts, type, referentials + end + end + out.html_safe + else + opts = { required: option_def[:required], input_html: {value: export.try(attr) || option_def[:default_value]}, as: option_def[:type], selected: export.try(attr) || option_def[:default_value]} + + if option_def.has_key?(:collection) + if option_def[:collection].is_a? Array + opts[:collection] = option_def[:collection].map{|k| [export.class.tmf("#{type.name.demodulize.underscore}.#{attr}_collection.#{k}"), k]} + else + opts[:collection] = option_def[:collection] + end + opts[:collection] = export.instance_exec(&option_def[:collection]) if option_def[:collection].is_a?(Proc) + end + opts[:label] = export.class.tmf("#{type.name.demodulize.underscore}.#{attr}") + opts[:input_html]['data-select2ed'] = true if opts[:collection] + out = form.input attr, opts + if option_def[:depends] + out = content_tag :div, class: "slave", data: {master: "[name='export[#{option_def[:depends][:option]}]']", value: option_def[:depends][:value]} do + out + end.html_safe + end + out + end end def export_message_content message |
