Class: Decidim::EndorsementButtonsCell

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

Overview

This cell renders the endrosement 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 IconHelper

IconHelper::DEFAULT_RESOURCE_TYPE_ICONS

Instance Method Summary collapse

Methods included from SanitizeHelper

#decidim_html_escape, #decidim_sanitize, #decidim_sanitize_admin, #decidim_sanitize_editor, #decidim_sanitize_editor_admin, #decidim_sanitize_newsletter, #decidim_url_escape, included

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

Methods included from TooltipHelper

#with_tooltip

Methods included from ModalHelper

#decidim_modal

Methods included from ResourceHelper

#linked_classes_filter_values_for, #linked_classes_for, #resource_locator, #resource_title

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 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

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 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

#button_classesObject



38
39
40
# File 'decidim-core/app/cells/decidim/endorsement_buttons_cell.rb', line 38

def button_classes
  "button button__sm button__transparent-secondary"
end

#button_contentObject



61
62
63
# File 'decidim-core/app/cells/decidim/endorsement_buttons_cell.rb', line 61

def button_content
  render
end

#endorsement_path(*args) ⇒ Object

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



57
58
59
# File 'decidim-core/app/cells/decidim/endorsement_buttons_cell.rb', line 57

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

#endorsements_path(*args) ⇒ Object

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



52
53
54
# File 'decidim-core/app/cells/decidim/endorsement_buttons_cell.rb', line 52

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

#resourceObject

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



43
44
45
# File 'decidim-core/app/cells/decidim/endorsement_buttons_cell.rb', line 43

def resource
  model
end

#reveal_identities_urlObject



47
48
49
# File 'decidim-core/app/cells/decidim/endorsement_buttons_cell.rb', line 47

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



28
29
30
31
32
33
34
35
36
# File 'decidim-core/app/cells/decidim/endorsement_buttons_cell.rb', line 28

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