Module: Decidim::TaxonomiesHelper

Includes:
DecidimFormHelper, TranslatableAttributes
Defined in:
decidim-core/app/helpers/decidim/taxonomies_helper.rb

Overview

A Helper to render scopes, including a global scope, for forms.

Instance Method Summary collapse

Methods included from TranslatableAttributes

#default_locale?

Methods included from DecidimFormHelper

#areas_for_select, #base_error_messages, #decidim_form_for, #decidim_form_slug_url, #editor_field_tag, #form_field_has_error?, #form_required_explanation, #name_with_locale, #ordered_scopes_descendants, #ordered_scopes_descendants_for_select, #scopes_picker_field_tag, #tab_element_class_for, #translated_field_tag

Instance Method Details

#filter_taxonomy_items_select_field(form, name, filter, options = {}) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
# File 'decidim-core/app/helpers/decidim/taxonomies_helper.rb', line 9

def filter_taxonomy_items_select_field(form, name, filter, options = {})
  label = decidim_sanitize_translated(options.delete(:internal) ? filter.internal_name : filter.name)
  options = options.merge(include_blank: I18n.t("decidim.taxonomies.prompt")) unless options.has_key?(:include_blank)
  options = options.merge(label:) unless options.has_key?(:label)
  form.select(
    name,
    taxonomy_items_options_for_filter(filter),
    options,
    { name: "#{form.object_name}[#{name}][]", id: "#{name}-#{filter.id}" }
  )
end

#taxonomy_items_options_for_filter(filter) ⇒ Object



21
22
23
24
# File 'decidim-core/app/helpers/decidim/taxonomies_helper.rb', line 21

def taxonomy_items_options_for_filter(filter)
  @taxonomy_items_options_for_filter ||= {}
  @taxonomy_items_options_for_filter[filter.id] ||= taxonomy_items_options_for_taxonomies_tree(filter.taxonomies)
end

#taxonomy_items_options_for_taxonomies_tree(taxonomies_tree) ⇒ Object



26
27
28
29
30
31
32
33
34
# File 'decidim-core/app/helpers/decidim/taxonomies_helper.rb', line 26

def taxonomy_items_options_for_taxonomies_tree(taxonomies_tree)
  options = []
  taxonomies_tree.each do |id, item|
    name = " #{" " * 4 * (item[:taxonomy].parent_ids.count - 1)} #{decidim_sanitize_translated(item[:taxonomy].name)}".html_safe
    options.append([name, id])
    options.concat(taxonomy_items_options_for_taxonomies_tree(item[:children])) if item[:children].any?
  end
  options
end