Module: Decidim::Proposals::Admin::ProposalsHelper

Includes:
Admin::ResourceScopeHelper
Defined in:
decidim-proposals/app/helpers/decidim/proposals/admin/proposals_helper.rb

Overview

This class contains helpers needed to format Meetings in order to use them in select forms for Proposals.

Instance Method Summary collapse

Methods included from Admin::ResourceScopeHelper

#td_resource_scope_for, #th_resource_scope_label, #th_scope_sort_link

Instance Method Details

#coauthor_presenters_for(proposal) ⇒ Object



20
21
22
23
24
25
26
27
28
# File 'decidim-proposals/app/helpers/decidim/proposals/admin/proposals_helper.rb', line 20

def coauthor_presenters_for(proposal)
  proposal.authors.map do |identity|
    if identity.is_a?(Decidim::Organization)
      Decidim::Proposals::OfficialAuthorPresenter.new
    else
      present(identity)
    end
  end
end

#endorsers_presenters_for(proposal) ⇒ Object



30
31
32
# File 'decidim-proposals/app/helpers/decidim/proposals/admin/proposals_helper.rb', line 30

def endorsers_presenters_for(proposal)
  proposal.endorsements.for_listing.map { |identity| present(identity.normalized_author) }
end


127
128
129
130
131
132
133
134
135
136
137
138
139
140
# File 'decidim-proposals/app/helpers/decidim/proposals/admin/proposals_helper.rb', line 127

def icon_with_link_to_proposal(proposal)
  icon, tooltip = if allowed_to?(:create, :proposal_answer, proposal:) && !proposal.emendation?
                    [
                      "question-answer-line",
                      t(:answer_proposal, scope: "decidim.proposals.actions")
                    ]
                  else
                    [
                      "information-line",
                      t(:show, scope: "decidim.proposals.actions")
                    ]
                  end
  icon_link_to(icon, proposal_path(proposal), tooltip, class: "icon--small action-icon--show-proposal")
end

#meetings_as_authors_selectedObject

Public: A formatted collection of Meetings to be used in forms.



14
15
16
17
18
# File 'decidim-proposals/app/helpers/decidim/proposals/admin/proposals_helper.rb', line 14

def meetings_as_authors_selected
  return unless @proposal.present? && @proposal.official_meeting?

  @meetings_as_authors_selected ||= @proposal.authors.pluck(:id)
end

#proposal_complete_state(proposal) ⇒ Object



34
35
36
37
38
# File 'decidim-proposals/app/helpers/decidim/proposals/admin/proposals_helper.rb', line 34

def proposal_complete_state(proposal)
  return humanize_proposal_state(proposal.internal_state).html_safe if proposal.answered? && !proposal.published_state?

  humanize_proposal_state(proposal.state).html_safe
end

#proposals_admin_filter_applied_filtersObject



73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# File 'decidim-proposals/app/helpers/decidim/proposals/admin/proposals_helper.rb', line 73

