Class: Decidim::ActivityCell
- Includes:
- Cell::ViewModel::Partial
- 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).
Constant Summary
Constants included from AmendmentsHelper
Decidim::AmendmentsHelper::TOTAL_STEPS
Instance Method Summary collapse
- #cache_hash ⇒ Object
- #created_at ⇒ Object
-
#description ⇒ Object
The description to show at the card.
- #element_id ⇒ Object
- #id_prefix ⇒ 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 is 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.
- #title_icon ⇒ Object
- #user ⇒ Object
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
Methods included from ModalHelper
Methods included from OrganizationHelper
#current_organization_name, #organization_colors, #organization_description_label, #organization_name
Methods included from TranslatableAttributes
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
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
Methods included from ContextualHelpHelper
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 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, #resource_locator
Instance Method Details
#cache_hash ⇒ Object
102 103 104 105 106 107 108 109 110 111 112 113 |
# File 'app/cells/decidim/activity_cell.rb', line 102 def cache_hash hash = [] hash << id_prefix hash << I18n.locale.to_s hash << model.class.name.underscore hash << model.cache_key_with_version if model.respond_to?(:cache_key_with_version) if ( = ) hash.push(Digest::MD5.hexdigest(.send(:cache_hash))) end hash.join(Decidim.cache_key_separator) end |
#created_at ⇒ Object
79 80 81 |
# File 'app/cells/decidim/activity_cell.rb', line 79 def created_at t("decidim.activity.time_ago", time: time_ago_in_words(model.created_at)) end |
#description ⇒ Object
The description to show at the card.
The card will also be displayed OK if there is no description.
55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'app/cells/decidim/activity_cell.rb', line 55 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
94 95 96 |
# File 'app/cells/decidim/activity_cell.rb', line 94 def element_id "#{id_prefix}-#{model.id}" end |
#id_prefix ⇒ Object
98 99 100 |
# File 'app/cells/decidim/activity_cell.rb', line 98 def id_prefix @id_prefix ||= context[:id_prefix].presence || "action" 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 is not enough data.
20 21 22 |
# File 'app/cells/decidim/activity_cell.rb', line 20 def renderable? resource.present? && participatory_space.present? && published? end |
#resource ⇒ Object
The resource linked to the activity.
25 26 27 28 29 |
# File 'app/cells/decidim/activity_cell.rb', line 25 def resource return if model.blank? model.resource_lazy end |
#resource_link_path ⇒ Object
The link to the resource linked to the activity.
70 71 72 |
# File 'app/cells/decidim/activity_cell.rb', line 70 def resource_link_path resource_locator(resource).path end |
#resource_link_text ⇒ Object
The text to show as the link to the resource.
75 76 77 |
# File 'app/cells/decidim/activity_cell.rb', line 75 def resource_link_text decidim_escape_translated(resource.title) end |
#show ⇒ Object
11 12 13 14 15 |
# File 'app/cells/decidim/activity_cell.rb', line 11 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 is no title.
34 35 36 37 38 39 40 41 42 43 44 |
# File 'app/cells/decidim/activity_cell.rb', line 34 def title resource_title = resource.try(:resource_title) || resource.try(:title) return if resource_title.blank? case resource_title when String decidim_html_escape(resource_title) when Hash decidim_escape_translated(resource_title) end end |
#title_icon ⇒ Object
46 47 48 49 50 |
# File 'app/cells/decidim/activity_cell.rb', line 46 def title_icon return if resource.blank? resource_type_icon(resource.class) end |
#user ⇒ Object
83 84 85 86 87 88 89 90 |
# File 'app/cells/decidim/activity_cell.rb', line 83 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 |