]> source.dussan.org Git - redmine.git/commitdiff
Adds email notification on wiki changes (#413). It's disabled by default and can...
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 17 May 2009 09:55:13 +0000 (09:55 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 17 May 2009 09:55:13 +0000 (09:55 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2749 e93f8b46-1217-0410-a6f0-8f06a7374b81

44 files changed:
app/controllers/settings_controller.rb
app/models/mailer.rb
app/models/wiki_content.rb
app/models/wiki_content_observer.rb [new file with mode: 0644]
app/views/mailer/wiki_content_added.text.html.rhtml [new file with mode: 0644]
app/views/mailer/wiki_content_added.text.plain.rhtml [new file with mode: 0644]
app/views/mailer/wiki_content_updated.text.html.rhtml [new file with mode: 0644]
app/views/mailer/wiki_content_updated.text.plain.rhtml [new file with mode: 0644]
config/environment.rb
config/locales/bg.yml
config/locales/bs.yml
config/locales/ca.yml
config/locales/cs.yml
config/locales/da.yml
config/locales/de.yml
config/locales/en.yml
config/locales/es.yml
config/locales/fi.yml
config/locales/fr.yml
config/locales/gl.yml
config/locales/he.yml
config/locales/hu.yml
config/locales/it.yml
config/locales/ja.yml
config/locales/ko.yml
config/locales/lt.yml
config/locales/nl.yml
config/locales/no.yml
config/locales/pl.yml
config/locales/pt-BR.yml
config/locales/pt.yml
config/locales/ro.yml
config/locales/ru.yml
config/locales/sk.yml
config/locales/sl.yml
config/locales/sr.yml
config/locales/sv.yml
config/locales/th.yml
config/locales/tr.yml
config/locales/uk.yml
config/locales/vi.yml
config/locales/zh-TW.yml
config/locales/zh.yml
test/unit/wiki_content_test.rb

index 7d99a7266687782dbdee5622b71e62baf8d4ade2..c1d94850f0390085de5dd7c9884c513a4813b0f6 100644 (file)
@@ -24,7 +24,7 @@ class SettingsController < ApplicationController
   end
 
   def edit
-    @notifiables = %w(issue_added issue_updated news_added document_added file_added message_posted)
+    @notifiables = %w(issue_added issue_updated news_added document_added file_added message_posted wiki_content_added wiki_content_updated)
     if request.post? && params[:settings] && params[:settings].is_a?(Hash)
       settings = (params[:settings] || {}).dup.symbolize_keys
       settings.each do |name, value|
index 992fd50c01ed05d58bd296fcfe32adbb6c43b845..993d85da6fffebf23568d424b9655c80eea52e7a 100644 (file)
@@ -152,6 +152,37 @@ class Mailer < ActionMailer::Base
     body :message => message,
          :message_url => url_for(:controller => 'messages', :action => 'show', :board_id => message.board_id, :id => message.root)
   end
+  
+  # Builds a tmail object used to email the recipients of a project of the specified wiki content was updated. 
+  #
+  # Example:
+  #   wiki_content_updated(wiki_content) => tmail object
+  #   Mailer.deliver_wiki_content_updated(wiki_content) => sends an email to the project's recipients
+  def wiki_content_added(wiki_content)
+    redmine_headers 'Project' => wiki_content.project.identifier,
+                    'Wiki-Page-Id' => wiki_content.page.id
+    message_id wiki_content
+    recipients wiki_content.project.recipients
+    subject "[#{wiki_content.project.name}] #{l(:mail_subject_wiki_content_added, :page => wiki_content.page.pretty_title)}"
+    body :wiki_content => wiki_content,
+         :wiki_content_url => url_for(:controller => 'wiki', :action => 'index', :id => wiki_content.project, :page => wiki_content.page.title)
+  end
+  
+  # Builds a tmail object used to email the recipients of a project of the specified wiki content was updated. 
+  #
+  # Example:
+  #   wiki_content_updated(wiki_content) => tmail object
+  #   Mailer.deliver_wiki_content_updated(wiki_content) => sends an email to the project's recipients
+  def wiki_content_updated(wiki_content)
+    redmine_headers 'Project' => wiki_content.project.identifier,
+                    'Wiki-Page-Id' => wiki_content.page.id
+    message_id wiki_content
+    recipients wiki_content.project.recipients
+    subject "[#{wiki_content.project.name}] #{l(:mail_subject_wiki_content_updated, :page => wiki_content.page.pretty_title)}"
+    body :wiki_content => wiki_content,
+         :wiki_content_url => url_for(:controller => 'wiki', :action => 'index', :id => wiki_content.project, :page => wiki_content.page.title),
+         :wiki_diff_url => url_for(:controller => 'wiki', :action => 'diff', :id => wiki_content.project, :page => wiki_content.page.title, :version => wiki_content.version)
+  end
 
   # Builds a tmail object used to email the specified user their account information.
   #
@@ -325,7 +356,8 @@ class Mailer < ActionMailer::Base
   def self.message_id_for(object)
     # id + timestamp should reduce the odds of a collision
     # as far as we don't send multiple emails for the same object
-    hash = "redmine.#{object.class.name.demodulize.underscore}-#{object.id}.#{object.created_on.strftime("%Y%m%d%H%M%S")}"
+    timestamp = object.send(object.respond_to?(:created_on) ? :created_on : :updated_on) 
+    hash = "redmine.#{object.class.name.demodulize.underscore}-#{object.id}.#{timestamp.strftime("%Y%m%d%H%M%S")}"
     host = Setting.mail_from.to_s.gsub(%r{^.*@}, '')
     host = "#{::Socket.gethostname}.redmine" if host.empty?
     "<#{hash}@#{host}>"
index d206be97d8ec9f6c0cf170d8ebc23fb8329fcd0f..372ca8365788578103de5b42d0f3403a3c8207eb 100644 (file)
@@ -25,6 +25,11 @@ class WikiContent < ActiveRecord::Base
   validates_length_of :comments, :maximum => 255, :allow_nil => true
   
   acts_as_versioned
+    
+  def project
+    page.project
+  end
+  
   class Version
     belongs_to :page, :class_name => '::WikiPage', :foreign_key => 'page_id'
     belongs_to :author, :class_name => '::User', :foreign_key => 'author_id'
@@ -87,5 +92,4 @@ class WikiContent < ActiveRecord::Base
                                               :conditions => ["wiki_content_id = ? AND version < ?", wiki_content_id, version])
     end
   end
-  
 end
diff --git a/app/models/wiki_content_observer.rb b/app/models/wiki_content_observer.rb
new file mode 100644 (file)
index 0000000..d9dbe57
--- /dev/null
@@ -0,0 +1,28 @@
+# Redmine - project management software
+# Copyright (C) 2006-2009  Jean-Philippe Lang
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+# 
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+
+class WikiContentObserver < ActiveRecord::Observer
+  def after_create(wiki_content)
+    Mailer.deliver_wiki_content_added(wiki_content) if Setting.notified_events.include?('wiki_content_added')
+  end
+  
+  def after_update(wiki_content)
+    if wiki_content.text_changed?
+      Mailer.deliver_wiki_content_updated(wiki_content) if Setting.notified_events.include?('wiki_content_updated')
+    end
+  end
+end
diff --git a/app/views/mailer/wiki_content_added.text.html.rhtml b/app/views/mailer/wiki_content_added.text.html.rhtml
new file mode 100644 (file)
index 0000000..92e368f
--- /dev/null
@@ -0,0 +1,3 @@
+<p><%= l(:mail_body_wiki_content_added, :page => link_to(h(@wiki_content.page.pretty_title), @wiki_content_url), 
+                                                                                                                                                 :author => h(@wiki_content.author)) %><br />
+<em><%=h @wiki_content.comments %></em></p>
diff --git a/app/views/mailer/wiki_content_added.text.plain.rhtml b/app/views/mailer/wiki_content_added.text.plain.rhtml
new file mode 100644 (file)
index 0000000..5699eec
--- /dev/null
@@ -0,0 +1,5 @@
+<%= l(:mail_body_wiki_content_added, :page => h(@wiki_content.page.pretty_title), 
+                                                                                                                                                :author => h(@wiki_content.author)) %>
+<%= @wiki_content.comments %>
+
+<%= @wiki_content_url %>
diff --git a/app/views/mailer/wiki_content_updated.text.html.rhtml b/app/views/mailer/wiki_content_updated.text.html.rhtml
new file mode 100644 (file)
index 0000000..9f0bf0c
--- /dev/null
@@ -0,0 +1,6 @@
+<p><%= l(:mail_body_wiki_content_updated, :page => link_to(h(@wiki_content.page.pretty_title), @wiki_content_url), 
+                                                                                                                             :author => h(@wiki_content.author)) %><br />
+<em><%=h @wiki_content.comments %></em></p>
+
+<p><%= l(:label_view_diff) %>:<br />
+<%= link_to @wiki_diff_url, @wiki_diff_url %></p>
diff --git a/app/views/mailer/wiki_content_updated.text.plain.rhtml b/app/views/mailer/wiki_content_updated.text.plain.rhtml
new file mode 100644 (file)
index 0000000..29767a6
--- /dev/null
@@ -0,0 +1,8 @@
+<%= l(:mail_body_wiki_content_updated, :page => h(@wiki_content.page.pretty_title), 
+                                                                                                                                                        :author => h(@wiki_content.author)) %>
+<%= @wiki_content.comments %>
+
+<%= @wiki_content.page.pretty_title %>:
+<%= @wiki_content_url %>
+<%= l(:label_view_diff) %>:
+<%= @wiki_diff_url %>
index 826856d131e8c9af74ac99329e7f1d8e43a35aa2..f98968bcb43cd8af96d43f920a973d5538291484 100644 (file)
@@ -36,7 +36,7 @@ Rails::Initializer.run do |config|
   
   # Activate observers that should always be running
   # config.active_record.observers = :cacher, :garbage_collector
-  config.active_record.observers = :message_observer, :issue_observer, :journal_observer, :news_observer, :document_observer
+  config.active_record.observers = :message_observer, :issue_observer, :journal_observer, :news_observer, :document_observer, :wiki_content_observer
 
   # Make Active Record use UTC-base instead of local time
   # config.active_record.default_timezone = :utc
index 47fb305c41e890f8bee71dfd64a82586252f4fb3..36923c83caacd4c4d36153a0a21ba0edc92619b1 100644 (file)
@@ -790,3 +790,9 @@ bg:
   text_wiki_page_destroy_children: Delete child pages and all their descendants
   setting_password_min_length: Minimum password length
   field_group_by: Group results by
+  mail_subject_wiki_content_updated: "'{{page}}' wiki page has been updated"
+  label_wiki_content_added: Wiki page added
+  mail_subject_wiki_content_added: "'{{page}}' wiki page has been added"
+  mail_body_wiki_content_added: The '{{page}}' wiki page has been added by {{author}}.
+  label_wiki_content_updated: Wiki page updated
+  mail_body_wiki_content_updated: The '{{page}}' wiki page has been updated by {{author}}.
index fe0c30c28c0f60f5283657459bf7a8caff552bfb..59b25214399de720d2e2b006f19c384c40894dcd 100644 (file)
@@ -823,3 +823,9 @@ bs:
   text_wiki_page_destroy_children: Delete child pages and all their descendants\r
   setting_password_min_length: Minimum password length\r
   field_group_by: Group results by\r
+  mail_subject_wiki_content_updated: "'{{page}}' wiki page has been updated"\r
+  label_wiki_content_added: Wiki page added\r
+  mail_subject_wiki_content_added: "'{{page}}' wiki page has been added"\r
+  mail_body_wiki_content_added: The '{{page}}' wiki page has been added by {{author}}.\r
+  label_wiki_content_updated: Wiki page updated\r
+  mail_body_wiki_content_updated: The '{{page}}' wiki page has been updated by {{author}}.\r
index b8c84975c24e9330388cab122360bd3d784e77bd..20113f971d3c9823bcb8b6b50dcc8b35955e71d5 100644 (file)
@@ -793,3 +793,9 @@ ca:
   text_wiki_page_destroy_children: Delete child pages and all their descendants
   setting_password_min_length: Minimum password length
   field_group_by: Group results by
+  mail_subject_wiki_content_updated: "'{{page}}' wiki page has been updated"
+  label_wiki_content_added: Wiki page added
+  mail_subject_wiki_content_added: "'{{page}}' wiki page has been added"
+  mail_body_wiki_content_added: The '{{page}}' wiki page has been added by {{author}}.
+  label_wiki_content_updated: Wiki page updated
+  mail_body_wiki_content_updated: The '{{page}}' wiki page has been updated by {{author}}.
index 077cd1ba15a4a78207ed051004ca32ad40865e9c..a8040ca1ea9a825bb604b006bb614f7d1282c5d7 100644 (file)
@@ -796,3 +796,9 @@ cs:
   text_wiki_page_destroy_children: Delete child pages and all their descendants
   setting_password_min_length: Minimum password length
   field_group_by: Group results by
+  mail_subject_wiki_content_updated: "'{{page}}' wiki page has been updated"
+  label_wiki_content_added: Wiki page added
+  mail_subject_wiki_content_added: "'{{page}}' wiki page has been added"
+  mail_body_wiki_content_added: The '{{page}}' wiki page has been added by {{author}}.
+  label_wiki_content_updated: Wiki page updated
+  mail_body_wiki_content_updated: The '{{page}}' wiki page has been updated by {{author}}.
index fb47fb7984fa64098c77e4725318128c2a8b6614..6ce2fecb4aef5dbeea1a9b621c42d838d099152d 100644 (file)
@@ -823,3 +823,9 @@ da:
   text_wiki_page_destroy_children: Delete child pages and all their descendants
   setting_password_min_length: Minimum password length
   field_group_by: Group results by
+  mail_subject_wiki_content_updated: "'{{page}}' wiki page has been updated"
+  label_wiki_content_added: Wiki page added
+  mail_subject_wiki_content_added: "'{{page}}' wiki page has been added"
+  mail_body_wiki_content_added: The '{{page}}' wiki page has been added by {{author}}.
+  label_wiki_content_updated: Wiki page updated
+  mail_body_wiki_content_updated: The '{{page}}' wiki page has been updated by {{author}}.
index 278586afc4246b09d9d13f0da378e5bb1c4e1172..26855bfdbe2382bcff86f88f6930fa28ac3bbb43 100644 (file)
@@ -822,3 +822,9 @@ de:
   text_wiki_page_destroy_children: Delete child pages and all their descendants
   setting_password_min_length: Minimum password length
   field_group_by: Group results by
+  mail_subject_wiki_content_updated: "'{{page}}' wiki page has been updated"
+  label_wiki_content_added: Wiki page added
+  mail_subject_wiki_content_added: "'{{page}}' wiki page has been added"
+  mail_body_wiki_content_added: The '{{page}}' wiki page has been added by {{author}}.
+  label_wiki_content_updated: Wiki page updated
+  mail_body_wiki_content_updated: The '{{page}}' wiki page has been updated by {{author}}.
index cdc505a53b8ce222650c2991ecf85a49df56fcb8..3cfcbc66e1007918462db6a5c0d5acb74fe65bad 100644 (file)
@@ -149,6 +149,10 @@ en:
   mail_body_account_activation_request: "A new user ({{value}}) has registered. The account is pending your approval:"
   mail_subject_reminder: "{{count}} issue(s) due in the next days"
   mail_body_reminder: "{{count}} issue(s) that are assigned to you are due in the next {{days}} days:"
+  mail_subject_wiki_content_added: "'{{page}}' wiki page has been added"
+  mail_body_wiki_content_added: "The '{{page}}' wiki page has been added by {{author}}."
+  mail_subject_wiki_content_updated: "'{{page}}' wiki page has been updated"
+  mail_body_wiki_content_updated: "The '{{page}}' wiki page has been updated by {{author}}."
   
   gui_validation_error: 1 error
   gui_validation_error_plural: "{{count}} errors"
@@ -670,6 +674,8 @@ en:
   label_ascending: Ascending
   label_descending: Descending
   label_date_from_to: From {{start}} to {{end}}
+  label_wiki_content_added: Wiki page added
+  label_wiki_content_updated: Wiki page updated
   
   button_login: Login
   button_submit: Submit
index 812a8059d07e37dee31007fa822d43a5e124ffff..ff61e7d9e7fe6c6d5274d85b4d6f82ebea9b9bd7 100644 (file)
@@ -843,3 +843,9 @@ es:
   text_wiki_page_destroy_children: Delete child pages and all their descendants
   setting_password_min_length: Minimum password length
   field_group_by: Group results by
+  mail_subject_wiki_content_updated: "'{{page}}' wiki page has been updated"
+  label_wiki_content_added: Wiki page added
+  mail_subject_wiki_content_added: "'{{page}}' wiki page has been added"
+  mail_body_wiki_content_added: The '{{page}}' wiki page has been added by {{author}}.
+  label_wiki_content_updated: Wiki page updated
+  mail_body_wiki_content_updated: The '{{page}}' wiki page has been updated by {{author}}.
index b988ef394069d846d8d8be00a8bb2b8210aabcf3..a1cf5cbe78c0f0e3f73a51d99cd46e83960705d2 100644 (file)
@@ -833,3 +833,9 @@ fi:
   text_wiki_page_destroy_children: Delete child pages and all their descendants
   setting_password_min_length: Minimum password length
   field_group_by: Group results by
+  mail_subject_wiki_content_updated: "'{{page}}' wiki page has been updated"
+  label_wiki_content_added: Wiki page added
+  mail_subject_wiki_content_added: "'{{page}}' wiki page has been added"
+  mail_body_wiki_content_added: The '{{page}}' wiki page has been added by {{author}}.
+  label_wiki_content_updated: Wiki page updated
+  mail_body_wiki_content_updated: The '{{page}}' wiki page has been updated by {{author}}.
index e4d4710190e87ea28d31fda23c7bec0d4be78fd8..bbe18dca60b14a70db38b9022aad0215cce82bd2 100644 (file)
@@ -181,6 +181,10 @@ fr:
   mail_body_account_activation_request: "Un nouvel utilisateur ({{value}}) s'est inscrit. Son compte nécessite votre approbation:"
   mail_subject_reminder: "{{count}} demande(s) arrivent Ã  Ã©chéance"
   mail_body_reminder: "{{count}} demande(s) qui vous sont assignées arrivent Ã  Ã©chéance dans les {{days}} prochains jours:"
+  mail_subject_wiki_content_added: "Page wiki '{{page}}' ajoutée"
+  mail_body_wiki_content_added: "La page wiki '{{page}}' a Ã©té ajoutée par {{author}}."
+  mail_subject_wiki_content_updated: "Page wiki '{{page}}' mise Ã  jour"
+  mail_body_wiki_content_updated: "La page wiki '{{page}}' a Ã©té mise Ã  jour par {{author}}."
   
   gui_validation_error: 1 erreur
   gui_validation_error_plural: "{{count}} erreurs"
@@ -700,6 +704,8 @@ fr:
   label_ascending: Croissant
   label_descending: Décroissant
   label_date_from_to: Du {{start}} au {{end}}
+  label_wiki_content_added: Page wiki ajoutée
+  label_wiki_content_updated: Page wiki mise Ã  jour
   
   button_login: Connexion
   button_submit: Soumettre
index 08fe8f56320c719fb6101ec928bf5ee7f132cc91..167310e4232397e5b3ff8a14986fd0dbdf82c5b7 100644 (file)
@@ -822,3 +822,9 @@ gl:
   text_wiki_page_destroy_children: Delete child pages and all their descendants
   setting_password_min_length: Minimum password length
   field_group_by: Group results by
+  mail_subject_wiki_content_updated: "'{{page}}' wiki page has been updated"
+  label_wiki_content_added: Wiki page added
+  mail_subject_wiki_content_added: "'{{page}}' wiki page has been added"
+  mail_body_wiki_content_added: The '{{page}}' wiki page has been added by {{author}}.
+  label_wiki_content_updated: Wiki page updated
+  mail_body_wiki_content_updated: The '{{page}}' wiki page has been updated by {{author}}.
index 8e617286f5979aa72d382229de9bbae57ce3da5f..a720e4c26c95befeaba40317c428b2966c72bffd 100644 (file)
@@ -805,3 +805,9 @@ he:
   text_wiki_page_destroy_children: Delete child pages and all their descendants
   setting_password_min_length: Minimum password length
   field_group_by: Group results by
+  mail_subject_wiki_content_updated: "'{{page}}' wiki page has been updated"
+  label_wiki_content_added: Wiki page added
+  mail_subject_wiki_content_added: "'{{page}}' wiki page has been added"
+  mail_body_wiki_content_added: The '{{page}}' wiki page has been added by {{author}}.
+  label_wiki_content_updated: Wiki page updated
+  mail_body_wiki_content_updated: The '{{page}}' wiki page has been updated by {{author}}.
index 117d0f78f9c1d847b664a534b348ce3096faacba..2e0b80439f0e01393c4c1a290b093659a3d1bc50 100644 (file)
   text_wiki_page_destroy_children: Delete child pages and all their descendants
   setting_password_min_length: Minimum password length
   field_group_by: Group results by
+  mail_subject_wiki_content_updated: "'{{page}}' wiki page has been updated"
+  label_wiki_content_added: Wiki page added
+  mail_subject_wiki_content_added: "'{{page}}' wiki page has been added"
+  mail_body_wiki_content_added: The '{{page}}' wiki page has been added by {{author}}.
+  label_wiki_content_updated: Wiki page updated
+  mail_body_wiki_content_updated: The '{{page}}' wiki page has been updated by {{author}}.
index f04e61ba0f1cae35f8600e141f06a757e0982de4..935c38149ed073d69d47f238251f9dd8c2cb3ffa 100644 (file)
@@ -808,3 +808,9 @@ it:
   text_wiki_page_destroy_children: Delete child pages and all their descendants
   setting_password_min_length: Minimum password length
   field_group_by: Group results by
+  mail_subject_wiki_content_updated: "'{{page}}' wiki page has been updated"
+  label_wiki_content_added: Wiki page added
+  mail_subject_wiki_content_added: "'{{page}}' wiki page has been added"
+  mail_body_wiki_content_added: The '{{page}}' wiki page has been added by {{author}}.
+  label_wiki_content_updated: Wiki page updated
+  mail_body_wiki_content_updated: The '{{page}}' wiki page has been updated by {{author}}.
index 49f57b5695b7c711968ff630190023b86fccabf4..a9024f2ed35aef262063192c26457d0725bf733a 100644 (file)
@@ -821,3 +821,9 @@ ja:
   text_wiki_page_destroy_children: Delete child pages and all their descendants
   setting_password_min_length: Minimum password length
   field_group_by: Group results by
+  mail_subject_wiki_content_updated: "'{{page}}' wiki page has been updated"
+  label_wiki_content_added: Wiki page added
+  mail_subject_wiki_content_added: "'{{page}}' wiki page has been added"
+  mail_body_wiki_content_added: The '{{page}}' wiki page has been added by {{author}}.
+  label_wiki_content_updated: Wiki page updated
+  mail_body_wiki_content_updated: The '{{page}}' wiki page has been updated by {{author}}.
index c983818567c294510c664862de7ff37f75e7fc2c..221c524be314da5832ab6bdbfe68f10d15df7c08 100644 (file)
@@ -852,3 +852,9 @@ ko:
   text_wiki_page_destroy_children: Delete child pages and all their descendants
   setting_password_min_length: Minimum password length
   field_group_by: Group results by
+  mail_subject_wiki_content_updated: "'{{page}}' wiki page has been updated"
+  label_wiki_content_added: Wiki page added
+  mail_subject_wiki_content_added: "'{{page}}' wiki page has been added"
+  mail_body_wiki_content_added: The '{{page}}' wiki page has been added by {{author}}.
+  label_wiki_content_updated: Wiki page updated
+  mail_body_wiki_content_updated: The '{{page}}' wiki page has been updated by {{author}}.
index fdc978b708ea2475e3ec1672036f4442acc6eec2..7ba666e15955f0fdc6348dff059666270ec242b1 100644 (file)
@@ -833,3 +833,9 @@ lt:
   text_wiki_page_destroy_children: Delete child pages and all their descendants
   setting_password_min_length: Minimum password length
   field_group_by: Group results by
+  mail_subject_wiki_content_updated: "'{{page}}' wiki page has been updated"
+  label_wiki_content_added: Wiki page added
+  mail_subject_wiki_content_added: "'{{page}}' wiki page has been added"
+  mail_body_wiki_content_added: The '{{page}}' wiki page has been added by {{author}}.
+  label_wiki_content_updated: Wiki page updated
+  mail_body_wiki_content_updated: The '{{page}}' wiki page has been updated by {{author}}.
index cf16950e0126d89d28a13fa77e3c74704a1b7213..00229a81ad753f86fa86134d194d267e117c1e8f 100644 (file)
@@ -778,3 +778,9 @@ nl:
   text_wiki_page_destroy_children: Delete child pages and all their descendants
   setting_password_min_length: Minimum password length
   field_group_by: Group results by
+  mail_subject_wiki_content_updated: "'{{page}}' wiki page has been updated"
+  label_wiki_content_added: Wiki page added
+  mail_subject_wiki_content_added: "'{{page}}' wiki page has been added"
+  mail_body_wiki_content_added: The '{{page}}' wiki page has been added by {{author}}.
+  label_wiki_content_updated: Wiki page updated
+  mail_body_wiki_content_updated: The '{{page}}' wiki page has been updated by {{author}}.
index 04b618ac9d4980cd62d6c9e6ed784a8c0cb9c51c..ed9309eb12a1e244bb76a40608db4308f323ebb4 100644 (file)
   text_wiki_page_destroy_children: Delete child pages and all their descendants
   setting_password_min_length: Minimum password length
   field_group_by: Group results by
+  mail_subject_wiki_content_updated: "'{{page}}' wiki page has been updated"
+  label_wiki_content_added: Wiki page added
+  mail_subject_wiki_content_added: "'{{page}}' wiki page has been added"
+  mail_body_wiki_content_added: The '{{page}}' wiki page has been added by {{author}}.
+  label_wiki_content_updated: Wiki page updated
+  mail_body_wiki_content_updated: The '{{page}}' wiki page has been updated by {{author}}.
index 49d7ec7d952c4d001475f767012aca9d70f37c3c..1a20ffa498edce1afe565521dc959caa520aca97 100644 (file)
@@ -826,3 +826,9 @@ pl:
   text_wiki_page_destroy_children: Delete child pages and all their descendants
   setting_password_min_length: Minimum password length
   field_group_by: Group results by
+  mail_subject_wiki_content_updated: "'{{page}}' wiki page has been updated"
+  label_wiki_content_added: Wiki page added
+  mail_subject_wiki_content_added: "'{{page}}' wiki page has been added"
+  mail_body_wiki_content_added: The '{{page}}' wiki page has been added by {{author}}.
+  label_wiki_content_updated: Wiki page updated
+  mail_body_wiki_content_updated: The '{{page}}' wiki page has been updated by {{author}}.
index e8de22fb4d86d2c6e0ff299c7c1289b291097040..6592f6cec0172146d028220070e0809af968a423 100644 (file)
@@ -828,3 +828,9 @@ pt-BR:
   text_wiki_page_destroy_children: Delete child pages and all their descendants
   setting_password_min_length: Minimum password length
   field_group_by: Group results by
+  mail_subject_wiki_content_updated: "'{{page}}' wiki page has been updated"
+  label_wiki_content_added: Wiki page added
+  mail_subject_wiki_content_added: "'{{page}}' wiki page has been added"
+  mail_body_wiki_content_added: The '{{page}}' wiki page has been added by {{author}}.
+  label_wiki_content_updated: Wiki page updated
+  mail_body_wiki_content_updated: The '{{page}}' wiki page has been updated by {{author}}.
index e43609be3ddec3f5e3ae2251b5e613ab985e209f..ffc2795d2775836458cf66b6fa0b1506a4352374 100644 (file)
@@ -814,3 +814,9 @@ pt:
   text_wiki_page_destroy_children: Delete child pages and all their descendants
   setting_password_min_length: Minimum password length
   field_group_by: Group results by
+  mail_subject_wiki_content_updated: "'{{page}}' wiki page has been updated"
+  label_wiki_content_added: Wiki page added
+  mail_subject_wiki_content_added: "'{{page}}' wiki page has been added"
+  mail_body_wiki_content_added: The '{{page}}' wiki page has been added by {{author}}.
+  label_wiki_content_updated: Wiki page updated
+  mail_body_wiki_content_updated: The '{{page}}' wiki page has been updated by {{author}}.
index 31bcf70fde95a9d61c58fa93de06815ebec243cc..7e5f098fd9c44ff182e0ce7cbe25343b4d363a8f 100644 (file)
@@ -793,3 +793,9 @@ ro:
   text_wiki_page_destroy_children: Delete child pages and all their descendants
   setting_password_min_length: Minimum password length
   field_group_by: Group results by
+  mail_subject_wiki_content_updated: "'{{page}}' wiki page has been updated"
+  label_wiki_content_added: Wiki page added
+  mail_subject_wiki_content_added: "'{{page}}' wiki page has been added"
+  mail_body_wiki_content_added: The '{{page}}' wiki page has been added by {{author}}.
+  label_wiki_content_updated: Wiki page updated
+  mail_body_wiki_content_updated: The '{{page}}' wiki page has been updated by {{author}}.
index e55699a86a5461cf978fb331fb6112eea0681b37..8b0605bbce7fd99a45b098304944e41695a2dca5 100644 (file)
@@ -920,3 +920,9 @@ ru:
   text_wiki_page_destroy_children: Delete child pages and all their descendants
   setting_password_min_length: Minimum password length
   field_group_by: Group results by
+  mail_subject_wiki_content_updated: "'{{page}}' wiki page has been updated"
+  label_wiki_content_added: Wiki page added
+  mail_subject_wiki_content_added: "'{{page}}' wiki page has been added"
+  mail_body_wiki_content_added: The '{{page}}' wiki page has been added by {{author}}.
+  label_wiki_content_updated: Wiki page updated
+  mail_body_wiki_content_updated: The '{{page}}' wiki page has been updated by {{author}}.
index 722ee545df0a17aa013a7c2e2ee420c58d8eb3f6..dd23496b9bfb0e379e9d4fda9575fedd320b33f6 100644 (file)
@@ -794,3 +794,9 @@ sk:
   text_wiki_page_destroy_children: Delete child pages and all their descendants
   setting_password_min_length: Minimum password length
   field_group_by: Group results by
+  mail_subject_wiki_content_updated: "'{{page}}' wiki page has been updated"
+  label_wiki_content_added: Wiki page added
+  mail_subject_wiki_content_added: "'{{page}}' wiki page has been added"
+  mail_body_wiki_content_added: The '{{page}}' wiki page has been added by {{author}}.
+  label_wiki_content_updated: Wiki page updated
+  mail_body_wiki_content_updated: The '{{page}}' wiki page has been updated by {{author}}.
index becf2c62157fd5084ec7f5dab706389b2fe8cb83..f3f4d2fa865b7eaf2ed432ca4ad52a281164fbac 100644 (file)
@@ -792,3 +792,9 @@ sl:
   text_wiki_page_destroy_children: Delete child pages and all their descendants
   setting_password_min_length: Minimum password length
   field_group_by: Group results by
+  mail_subject_wiki_content_updated: "'{{page}}' wiki page has been updated"
+  label_wiki_content_added: Wiki page added
+  mail_subject_wiki_content_added: "'{{page}}' wiki page has been added"
+  mail_body_wiki_content_added: The '{{page}}' wiki page has been added by {{author}}.
+  label_wiki_content_updated: Wiki page updated
+  mail_body_wiki_content_updated: The '{{page}}' wiki page has been updated by {{author}}.
index d29b83fb9a6f72a91ec25236fbeb68e1893c3831..ed56fda995bc111c66b23092d86afa3cbdc1213a 100644 (file)
   text_wiki_page_destroy_children: Delete child pages and all their descendants
   setting_password_min_length: Minimum password length
   field_group_by: Group results by
+  mail_subject_wiki_content_updated: "'{{page}}' wiki page has been updated"
+  label_wiki_content_added: Wiki page added
+  mail_subject_wiki_content_added: "'{{page}}' wiki page has been added"
+  mail_body_wiki_content_added: The '{{page}}' wiki page has been added by {{author}}.
+  label_wiki_content_updated: Wiki page updated
+  mail_body_wiki_content_updated: The '{{page}}' wiki page has been updated by {{author}}.
index be8b5890064e3111f604b2f22b90dad04c1c31e6..3a7add901c0deac984dac607ec190a9851312657 100644 (file)
@@ -850,3 +850,9 @@ sv:
   text_wiki_page_destroy_children: Delete child pages and all their descendants
   setting_password_min_length: Minimum password length
   field_group_by: Group results by
+  mail_subject_wiki_content_updated: "'{{page}}' wiki page has been updated"
+  label_wiki_content_added: Wiki page added
+  mail_subject_wiki_content_added: "'{{page}}' wiki page has been added"
+  mail_body_wiki_content_added: The '{{page}}' wiki page has been added by {{author}}.
+  label_wiki_content_updated: Wiki page updated
+  mail_body_wiki_content_updated: The '{{page}}' wiki page has been updated by {{author}}.
index 56382db22a79bff0807a13ef055883eadf97701a..a24682700f5327c1b6dbb8870b7fad73608c370c 100644 (file)
@@ -793,3 +793,9 @@ th:
   text_wiki_page_destroy_children: Delete child pages and all their descendants
   setting_password_min_length: Minimum password length
   field_group_by: Group results by
+  mail_subject_wiki_content_updated: "'{{page}}' wiki page has been updated"
+  label_wiki_content_added: Wiki page added
+  mail_subject_wiki_content_added: "'{{page}}' wiki page has been added"
+  mail_body_wiki_content_added: The '{{page}}' wiki page has been added by {{author}}.
+  label_wiki_content_updated: Wiki page updated
+  mail_body_wiki_content_updated: The '{{page}}' wiki page has been updated by {{author}}.
index ecfdba74abd88b427b31fad656da086d78926a11..c167d92150bbc11c60ea1da130dca18eea832001 100644 (file)
@@ -829,3 +829,9 @@ tr:
   text_wiki_page_destroy_children: Delete child pages and all their descendants
   setting_password_min_length: Minimum password length
   field_group_by: Group results by
+  mail_subject_wiki_content_updated: "'{{page}}' wiki page has been updated"
+  label_wiki_content_added: Wiki page added
+  mail_subject_wiki_content_added: "'{{page}}' wiki page has been added"
+  mail_body_wiki_content_added: The '{{page}}' wiki page has been added by {{author}}.
+  label_wiki_content_updated: Wiki page updated
+  mail_body_wiki_content_updated: The '{{page}}' wiki page has been updated by {{author}}.
index 148642b660b6a82eac2b4e0c45a33cefdf180b7a..719b2c3f523529e0404113098a3727102fd82376 100644 (file)
@@ -792,3 +792,9 @@ uk:
   text_wiki_page_destroy_children: Delete child pages and all their descendants
   setting_password_min_length: Minimum password length
   field_group_by: Group results by
+  mail_subject_wiki_content_updated: "'{{page}}' wiki page has been updated"
+  label_wiki_content_added: Wiki page added
+  mail_subject_wiki_content_added: "'{{page}}' wiki page has been added"
+  mail_body_wiki_content_added: The '{{page}}' wiki page has been added by {{author}}.
+  label_wiki_content_updated: Wiki page updated
+  mail_body_wiki_content_updated: The '{{page}}' wiki page has been updated by {{author}}.
index 7b3238a8f812c9d24a0ee85844e863d3928d7dbf..b981752ce9db12d7334925c80716a21c0f3051df 100644 (file)
@@ -862,3 +862,9 @@ vi:
   text_wiki_page_destroy_children: Delete child pages and all their descendants
   setting_password_min_length: Minimum password length
   field_group_by: Group results by
+  mail_subject_wiki_content_updated: "'{{page}}' wiki page has been updated"
+  label_wiki_content_added: Wiki page added
+  mail_subject_wiki_content_added: "'{{page}}' wiki page has been added"
+  mail_body_wiki_content_added: The '{{page}}' wiki page has been added by {{author}}.
+  label_wiki_content_updated: Wiki page updated
+  mail_body_wiki_content_updated: The '{{page}}' wiki page has been updated by {{author}}.
index de037c8e9d3f349a10186f9192b9522a106dbc86..1c84c993121d43a8346faeb2ff06bd1f42c333ad 100644 (file)
   text_wiki_page_destroy_children: Delete child pages and all their descendants
   setting_password_min_length: Minimum password length
   field_group_by: Group results by
+  mail_subject_wiki_content_updated: "'{{page}}' wiki page has been updated"
+  label_wiki_content_added: Wiki page added
+  mail_subject_wiki_content_added: "'{{page}}' wiki page has been added"
+  mail_body_wiki_content_added: The '{{page}}' wiki page has been added by {{author}}.
+  label_wiki_content_updated: Wiki page updated
+  mail_body_wiki_content_updated: The '{{page}}' wiki page has been updated by {{author}}.
index f42975f45c3352c4c9f19e283e56ee4c0b6eaa35..3145d303a5e4b62ef1038a9de211c8810019f16b 100644 (file)
@@ -825,3 +825,9 @@ zh:
   text_wiki_page_destroy_children: Delete child pages and all their descendants
   setting_password_min_length: Minimum password length
   field_group_by: Group results by
+  mail_subject_wiki_content_updated: "'{{page}}' wiki page has been updated"
+  label_wiki_content_added: Wiki page added
+  mail_subject_wiki_content_added: "'{{page}}' wiki page has been added"
+  mail_body_wiki_content_added: The '{{page}}' wiki page has been added by {{author}}.
+  label_wiki_content_updated: Wiki page updated
+  mail_body_wiki_content_updated: The '{{page}}' wiki page has been updated by {{author}}.
index a8c28ae21d1c67204074c059d615c7b5e2101904..f3f8bc0414025a7f1b400a26df129fc4432fcc0e 100644 (file)
@@ -40,6 +40,16 @@ class WikiContentTest < Test::Unit::TestCase
     assert_equal User.find(1), content.author
     assert_equal content.text, content.versions.last.text
   end
+  
+  def test_create_should_send_email_notification
+    Setting.notified_events = ['wiki_content_added']
+    ActionMailer::Base.deliveries.clear
+    page = WikiPage.new(:wiki => @wiki, :title => "A new page")  
+    page.content = WikiContent.new(:text => "Content text", :author => User.find(1), :comments => "My comment")
+    assert page.save
+    
+    assert_equal 1, ActionMailer::Base.deliveries.size
+  end
 
   def test_update
     content = @page.content
@@ -51,6 +61,16 @@ class WikiContentTest < Test::Unit::TestCase
     assert_equal version_count+1, content.versions.length
   end
   
+  def test_update_should_send_email_notification
+    Setting.notified_events = ['wiki_content_updated']
+    ActionMailer::Base.deliveries.clear
+    content = @page.content
+    content.text = "My new content"
+    assert content.save
+    
+    assert_equal 1, ActionMailer::Base.deliveries.size
+  end
+  
   def test_fetch_history
     assert !@page.content.versions.empty?
     @page.content.versions.each do |version|