Class: Decidim::ActivityCell
- Includes:
- Cell::ViewModel::Partial, ApplicationHelper, IconHelper, SanitizeHelper
- Defined in:
- app/cells/decidim/activity_cell.rb
Overview
This cell is used to render public activities performed by users.
Each model that we want to represent should inherit from this cell and tweak the necessary methods (usually ‘title` is enough).
Instance Method Summary collapse
- #cache_hash ⇒ Object
- #created_at ⇒ Object
-
#description ⇒ Object
The description to show at the card.
- #element_id ⇒ Object
-
#renderable? ⇒ Boolean
Since activity logs could be linked to resource no longer available this method is added in order to skip rendering a cell if there’s not enough data.
-
#resource ⇒ Object
The resource linked to the activity.
-
#resource_link_path ⇒ Object
The link to the resource linked to the activity.
-
#resource_link_text ⇒ Object
The text to show as the link to the resource.
- #show ⇒ Object
-
#title ⇒ Object
The title to show at the card.
- #user ⇒ Object
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 ApplicationHelper
#cell, #edit_link, #extra_admin_link, #html_truncate, #present, #prevent_timeout_seconds, #resolve_presenter_class, #step_cta_url
Methods included from CacheHelper
Methods included from AmendmentsHelper
#accept_and_reject_buttons_for, #action_button_card_for, #allowed_to_accept_and_reject?, #allowed_to_promote?, #amend_button_for, #amenders_list_for, #amendments_enabled?, #amendments_for, #amendments_form_field_for, #amendments_form_fields_label, #amendments_form_fields_value, #can_participate_in_private_space?, #can_react_to_emendation?, #emendation_actions_for, #emendation_announcement_for, #promote_button_for, #render_emendation_body
Methods included from RichTextEditorHelper
Methods included from ContextualHelpHelper
Methods included from ScopesHelper
#has_visible_scopes?, #scope_name_for_picker, #scopes_picker_field, #scopes_picker_filter, #scopes_picker_tag
Methods included from TranslatableAttributes
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, #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 IconHelper
#component_icon, #manifest_icon, #resource_icon
Methods included from LayoutHelper
#_icon_classes, #apple_favicon, #application_path, #extended_navigation_bar, #external_icon, #favicon, #icon, #legacy_favicon, #organization_colors, #role
Methods inherited from ViewModel
Methods included from ReplaceButtonsHelper
Methods included from ActionAuthorizationHelper
#action_authorized_button_to, #action_authorized_link_to, #logged_button_to, #logged_link_to
Methods included from ResourceHelper
#linked_classes_filter_values_for, #linked_classes_for, #linked_resources_for, #resource_locator, #resource_title
Instance Method Details
#cache_hash ⇒ Object
93 94 95 96 97 98 99 100 101 102 103 |
# File 'app/cells/decidim/activity_cell.rb', line 93 def cache_hash hash = [] hash << I18n.locale.to_s hash << model.class.name.underscore hash << model.cache_key_with_version if ( = ) hash.push(Digest::MD5.hexdigest(.send(:cache_hash))) end hash.join(Decidim.cache_key_separator) end |
#created_at ⇒ Object
74 75 76 |
# File 'app/cells/decidim/activity_cell.rb', line 74 def created_at I18n.l(model.created_at, format: :short) end |
#description ⇒ Object
The description to show at the card.
The card will also be displayed OK if there’s no description.
50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'app/cells/decidim/activity_cell.rb', line 50 def description resource_description = resource.try(:resource_description) || resource.try(:description) return if resource_description.blank? resource_description = case resource_description when String resource_description when Hash translated_attribute(resource_description) end truncate((resource_description), length: 300) end |
#element_id ⇒ Object
89 90 91 |
# File 'app/cells/decidim/activity_cell.rb', line 89 def element_id "action-#{model.id}" end |
#renderable? ⇒ Boolean
Since activity logs could be linked to resource no longer available this method is added in order to skip rendering a cell if there’s not enough data.
23 24 25 |
# File 'app/cells/decidim/activity_cell.rb', line 23 def renderable? resource.present? && participatory_space.present? && published? end |
#resource ⇒ Object
The resource linked to the activity.
28 29 30 |
# File 'app/cells/decidim/activity_cell.rb', line 28 def resource model.resource_lazy end |
#resource_link_path ⇒ Object
The link to the resource linked to the activity.
65 66 67 |
# File 'app/cells/decidim/activity_cell.rb', line 65 def resource_link_path resource_locator(resource).path end |
#resource_link_text ⇒ Object
The text to show as the link to the resource.
70 71 72 |
# File 'app/cells/decidim/activity_cell.rb', line 70 def resource_link_text decidim_html_escape(translated_attribute(resource.title)) end |
#show ⇒ Object
14 15 16 17 18 |
# File 'app/cells/decidim/activity_cell.rb', line 14 def show return unless renderable? render end |
#title ⇒ Object
The title to show at the card.
The card will also be displayed OK if there’s no title.
35 36 37 38 39 40 41 42 43 44 45 |
# File 'app/cells/decidim/activity_cell.rb', line 35 def title resource_title = resource.try(:resource_title) || resource.try(:title) return if resource_title.blank? case resource_title when String resource_title when Hash translated_attribute(resource_title) end end |
#user ⇒ Object
78 79 80 81 82 83 84 85 |
# File 'app/cells/decidim/activity_cell.rb', line 78 def user return resource. if resource.respond_to?(:normalized_author) return resource. if resource.respond_to?(:author) # As Proposals have Coauthorable concern instead of Authorable return resource.identities.first if resource.respond_to?(:identities) model.user_lazy if resource.respond_to?(:user) end |