Module: Decidim::ParticipatoryProcesses::ParticipatoryProcessHelper

Includes:
AttachmentsHelper, CheckBoxesTreeHelper, FiltersHelper, IconHelper, ResourceReferenceHelper, SanitizeHelper
Included in:
ContentBlocks::MainDataCell, ProcessDropdownMetadataCell, ProcessStepCell
Defined in:
decidim-participatory_processes/app/helpers/decidim/participatory_processes/participatory_process_helper.rb

Overview

Helpers related to the Participatory Process layout.

Instance Method Summary collapse

Methods included from CheckBoxesTreeHelper

#check_boxes_tree_options, #filter_areas_values, #filter_global_scopes_values, #filter_origin_values, #filter_taxonomy_values_children, #filter_taxonomy_values_for, #filter_text_for, #filter_tree_from_array, #flat_filter_values

Methods included from SanitizeHelper

#decidim_escape_translated, #decidim_html_escape, #decidim_rich_text, #decidim_sanitize, #decidim_sanitize_admin, #decidim_sanitize_editor, #decidim_sanitize_editor_admin, #decidim_sanitize_newsletter, #decidim_sanitize_translated, #decidim_url_escape, included

Methods included from ResourceReferenceHelper

#resource_reference

Methods included from IconHelper

#component_icon, #manifest_icon, #resource_icon, #resource_type_icon, #resource_type_icon_key, #text_with_resource_icon

Methods included from LayoutHelper

#_icon_classes, #apple_favicon, #application_path, #current_url, #current_user_unread_data, #external_icon, #favicon, #icon, #legacy_favicon, #role, #root_url

Methods included from TooltipHelper

#with_tooltip

Methods included from ModalHelper

#decidim_drawer, #decidim_modal

Methods included from OrganizationHelper

#current_organization_name, #organization_colors, #organization_description_label, #organization_name

Methods included from TranslatableAttributes

#attachment?, #default_locale?

Methods included from AttachmentsHelper

#attachment_title, #attachments_for, #attachments_tab_panel_items

Methods included from FiltersHelper

#filter_for_resource, #filter_form_for, #filter_search_label

Instance Method Details

#available_taxonomy_filtersObject



99
100
101
# File 'decidim-participatory_processes/app/helpers/decidim/participatory_processes/participatory_process_helper.rb', line 99

def available_taxonomy_filters
  Decidim::TaxonomyFilter.for(current_organization).for_manifest(:participatory_processes)
end

#filter_dates_valuesObject



103
104
105
# File 'decidim-participatory_processes/app/helpers/decidim/participatory_processes/participatory_process_helper.rb', line 103

def filter_dates_values
  flat_filter_values(:all, :upcoming, :past, :active, scope: "decidim.participatory_processes.participatory_processes.filters.names")
end

#filter_sectionsObject



86
87
88
89
90
91
92
93
94
95
96
97
# File 'decidim-participatory_processes/app/helpers/decidim/participatory_processes/participatory_process_helper.rb', line 86

def filter_sections
  items = [
    { method: :with_date, collection: filter_dates_values, label: t("decidim.participatory_processes.participatory_processes.filters.date"), id: "date" }
  ]
  available_taxonomy_filters.find_each do |taxonomy_filter|
    items.append(method: "with_any_taxonomies[#{taxonomy_filter.root_taxonomy_id}]",
                 collection: filter_taxonomy_values_for(taxonomy_filter),
                 label: decidim_sanitize_translated(taxonomy_filter.name),
                 id: "taxonomy")
  end
  items.reject { |item| item[:collection].blank? }
end

#participatory_process_cta_path(process) ⇒ Object

Public: Returns the path for the participatory process cta button

Returns a String with path.



28
29
30
31
32
33
34
# File 'decidim-participatory_processes/app/helpers/decidim/participatory_processes/participatory_process_helper.rb', line 28

def participatory_process_cta_path(process)
  return participatory_process_path(process) if process.active_step&.cta_path.blank?

  path, params = participatory_process_path(process).split("?")

  "#{path}/#{process.active_step.cta_path}" + (params.present? ? "?#{params}" : "")
end

#participatory_process_group_cta_settings(process_group) ⇒ Object

Public: Returns the settings of a cta content block associated if exists

Returns a Hash with content block settings or nil



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'decidim-participatory_processes/app/helpers/decidim/participatory_processes/participatory_process_helper.rb', line 40

def participatory_process_group_cta_settings(process_group)
  block = Decidim::ContentBlock.for_scope(
    :participatory_process_group_homepage,
    organization: current_organization
  ).find_by(
    manifest_name: "cta",
    scoped_resource_id: process_group.id
  )

  cta_settings = block&.settings

  return if cta_settings.blank? || cta_settings.button_url.blank?

  OpenStruct.new(
    text: translated_attribute(cta_settings.button_text),
    path: cta_settings.button_url,
    image_url: block.images_container.attached_uploader(:background_image).variant_url(:big)
  )
end

#process_nav_items(participatory_space) ⇒ Object

Items to display in the navigation of a process



61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# File 'decidim-participatory_processes/app/helpers/decidim/participatory_processes/participatory_process_helper.rb', line 61

def process_nav_items(participatory_space)
  components = participatory_space
               .components
               .published.or(Decidim::Component.where(id: try(:current_component)))
               .where(visible: true)

  [
    *(if participatory_space.members_public_page?
        [{
          name: t("member_menu_item", scope: "layouts.decidim.participatory_process_navigation"),
          url: decidim_participatory_processes.participatory_process_participatory_space_private_users_path(participatory_space),
          active: is_active_link?(decidim_participatory_processes.participatory_process_participatory_space_private_users_path(participatory_space), :inclusive)
        }]
      end
     )
  ] + components.map do |component|
    {
      id: component.id,
      name: decidim_escape_translated(component.name),
      url: main_component_path(component),
      active: is_active_link?(main_component_path(component), :inclusive)
    }
  end.compact
end

#step_dates(participatory_process_step) ⇒ Object

Public: Returns the dates for a step in a readable format like “01/01/2016 - 05/02/2016”.

participatory_process_step - The step to format to

Returns a String with the formatted dates.



20
21
22
23
# File 'decidim-participatory_processes/app/helpers/decidim/participatory_processes/participatory_process_helper.rb', line 20

def step_dates(participatory_process_step)
  dates = [participatory_process_step.start_date, participatory_process_step.end_date]
  dates.map { |date| date ? l(date.to_date, format: :decidim_short) : "?" }.join(" - ")
end