pollen_app/app/inputs/check_boxes_input.rb
Nicolas Bally 120e9803eb initial
2020-04-28 14:51:42 +02:00

49 lines
1.2 KiB
Ruby

# put this file in any autoloaded path on rails app. HINT: app/inputs/check_boxes_input.rb
class CheckBoxesInput < Formtastic::Inputs::CheckBoxesInput
def to_html
unless options[:nested_set]
super
else
nested_wrapping(options)
end
end
def nested_wrapping(options)
choices_wrapping do
legend_html <<
hidden_field_for_all <<
choices_group_wrapping do
html_template_for_nested_set(options)
end
end
end
def html_template_for_nested_set(options)
options[:collection].map{|menu|
html_for_nested(menu)
}.join("\n").html_safe
end
def html_for_nested(menu, from_nested=false)
choice = [menu.member_label , menu.id]
first_wrap = choice_wrapping(choice_wrapping_html_options(choice)) do
nested = from_nested ? "" : sub_children(menu)
choice_html(choice) << nested
end
end
def sub_children(menu)
template.content_tag( :ul,
menu.children.collect do |child|
html_for_nested(child, true)+sub_children(child)
end.join("\n").html_safe,
{:style=>"margin-left:20px", :class=>"sub_item-#{menu.id} sub-item"}
) unless menu.leaf?
end
end