Module: Decidim::ScopesHelper

Includes:
DecidimFormHelper, TranslatableAttributes
Included in:
ApplicationHelper, ViewModel
Defined in:
app/helpers/decidim/scopes_helper.rb

Overview

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

Defined Under Namespace

Classes: Option

Instance Method Summary collapse

Methods included from DecidimFormHelper

#base_error_messages, #decidim_form_for, #decidim_form_slug_url, #editor_field_tag, #form_field_has_error?, #foundation_datepicker_locale_tag, #name_with_locale, #scopes_picker_field_tag, #tab_element_class_for, #translated_field_tag

Instance Method Details

#has_visible_scopes?(resource) ⇒ Boolean

Checks if the resource should show its scope or not. resource - the resource to analize

Returns boolean.

Returns:

  • (Boolean)


15
16
17
18
19
# File 'app/helpers/decidim/scopes_helper.rb', line 15

def has_visible_scopes?(resource)
  resource.participatory_space.scopes_enabled? &&
    resource.scope.present? &&
    resource.participatory_space.scope != resource.scope
end

#scope_name_for_picker(scope, global_name) ⇒ Object

Retrieves the translated name and type for an scope. scope - a Decidim::Scope global_name - text to use when scope is nil

Returns a string



26
27
28
29
30
31
32
# File 'app/helpers/decidim/scopes_helper.rb', line 26

def scope_name_for_picker(scope, global_name)
  return global_name unless scope

  name = translated_attribute(scope.name)
  name << " (#{translated_attribute(scope.scope_type.name)})" if scope.scope_type
  name
end

#scopes_picker_field(form, name, root: false, options: {}) ⇒ Object

Renders a scopes picker field in a form. form - FormBuilder object name - attribute name

Returns nothing.



39
40
41
42
43
44
45
# File 'app/helpers/decidim/scopes_helper.rb', line 39

def scopes_picker_field(form, name, root: false, options: {})
  root = current_participatory_space.scope if root == false
  form.scopes_picker name, options do |scope|
    { url: decidim.scopes_picker_path(root: root, current: scope&.id, field: form.label_for(name)),
      text: scope_name_for_picker(scope, I18n.t("decidim.scopes.global")) }
  end
end

#scopes_picker_filter(form, name) ⇒ Object

Renders a scopes picker field in a filter form. form - FilterFormBuilder object name - attribute name

Returns nothing.



67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'app/helpers/decidim/scopes_helper.rb', line 67

def scopes_picker_filter(form, name)
  form.scopes_picker name, multiple: true, legend_title: I18n.t("decidim.scopes.scopes"), label: false do |scope|
    {
      url: decidim.scopes_picker_path(
        root: try(:current_participatory_space)&.scope,
        current: scope&.id,
        title: I18n.t("decidim.scopes.prompt"),
        global_value: "global"
      ),
      text: scope_name_for_picker(scope, I18n.t("decidim.scopes.prompt"))
    }
  end
end

#scopes_picker_tag(name, value, options = {}) ⇒ Object

Renders a scopes picker field in a form, not linked to a specific model. name - name for the input value - value for the input

Returns nothing.



52
53
54
55
56
57
58
59
60
# File 'app/helpers/decidim/scopes_helper.rb', line 52

def scopes_picker_tag(name, value, options = {})
  root = try(:current_participatory_space)&.scope
  field = options[:field] || name

  scopes_picker_field_tag name, value, id: options[:id] do |scope|
    { url: decidim.scopes_picker_path(root: root, current: scope&.id, field: field),
      text: scope_name_for_picker(scope, I18n.t("decidim.scopes.global")) }
  end
end