def proposals_admin_filter_applied_filters
  html = []
  if params[:q][:is_emendation_true].present?
    html << tag.span(class: "label secondary") do
      tag = "#{t("filters.type", scope: "decidim.proposals.proposals")}: "
      tag += if params[:q][:is_emendation_true].to_s == "1"
               t("amendments", scope: "decidim.proposals.application_helper.filter_type_values")
             else
               t("proposals", scope: "decidim.proposals.application_helper.filter_type_values")
             end
      tag += icon_link_to("delete-bin-line", url_for(q: ransak_params_for_query_without(:is_emendation_true), per_page:), t("decidim.admin.actions.cancel"),
                          class: "action-icon--remove")
      tag.html_safe
    end
  end
  if params[:q][:state_null]
    html << tag.span(class: "label secondary") do
      tag = "#{t("models.proposal.fields.state", scope: "decidim.proposals")}: "
      tag += humanize_proposal_state "not_answered"
      tag += icon_link_to("delete-bin-line", url_for(q: ransak_params_for_query_without(:state_null), per_page:), t("decidim.admin.actions.cancel"),
                          class: "action-icon--remove")
      tag.html_safe
    end
  end
  if params[:q][:state_eq]
    html << tag.span(class: "label secondary") do
      tag = "#{t("models.proposal.fields.state", scope: "decidim.proposals")}: "
      tag += humanize_proposal_state params[:q][:state_eq]
      tag += icon_link_to("delete-bin-line", url_for(q: ransak_params_for_query_without(:state_eq), per_page:), t("decidim.admin.actions.cancel"),
                          class: "action-icon--remove")
      tag.html_safe
    end
  end
  if params[:q][:category_id_eq]
    html << tag.span(class: "label secondary") do
      tag = "#{t("models.proposal.fields.category", scope: "decidim.proposals")}: "
      tag += translated_attribute categories.find(params[:q][:category_id_eq]).name
      tag += icon_link_to("delete-bin-line", url_for(q: ransak_params_for_query_without(:category_id_eq), per_page:), t("decidim.admin.actions.cancel"),
                          class: "action-icon--remove")
      tag.html_safe
    end
  end
  if params[:q][:scope_id_eq]
    html << tag.span(class: "label secondary") do
      tag = "#{t("models.proposal.fields.scope", scope: "decidim.proposals")}: "
      tag += translated_attribute Decidim::Scope.where(decidim_organization_id: current_component.organization.id).find(params[:q][:scope_id_eq]).name
      tag += icon_link_to("delete-bin-line", url_for(q: ransak_params_for_query_without(:scope_id_eq), per_page:), t("decidim.admin.actions.cancel"),
                          class: "action-icon--remove")
      tag.html_safe
    end
  end
  html.join(" ").html_safe
end

#proposals_admin_filter_treeObject



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

def proposals_admin_filter_tree
  {
    t("proposals.filters.type", scope: "decidim.proposals") => {
      link_to(t("proposals", scope: "decidim.proposals.application_helper.filter_type_values"), q: ransak_params_for_query(is_emendation_true: "0"),
                                                                                                per_page:) => nil,
      link_to(t("amendments", scope: "decidim.proposals.application_helper.filter_type_values"), q: ransak_params_for_query(is_emendation_true: "1"),
                                                                                                 per_page:) => nil
    },
    t("models.proposal.fields.state", scope: "decidim.proposals") =>
      Decidim::Proposals::Proposal::STATES.each_pair do |state, hash|
        if state == "not_answered"
          hash[link_to((humanize_proposal_state state), q: ransak_params_for_query(state_null: 1), per_page:)] = nil
        else
          hash[link_to((humanize_proposal_state state), q: ransak_params_for_query(state_eq: state), per_page:)] = nil
        end
      end,
    t("models.proposal.fields.category", scope: "decidim.proposals") => admin_filter_categories_tree(categories.first_class),
    t("proposals.filters.scope", scope: "decidim.proposals") => admin_filter_scopes_tree(current_component.organization.id)
  }
end

#proposals_admin_search_hidden_paramsObject



61
62
63
64
65
66
67
68
69
70
71
# File 'decidim-proposals/app/helpers/decidim/proposals/admin/proposals_helper.rb', line 61

def proposals_admin_search_hidden_params
  return unless params[:q]

  tags = ""
  tags += hidden_field_tag "per_page", params[:per_page] if params[:per_page]
  tags += hidden_field_tag "q[is_emendation_true]", params[:q][:is_emendation_true] if params[:q][:is_emendation_true]
  tags += hidden_field_tag "q[state_eq]", params[:q][:state_eq] if params[:q][:state_eq]
  tags += hidden_field_tag "q[category_id_eq]", params[:q][:category_id_eq] if params[:q][:category_id_eq]
  tags += hidden_field_tag "q[scope_id_eq]", params[:q][:scope_id_eq] if params[:q][:scope_id_eq]
  tags.html_safe
end