Class: Decidim::ContentBlocks::LastActivityCell

Inherits:
ViewModel
  • Object
show all
Defined in:
app/cells/decidim/content_blocks/last_activity_cell.rb

Overview

A cell to be rendered as a content block with the latest activities performed in a Decidim Organization.

Direct Known Subclasses

MenuBreadcrumbLastActivityCell

Constant Summary

Constants included from AmendmentsHelper

AmendmentsHelper::TOTAL_STEPS

Instance Method Summary collapse

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

#with_tooltip

Methods included from ModalHelper

#decidim_modal

Methods included from OrganizationHelper

#current_organization_name, #organization_colors, #organization_description_label, #organization_name

Methods included from TranslatableAttributes

#default_locale?

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 Decidim::CacheHelper

#cache

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

included, #text_editor_for

Methods included from Decidim::ContextualHelpHelper

#floating_help

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

#linked_classes_filter_values_for, #linked_classes_for, #resource_locator

Instance Method Details

#showObject



10
11
12
13
14
# File 'app/cells/decidim/content_blocks/last_activity_cell.rb', line 10

def show
  return if valid_activities.empty?

  render
end

#valid_activitiesObject

The activities to be displayed at the content block.

We need to build the collection this way because an ActionLog has polymorphic relations to different kind of models, and these models might not be available (a proposal might have been hidden or withdrawn).

Since these conditions cannot always be filtered with a database search we ask for more activities than we actually need and then loop until there are enough of them.

Returns an Array of ActionLogs.



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'app/cells/decidim/content_blocks/last_activity_cell.rb', line 27

def valid_activities
  return @valid_activities if defined?(@valid_activities)

  valid_activities_count = 0
  @valid_activities = []

  activities.includes([:user]).each do |activity|
    break if valid_activities_count == activities_to_show

    if activity.visible_for?(current_user)
      @valid_activities << activity
      valid_activities_count += 1
    end
  end

  @valid_activities
end