Class: Decidim::Events::BaseEvent
- Inherits:
-
Object
- Object
- Decidim::Events::BaseEvent
- Extended by:
- ActiveModel::Translation
- Includes:
- SanitizeHelper
- Defined in:
- decidim-core/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
Conferences::ConferenceRegistrationNotificationEvent, Dev::DummyNotificationOnlyResourceEvent, Dev::DummyResourceEvent, SimpleEvent, Meetings::MeetingRegistrationNotificationEvent, Proposals::CoauthorAcceptedInviteEvent
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_rich_text, #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 'decidim-core/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 'decidim-core/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 'decidim-core/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 'decidim-core/lib/decidim/events/base_event.rb', line 97 def action_data; end |
#content_in_same_language? ⇒ Boolean
107 108 109 |
# File 'decidim-core/lib/decidim/events/base_event.rb', line 107 def content_in_same_language? false end |
#hidden_resource? ⇒ Boolean
133 134 135 |
# File 'decidim-core/lib/decidim/events/base_event.rb', line 133 def hidden_resource? resource.respond_to?(:hidden?) && resource.hidden? end |
#organization ⇒ Object
99 100 101 |
# File 'decidim-core/lib/decidim/events/base_event.rb', line 99 def organization resource.try(:organization) end |
#perform_translation? ⇒ Boolean
103 104 105 |
# File 'decidim-core/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 'decidim-core/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 'decidim-core/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 'decidim-core/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 'decidim-core/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 'decidim-core/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 'decidim-core/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 'decidim-core/lib/decidim/events/base_event.rb', line 119 def safe_resource_translated_text; end |
#translation_missing? ⇒ Boolean
111 112 113 |
# File 'decidim-core/lib/decidim/events/base_event.rb', line 111 def translation_missing? false end |