Class: Decidim::Events::BaseEvent
- Inherits:
-
Object
- Object
- Decidim::Events::BaseEvent
- Extended by:
- ActiveModel::Translation
- Includes:
- TranslatableAttributes
- 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
- #content_in_same_language? ⇒ 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 TranslatableAttributes
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
#content_in_same_language? ⇒ Boolean
88 89 90 |
# File 'lib/decidim/events/base_event.rb', line 88 def content_in_same_language? false end |
#organization ⇒ Object
80 81 82 |
# File 'lib/decidim/events/base_event.rb', line 80 def organization resource.try(:organization) end |
#perform_translation? ⇒ Boolean
84 85 86 |
# File 'lib/decidim/events/base_event.rb', line 84 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
102 103 104 105 106 107 108 109 110 111 112 |
# File 'lib/decidim/events/base_event.rb', line 102 def resource_title return unless resource title = if resource.respond_to?(:title) translated_attribute(resource.title) elsif resource.respond_to?(:name) translated_attribute(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
96 97 98 |
# File 'lib/decidim/events/base_event.rb', line 96 def safe_resource_text translated_attribute(resource_text).to_s.html_safe end |
#safe_resource_translated_text ⇒ Object
100 |
# File 'lib/decidim/events/base_event.rb', line 100 def safe_resource_translated_text; end |
#translation_missing? ⇒ Boolean
92 93 94 |
# File 'lib/decidim/events/base_event.rb', line 92 def translation_missing? false end |