60 lines
1.4 KiB
Ruby
60 lines
1.4 KiB
Ruby
module Locomotive
|
|
class LocalesInput < ::Formtastic::Inputs::CheckBoxesInput
|
|
|
|
def to_html
|
|
input_wrapping do
|
|
label_html <<
|
|
choices_group_wrapping do
|
|
collection.map { |choice|
|
|
choice_wrapping(choice_wrapping_html_options(choice)) do
|
|
choice_html(choice)
|
|
end
|
|
}.join("\n").html_safe
|
|
end
|
|
end
|
|
end
|
|
|
|
def choices_group_wrapping(&block)
|
|
template.content_tag(:div,
|
|
template.capture(&block),
|
|
choices_group_wrapping_html_options
|
|
)
|
|
end
|
|
|
|
def choice_wrapping(html_options, &block)
|
|
template.content_tag(:div,
|
|
template.capture(&block),
|
|
html_options
|
|
)
|
|
end
|
|
|
|
def choice_html(choice)
|
|
check_box_without_hidden_input(choice) <<
|
|
template.content_tag(:label,
|
|
choice_label(choice),
|
|
label_html_options.merge(:for => choice_input_dom_id(choice), :class => nil)
|
|
)
|
|
end
|
|
|
|
def choice_label(choice)
|
|
text = I18n.t("locomotive.locales.#{choice}")
|
|
template.image_tag("locomotive/icons/flags/#{choice}.png", :alt => text) << text
|
|
end
|
|
|
|
def choices_group_wrapping_html_options
|
|
{ :class => 'list' }
|
|
end
|
|
|
|
def choice_wrapping_html_options(choice)
|
|
super.tap do |options|
|
|
options[:class] = "entry #{checked?(choice) ? 'selected' : ''}"
|
|
end
|
|
end
|
|
|
|
def hidden_fields?
|
|
false
|
|
end
|
|
|
|
end
|
|
end
|