Class: Decidim::Events::BaseEvent
- Inherits:
-
Object
- Object
- Decidim::Events::BaseEvent
- Extended by:
- ActiveModel::Translation
- Includes:
- SanitizeHelper
- Defined in:
- lib/decidim/events/base_event.rb
Overview
This class serves as a base for all event classes. Event classes are intended to add more logic to a ‘Decidim::Notification` and are used to render them in the notifications dashboard and to generate other notifications (emails, for example).
Direct Known Subclasses
Class Method Summary collapse
-
.type(type) ⇒ Object
Public: Stores all the notification types this event can create.
Instance Method Summary collapse
-
#action_cell ⇒ nil, String
The cell that will be used to render the action or nil if not action needs to be rendered.
-
#action_data ⇒ nil, Array<Hash{Symbol => String}>
The data that will be passed to the action cell.
- #content_in_same_language? ⇒ Boolean
- #hidden_resource? ⇒ Boolean
-
#initialize(resource:, event_name:, user:, user_role: nil, extra: {}) ⇒ BaseEvent
constructor
Initializes the class.
- #organization ⇒ Object
- #perform_translation? ⇒ Boolean
-
#resource_locator ⇒ Object
Caches the locator for the given resource, so that we can find the resource URL.
-
#resource_path ⇒ Object
Caches the path for the given resource.
- #resource_text ⇒ Object
- #resource_title ⇒ Object
-
#resource_url ⇒ Object
Caches the URL for the given resource.
- #safe_resource_text ⇒ Object
- #safe_resource_translated_text ⇒ Object
- #translation_missing? ⇒ Boolean
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
Constructor Details
#initialize(resource:, event_name:, user:, user_role: nil, extra: {}) ⇒ BaseEvent
Initializes the class.
event_name - a String with the name of the event. resource - the resource that received the event user - the User that receives the event user_role - the role the user takes for this event (either ‘:follower` or
`:affected_user`)
extra - a Hash with extra information of the event.
46 47 48 49 50 51 52 |
# File 'lib/decidim/events/base_event.rb', line 46 def initialize(resource:, event_name:, user:, user_role: nil, extra: {}) @event_name = event_name @resource = resource @user = user @user_role = user_role @extra = extra.with_indifferent_access end |
Class Method Details
.type(type) ⇒ Object
Public: Stores all the notification types this event can create. Please, do not overwrite this method, consider it final. Instead, add values to the array via modules, take the ‘NotificationEvent` module as an example:
Example:
module WebPushNotificationEvent
extend ActiveSupport::Concern
included do
type :web_push_notifications
end
end
class MyEvent < Decidim::Events::BaseEvent
include WebPushNotificationEvent
end
MyEvent.types # => [:web_push_notifications]
34 35 36 |
# File 'lib/decidim/events/base_event.rb', line 34 def self.type(type) self.types += Array(type) end |
Instance Method Details
#action_cell ⇒ nil, String
The cell that will be used to render the action or nil if not action needs to be rendered.
85 |
# File 'lib/decidim/events/base_event.rb', line 85 def action_cell; end |
#action_data ⇒ nil, Array<Hash{Symbol => String}>
The data that will be passed to the action cell
97 |
# File 'lib/decidim/events/base_event.rb', line 97 def action_data; end |
#content_in_same_language? ⇒ Boolean
107 108 109 |
# File 'lib/decidim/events/base_event.rb', line 107 def content_in_same_language? false end |
#hidden_resource? ⇒ Boolean
133 134 135 |
# File 'lib/decidim/events/base_event.rb', line 133 def hidden_resource? resource.respond_to?(:hidden?) && resource.hidden? end |
#organization ⇒ Object
99 100 101 |
# File 'lib/decidim/events/base_event.rb', line 99 def organization resource.try(:organization) end |
#perform_translation? ⇒ Boolean
103 104 105 |
# File 'lib/decidim/events/base_event.rb', line 103 def perform_translation? false end |
#resource_locator ⇒ Object
Caches the locator for the given resource, so that we can find the resource URL.
56 57 58 |
# File 'lib/decidim/events/base_event.rb', line 56 def resource_locator @resource_locator ||= Decidim::ResourceLocatorPresenter.new(resource) end |
#resource_path ⇒ Object
Caches the path for the given resource.
61 62 63 64 65 66 67 |
# File 'lib/decidim/events/base_event.rb', line 61 def resource_path @resource_path ||= if resource.respond_to?(:polymorphic_resource_path) resource.polymorphic_resource_path(resource_url_params) else resource_locator.path(resource_url_params) end end |
#resource_text ⇒ Object
78 |
# File 'lib/decidim/events/base_event.rb', line 78 def resource_text; end |
#resource_title ⇒ Object
121 122 123 124 125 126 127 128 129 130 131 |
# File 'lib/decidim/events/base_event.rb', line 121 def resource_title return unless resource title = if resource.respond_to?(:title) decidim_sanitize_translated(resource.title) elsif resource.respond_to?(:name) decidim_sanitize_translated(resource.name) end Decidim::ContentProcessor.render_without_format(title, links: false).html_safe end |
#resource_url ⇒ Object
Caches the URL for the given resource.
70 71 72 73 74 75 76 |
# File 'lib/decidim/events/base_event.rb', line 70 def resource_url @resource_url ||= if resource.respond_to?(:polymorphic_resource_url) resource.polymorphic_resource_url(resource_url_params) else resource_locator.url(resource_url_params) end end |
#safe_resource_text ⇒ Object
115 116 117 |
# File 'lib/decidim/events/base_event.rb', line 115 def safe_resource_text translated_attribute(resource_text).to_s.html_safe end |
#safe_resource_translated_text ⇒ Object
119 |
# File 'lib/decidim/events/base_event.rb', line 119 def safe_resource_translated_text; end |
#translation_missing? ⇒ Boolean
111 112 113 |
# File 'lib/decidim/events/base_event.rb', line 111 def translation_missing? false end |