Class: Decidim::ActivityCell

Inherits:
ViewModel
  • Object
show all
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

Methods included from SanitizeHelper

#decidim_html_escape, #decidim_sanitize

Methods included from ApplicationHelper

#cell, #edit_link, #html_truncate, #present, #step_cta_url

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_fields_label, #amendments_form_fields_value, #can_participate_in_private_space?, #can_react_to_emendation?, #emendation_actions_for, #emendation_announcement_for, #promote_button_for, #user_group_select_field

Methods included from ContextualHelpHelper

#floating_help

Methods included from ScopesHelper

#has_visible_scopes?, #scope_name_for_picker, #scopes_picker_field, #scopes_picker_filter, #scopes_picker_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?, #foundation_datepicker_locale_tag, #name_with_locale, #scopes_picker_field_tag, #tab_element_class_for, #translated_field_tag

Methods included from OmniauthHelper

#any_social_provider_enabled?, #normalize_provider_name, #oauth_icon, #social_provider_enabled?

Methods included from IconHelper

#component_icon, #manifest_icon, #resource_icon

Methods included from LayoutHelper

#_icon_classes, #extended_navigation_bar, #external_icon, #favicon, #icon, #organization_colors

Methods inherited from ViewModel

#current_user

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 ResourceHelper

#linked_classes_filter_values_for, #linked_classes_for, #linked_resources_for, #resource_locator, #resource_title

Instance Method Details

#created_atObject



72
73
74
# File 'app/cells/decidim/activity_cell.rb', line 72

def created_at
  I18n.l(model.created_at, format: :short)
end

#descriptionObject

The description to show at the card.

The card will also be displayed OK if there’s no description.



49
50
51
52
53
54
55
56
57
58
59
60
# File 'app/cells/decidim/activity_cell.rb', line 49

def description
  resource_description = resource.try(:resource_description) || resource.try(:description)
  return if resource_description.blank?

  resource_description = if resource_description.is_a?(String)
                           resource_description
                         elsif resource_description.is_a?(Hash)
                           translated_attribute(resource_description)
                         end

  truncate(strip_tags(resource_description), length: 300)
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.

Returns:

  • (Boolean)


23
24
25
# File 'app/cells/decidim/activity_cell.rb', line 23

def renderable?
  resource.present? && participatory_space.present? && published?
end

#resourceObject

The resource linked to the activity.



28
29
30
# File 'app/cells/decidim/activity_cell.rb', line 28

def resource
  model.resource_lazy
end

The link to the resource linked to the activity.



63
64
65
# File 'app/cells/decidim/activity_cell.rb', line 63

def resource_link_path
  resource_locator(resource).path
end

The text to show as the link to the resource.



68
69
70
# File 'app/cells/decidim/activity_cell.rb', line 68

def resource_link_text
  translated_attribute(resource.title)
end

#showObject



14
15
16
17
18
# File 'app/cells/decidim/activity_cell.rb', line 14

def show
  return unless renderable?

  render
end

#titleObject

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

  if resource_title.is_a?(String)
    resource_title
  elsif resource_title.is_a?(Hash)
    translated_attribute(resource_title)
  end
end

#userObject



76
77
78
79
80
81
# File 'app/cells/decidim/activity_cell.rb', line 76

def user
  return resource.normalized_author if resource.respond_to?(:normalized_author)
  return resource.author if resource.respond_to?(:author)

  model.user_lazy if resource.respond_to?(:user)
end