Class: Decidim::EndorsementButtonsCell

Inherits:
ViewModel
  • Object
show all
Includes:
CellsHelper, EndorsableHelper, ResourceHelper
Defined in:
app/cells/decidim/endorsement_buttons_cell.rb

Overview

This cell renders the endorsement button and the endorsements count. It only supports one row of buttons per page due to current tag ids used by javascript.

Constant Summary

Constants included from AmendmentsHelper

AmendmentsHelper::TOTAL_STEPS

Instance Method Summary collapse

Methods included from ResourceHelper

#linked_classes_filter_values_for, #linked_classes_for, #resource_locator

Methods included from EndorsableHelper

#current_user_can_endorse?, #endorsement_buttons_cell, #endorsements_enabled?, #endorsers_list_cell, #fully_endorsed?, #path_to_create_endorsement, #path_to_destroy_endorsement, #render_endorsement_identity, #show_endorsements_card?

Methods included from CellsHelper

#current_component, #flaggable?, #from_context, #index_action?, #show_action?, #user_flaggable?, #withdrawable?

Methods inherited from ViewModel

#call, #current_user, #view_context

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, #extended_navigation_bar, #external_icon, #favicon, #icon, #legacy_favicon, #role

Methods included from TooltipHelper

#with_tooltip

Methods included from ModalHelper

#decidim_modal

Methods included from OrganizationHelper

#current_organization_name, #organization_colors, #organization_description_label, #organization_name

Methods included from TranslatableAttributes

#default_locale?

Methods included from ApplicationHelper

#add_body_classes, #cell, #edit_link, #extra_admin_link, #html_truncate, #present, #prevent_timeout_seconds, #resolve_presenter_class, #text_initials

Methods included from CacheHelper

#cache

Methods included from AmendmentsHelper

#accept_and_reject_buttons_for, #action_button_card_for, #allowed_to_accept_and_reject?, #allowed_to_promote?, #amend_button_for, #amendments_enabled?, #amendments_form_field_for, #amendments_form_fields_label, #amendments_form_fields_value, #can_participate_in_private_space?, #can_react_to_emendation?, #current_step, #emendation_actions_for, #emendation_announcement_for, #promote_button_for, #render_emendation_body, #total_steps, #wizard_aside_back_url, #wizard_header_title

Methods included from RichTextEditorHelper

included, #text_editor_for

Methods included from ContextualHelpHelper

#floating_help

Methods included from ScopesHelper

#has_visible_scopes?, #scope_name_for_picker, #scopes_picker_field, #scopes_picker_filter, #scopes_select_field, #scopes_select_tag

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

Methods included from OmniauthHelper

#normalize_provider_name, #oauth_icon, #provider_name

Methods included from SanitizeHelper

#decidim_escape_translated, #decidim_html_escape, #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 MarkupHelper

#element_id

Methods included from ReplaceButtonsHelper

#button_to, #submit_tag

Methods included from ActionAuthorizationHelper

#action_authorized_button_to, #action_authorized_link_to, #logged_button_to, #logged_link_to

Instance Method Details

#button_classesObject



30
31
32
# File 'app/cells/decidim/endorsement_buttons_cell.rb', line 30

def button_classes
  "button button__sm button__transparent-secondary"
end

#button_contentObject



53
54
55
# File 'app/cells/decidim/endorsement_buttons_cell.rb', line 53

def button_content
  render
end

#endorsement_pathObject

produce the path to an endorsement from the engine routes as the cell does not have access to routes



49
50
51
# File 'app/cells/decidim/endorsement_buttons_cell.rb', line 49

def endorsement_path(*)
  decidim.endorsement_path(*)
end

#endorsements_pathObject

produce the path to endorsements from the engine routes as the cell does not have access to routes



44
45
46
# File 'app/cells/decidim/endorsement_buttons_cell.rb', line 44

def endorsements_path(*)
  decidim.endorsements_path(*)
end

#resourceObject

The resource being un/endorsed is the Cell’s model.



35
36
37
# File 'app/cells/decidim/endorsement_buttons_cell.rb', line 35

def resource
  model
end

#reveal_identities_urlObject



39
40
41
# File 'app/cells/decidim/endorsement_buttons_cell.rb', line 39

def reveal_identities_url
  decidim.identities_endorsement_path(resource.to_gid.to_param)
end

#showObject

Renders the “Endorse” button. Contains all the logic about how the button should be rendered and which actions the button must trigger.

It takes into account:

  • if endorsements are enabled

  • if users are logged in

  • if users can endorse with many identities (of their user_groups)

  • if users require verification



20
21
22
23
24
25
26
27
28
# File 'app/cells/decidim/endorsement_buttons_cell.rb', line 20

def show
  return render :disabled_endorsements if endorsements_blocked?
  return render unless current_user
  return render :disabled_endorsements if user_can_not_participate?
  return render :verification_modal unless endorse_allowed?
  return render :select_identity_button if user_has_verified_groups?

  render
end