Class: Decidim::Events::SimpleEvent
- Includes:
- ComponentPathHelper, EmailEvent, NotificationEvent, SanitizeHelper
- Defined in:
- lib/decidim/events/simple_event.rb
Overview
Extends the BaseEvent to add common components to most events so you don’t need to write each time the same code.
The only convention you need to keep in mind is that the event name will be used as the i18n scope to search for the keys.
Direct Known Subclasses
Amendable::AmendmentBaseEvent, DemotedMembershipEvent, Gamification::BaseEvent, InvitedToGroupEvent, JoinRequestAcceptedEvent, JoinRequestCreatedEvent, JoinRequestRejectedEvent, ProfileUpdatedEvent, PromotedToAdminEvent, RemovedFromGroupEvent, ResourceEndorsedEvent, UserGroupAdminEvent
Class Method Summary collapse
-
.i18n_attributes(*attributes) ⇒ Object
Public: A method to add values to pass as interpolations to the I18n.t method.
Instance Method Summary collapse
- #email_intro ⇒ Object
- #email_outro ⇒ Object
- #email_subject ⇒ Object
-
#event_has_roles? ⇒ Boolean
Public: Whether the event differentiates between different user roles.
-
#i18n_options ⇒ Object
Public: The Hash of options to pass to the I18.t method.
-
#i18n_scope ⇒ Object
Public: The String to use as scope to search for the keys when using I18n.t.
- #notification_title ⇒ Object
-
#participatory_space_url ⇒ Object
Caches the URL for the resource’s participatory space.
-
#resource_path ⇒ Object
Caches the path for the given resource when it’s a Decidim::Component.
-
#resource_text ⇒ Object
Caches the text to render as a quote in the email.
-
#resource_url ⇒ Object
Caches the URL for the given resource when it’s a Decidim::Component.
Methods included from SanitizeHelper
#decidim_html_escape, #decidim_sanitize, #decidim_sanitize_newsletter, #decidim_url_escape, included
Methods included from ComponentPathHelper
#can_be_managed?, #main_component_path, #main_component_url, #manage_component_path
Methods inherited from BaseEvent
#initialize, #resource_locator, #resource_title, #safe_resource_text, type
Methods included from TranslatableAttributes
Constructor Details
This class inherits a constructor from Decidim::Events::BaseEvent
Class Method Details
.i18n_attributes(*attributes) ⇒ Object
Public: A method to add values to pass as interpolations to the I18n.t method.
By default the resource_path, resource_title and resource_url are already included.
attribute - A Symbol of the method name (and interpolation value) to add.
Example:
class MyEvent < Decidim::Events::SimpleEvent
i18n_attributes :participatory_space_title
end
30 31 32 |
# File 'lib/decidim/events/simple_event.rb', line 30 def self.i18n_attributes(*attributes) self.i18n_interpolations += Array(attributes) end |
Instance Method Details
#email_intro ⇒ Object
38 39 40 |
# File 'lib/decidim/events/simple_event.rb', line 38 def email_intro I18n.t("email_intro", ).html_safe end |
#email_outro ⇒ Object
42 43 44 |
# File 'lib/decidim/events/simple_event.rb', line 42 def email_outro I18n.t("email_outro", ).html_safe end |
#email_subject ⇒ Object
34 35 36 |
# File 'lib/decidim/events/simple_event.rb', line 34 def email_subject I18n.t("email_subject", ).html_safe end |
#event_has_roles? ⇒ Boolean
Public: Whether the event differentiates between different user roles. This will change the default i18n scope.
Returns a boolean.
65 66 67 |
# File 'lib/decidim/events/simple_event.rb', line 65 def event_has_roles? false end |
#i18n_options ⇒ Object
Public: The Hash of options to pass to the I18.t method.
70 71 72 73 74 75 76 77 78 |
# File 'lib/decidim/events/simple_event.rb', line 70 def .merge(event_interpolations).transform_values do |value| if value.is_a?(String) decidim_html_escape(value) else value end end end |
#i18n_scope ⇒ Object
Public: The String to use as scope to search for the keys when using I18n.t
By default is the same value as the event name. If the event has roles, then the role is appended to the i18n scope.
55 56 57 58 59 |
# File 'lib/decidim/events/simple_event.rb', line 55 def i18n_scope return event_name if user_role.blank? || !event_has_roles? "#{event_name}.#{user_role}" end |
#notification_title ⇒ Object
46 47 48 |
# File 'lib/decidim/events/simple_event.rb', line 46 def notification_title I18n.t("notification_title", ).html_safe end |
#participatory_space_url ⇒ Object
Caches the URL for the resource’s participatory space.
95 96 97 98 99 |
# File 'lib/decidim/events/simple_event.rb', line 95 def participatory_space_url return unless participatory_space @participatory_space_url ||= ResourceLocatorPresenter.new(participatory_space).url end |
#resource_path ⇒ Object
Caches the path for the given resource when it’s a Decidim::Component.
81 82 83 84 85 |
# File 'lib/decidim/events/simple_event.rb', line 81 def resource_path return super unless resource.is_a?(Decidim::Component) @resource_path ||= main_component_path(resource) end |
#resource_text ⇒ Object
Caches the text to render as a quote in the email. It will appear, if present, after the ‘intro` section. This method is intended to be overwritten by each event class.
Returns a string.
106 107 108 |
# File 'lib/decidim/events/simple_event.rb', line 106 def resource_text nil end |