Feature #11530
Support hooks in mailer
Status: | New | Start date: | ||
---|---|---|---|---|
Priority: | Normal | Due date: | ||
Assignee: | - | % Done: | 0% | |
Category: | Email notifications | |||
Target version: | Candidate for next major release | |||
Resolution: |
Description
Could you support hooks in mailer?
Views can be extended by plugin. I want to extend mail content by plugin.
I want to add newly added Wiki content to Wiki added notification mails.
I also want to add changed Wiki content diff to Wiki updated notification mails.
If Redmine supports hooks in mailer, I can write a plugin to do them.
Related issues
History
#1
Updated by Kouhei Sutou over 8 years ago
- File 0001-Support-hooks-in-mailer.patch
added
I attach a patch to support hooks in mailer.
We need to do two things to support hooks in mailer.
- Add view path of plugins to ActionView::Base
- Call
call_hook
in template
Here is the change for view path:
diff --git a/lib/redmine/plugin.rb b/lib/redmine/plugin.rb index c3f4150..dae51ee 100644 --- a/lib/redmine/plugin.rb +++ b/lib/redmine/plugin.rb @@ -82,6 +82,7 @@ module Redmine #:nodoc: view_path = File.join(p.directory, 'app', 'views') if File.directory?(view_path) ActionController::Base.prepend_view_path(view_path) + ActionMailer::Base.prepend_view_path(view_path) end # Adds the app/{controllers,helpers,models} directories of the plugin to the autoload path
In the patch, just two call_hook
are only added. We need more call_hook
to make mailer more extensible.
#2
Updated by Kouhei Sutou over 8 years ago
Here is a plugin that uses hooks in mailer:
https://github.com/kou/redmine-plugin-wiki-change-notifier
If this feature request is accepted, the plugin works.
For now, the plugin works with the attached patch.
#3
Updated by Kouhei Sutou over 8 years ago
- File support-hooks-in-mailer-for-r10463.patch
added
I've updated the patch because #11776 adds the following change:
diff --git a/lib/redmine/plugin.rb b/lib/redmine/plugin.rb index c3f4150..dae51ee 100644 --- a/lib/redmine/plugin.rb +++ b/lib/redmine/plugin.rb @@ -82,6 +82,7 @@ module Redmine #:nodoc: view_path = File.join(p.directory, 'app', 'views') if File.directory?(view_path) ActionController::Base.prepend_view_path(view_path) + ActionMailer::Base.prepend_view_path(view_path) end # Adds the app/{controllers,helpers,models} directories of the plugin to the autoload path
#4
Updated by Toshi MARUYAMA over 6 years ago
- Related to Feature #12508: Add diff to wiki change notification added
#5
Updated by Kouhei Sutou over 5 years ago
- File support-hooks-in-mailer-for-r14648.patch
added
I've updated the patch for r14648.
#6
Updated by Go MAEDA over 5 years ago
Thank you for submitting patches.
Although the patch updates app/views/mailer/wiki_content_*.erb, I think other app/views/mailer/*.erb files should also have hooks for consistency.
#7
Updated by Kouhei Sutou over 5 years ago
Thanks for your response.
I'll also update other files when a developer accepts this request.
#8
Updated by okkez _ over 3 years ago
- File support-hooks-in-mailer-for-r16963.patch
added
I've updated the patch for r16963.
This patch also includes changes for adding hooks to app/views/mailer/*.erb same as app/views/mailer/wiki_content_*.erb.
I hope that next major release includes this patch.
#9
Updated by Go MAEDA over 3 years ago
- Target version set to 4.1.0
okkez _ wrote:
I've updated the patch for r16963.
This patch also includes changes for adding hooks to app/views/mailer/*.erb same as app/views/mailer/wiki_content_*.erb.
It looks good to me. I am setting target version to 4.1.0.
Thank you for posting the patch.
#10
Updated by Toshi MARUYAMA over 3 years ago
- Related to Feature #26839: Inline Email Diff For Issue 'Description' Changes added
#11
Updated by Jean-Philippe Lang over 1 year ago
- Target version changed from 4.1.0 to Candidate for next major release
We need to provide a way for the hook to know if we're rendering a html or plain text email.
#12
Updated by Kouhei Sutou over 1 year ago
It's already provided.
If we're rendering a HTML email, XXX.html.erb
is used.
If we're rendering a plain text email, XXX.text.erb
is used.
#13
Updated by Jean-Philippe Lang over 1 year ago
Kouhei Sutou wrote:
It's already provided.
If we're rendering a HTML email,XXX.html.erb
is used.
If we're rendering a plain text email,XXX.text.erb
is used.
Sure, but how does the hook that is called know about this?
#14
Updated by Kouhei Sutou over 1 year ago
We can get :text
in XXX.text.erb
and :html
in XXX.html.erb
by calling lookup_context.rendered_format
.
We can also get [:text]
in XXX.text.erb
and [:html]
in XXX.html.erb
by calling formats
.
#15
Updated by Kouhei Sutou about 1 year ago
- File support-hooks-in-mailer-for-r18899.patch
added
I've updated the patch for r18899.
#16
Updated by Kouhei Sutou about 1 year ago
- File support-hooks-in-mailer-for-r18899-2.patch
added
I added more hooks to `app/views/mailer/issue_edit*`:
--- support-hooks-in-mailer-for-r18899.patch 2019-11-05 16:44:11.906980336 +0900
+++ support-hooks-in-mailer-for-r18899-2.patch 2019-11-05 18:46:16.355343392 +0900
@@ -132,28 +132,68 @@
===================================================================
--- app/views/mailer/issue_edit.html.erb (revision 18899)
+++ app/views/mailer/issue_edit.html.erb (working copy)
-@@ -13,3 +13,8 @@
+@@ -10,6 +10,28 @@
+ <% end %>
+ </ul>
+
++<%= call_hook(:view_mailer_issue_edit_after_details,
++ :issue => @issue,
++ :journal => @journal,
++ :journal_details => @journal_details,
++ :users => @users,
++ :issue_url => @issue_url) %>
++
<%= textilizable(@journal, :notes, :only_path => false) %>
++
++<%= call_hook(:view_mailer_issue_edit_after_notes,
++ :issue => @issue,
++ :journal => @journal,
++ :journal_details => @journal_details,
++ :users => @users,
++ :issue_url => @issue_url) %>
++
<hr />
<%= render :partial => 'issue', :formats => [:html], :locals => { :issue => @issue, :user => @user, :issue_url => @issue_url } %>
+
+<%= call_hook(:view_mailer_issue_edit_bottom,
+ :issue => @issue,
++ :journal => @journal,
++ :journal_details => @journal_details,
+ :users => @users,
+ :issue_url => @issue_url) %>
Index: app/views/mailer/issue_edit.text.erb
===================================================================
--- app/views/mailer/issue_edit.text.erb (revision 18899)
+++ app/views/mailer/issue_edit.text.erb (working copy)
-@@ -10,3 +10,8 @@
+@@ -3,10 +3,27 @@
+ <% details_to_strings(@journal_details, true).each do |string| -%>
+ <%= string %>
+ <% end -%>
+-
++<%= call_hook(:view_mailer_issue_edit_after_details,
++ :issue => @issue,
++ :journal => @journal,
++ :journal_details => @journal_details,
++ :users => @users,
++ :issue_url => @issue_url) -%>
+ <% if @journal.notes? -%>
+ <%= @journal.notes %>
+
<% end -%>
++<%= call_hook(:view_mailer_issue_edit_after_notes,
++ :issue => @issue,
++ :journal => @journal,
++ :journal_details => @journal_details,
++ :users => @users,
++ :issue_url => @issue_url) -%>
----------------------------------------
<%= render :partial => 'issue', :formats => [:text], :locals => { :issue => @issue, :user => @user, :issue_url => @issue_url } %>
-+
+<%= call_hook(:view_mailer_issue_edit_bottom,
+ :issue => @issue,
++ :journal => @journal,
++ :journal_details => @journal_details,
+ :users => @users,
-+ :issue_url => @issue_url) %>
++ :issue_url => @issue_url) -%>
Index: app/views/mailer/lost_password.html.erb
===================================================================
--- app/views/mailer/lost_password.html.erb (revision 18899)
#17
Updated by Kouhei Sutou about 1 year ago
- File support-hooks-in-mailer-for-r18899-3.patch
added
Sorry... I added one more cosmetic fix...