Class: Decidim::ContentBlocks::LastActivityCell
- Inherits:
-
ViewModel
- Object
- Cell::ViewModel
- ViewModel
- Decidim::ContentBlocks::LastActivityCell
- 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.
Instance Method Summary collapse
- #show ⇒ Object
-
#valid_activities ⇒ Object
The activities to be displayed at the content block.
Methods inherited from ViewModel
Methods included from MarkupHelper
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 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 ResourceHelper
#linked_classes_filter_values_for, #linked_classes_for, #linked_resources_for, #resource_locator, #resource_title
Instance Method Details
#show ⇒ Object
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_activities ⇒ Object
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 can’t 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 |