Class: Decidim::ActivityCell
- Includes:
- ActionView::Helpers::DateHelper, Cell::ViewModel::Partial, ApplicationHelper, IconHelper, SanitizeHelper
- Defined in:
- decidim-core/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).
Direct Known Subclasses
Decidim::Accountability::ResultActivityCell, AssemblyActivityCell, Blogs::PostActivityCell, Budgets::OrderActivityCell, Comments::CommentActivityCell, Debates::DebateActivityCell, InitiativeActivityCell, Meetings::MeetingActivityCell, ParticipatoryProcessActivityCell, Proposals::ProposalActivityCell, Surveys::SurveyActivityCell
Constant Summary
Constants included from AmendmentsHelper
Decidim::AmendmentsHelper::TOTAL_STEPS
Constants included from IconHelper
IconHelper::DEFAULT_RESOURCE_TYPE_ICONS
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 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, #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 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, #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 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
Methods included from ModalHelper
Methods inherited from ViewModel
#call, #current_user, #view_context
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, #resource_title
Instance Method Details
#cache_hash ⇒ Object
104 105 106 107 108 109 110 111 112 113 114 115 |
# File 'decidim-core/app/cells/decidim/activity_cell.rb', line 104 def cache_hash hash = [] hash << id_prefix 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
81 82 83 |
# File 'decidim-core/app/cells/decidim/activity_cell.rb', line 81 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.
57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'decidim-core/app/cells/decidim/activity_cell.rb', line 57 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
96 97 98 |
# File 'decidim-core/app/cells/decidim/activity_cell.rb', line 96 def element_id "#{id_prefix}-#{model.id}" end |
#id_prefix ⇒ Object
100 101 102 |
# File 'decidim-core/app/cells/decidim/activity_cell.rb', line 100 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.
24 25 26 |
# File 'decidim-core/app/cells/decidim/activity_cell.rb', line 24 def renderable? resource.present? && participatory_space.present? && published? end |
#resource ⇒ Object
The resource linked to the activity.
29 30 31 |
# File 'decidim-core/app/cells/decidim/activity_cell.rb', line 29 def resource model.resource_lazy end |
#resource_link_path ⇒ Object
The link to the resource linked to the activity.
72 73 74 |
# File 'decidim-core/app/cells/decidim/activity_cell.rb', line 72 def resource_link_path resource_locator(resource).path end |
#resource_link_text ⇒ Object
The text to show as the link to the resource.
77 78 79 |
# File 'decidim-core/app/cells/decidim/activity_cell.rb', line 77 def resource_link_text decidim_html_escape(translated_attribute(resource.title)) end |
#show ⇒ Object
15 16 17 18 19 |
# File 'decidim-core/app/cells/decidim/activity_cell.rb', line 15 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.
36 37 38 39 40 41 42 43 44 45 46 |
# File 'decidim-core/app/cells/decidim/activity_cell.rb', line 36 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 |
#title_icon ⇒ Object
48 49 50 51 52 |
# File 'decidim-core/app/cells/decidim/activity_cell.rb', line 48 def title_icon return if resource.blank? resource_type_icon(resource.class) end |
#user ⇒ Object
85 86 87 88 89 90 91 92 |
# File 'decidim-core/app/cells/decidim/activity_cell.rb', line 85 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 |