<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>app/views/mailer/wiki_add.text.html.rhtml</filename>
    </added>
    <added>
      <filename>app/views/mailer/wiki_add.text.plain.rhtml</filename>
    </added>
    <added>
      <filename>app/views/mailer/wiki_edit.text.html.rhtml</filename>
    </added>
    <added>
      <filename>app/views/mailer/wiki_edit.text.plain.rhtml</filename>
    </added>
    <added>
      <filename>app/views/mailer/wiki_remove.text.html.rhtml</filename>
    </added>
    <added>
      <filename>app/views/mailer/wiki_remove.text.plain.rhtml</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -50,7 +50,7 @@ class AttachmentsController &lt; ApplicationController
 
   def to_notify?
     if @attachment.container.class.respond_to?(:notify?)
-      @attachment.container.class.notify?(:update)
+      @attachment.container.class.notify?(:updated)
     else
       Setting.notified_events.include?(NotificationKeys::FILE_ADDED)
     end</diff>
      <filename>app/controllers/attachments_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -80,16 +80,26 @@ class WikiController &lt; ApplicationController
       #@content.comments = params[:content][:comments]
       @content.attributes = params[:content]
       @content.author = User.current
+
       # if page is new @page.save will also save content, but not if page isn't a new record
-      if (@page.new_record? ? @page.save : @content.save)
-        redirect_to page_link
+      if @page.new_record?
+        result = @page.save
+        if result &amp;&amp; WikiPage.notify?
+          Mailer.deliver_wiki_add(@content)
+        end
+      else
+        result = @content.save
+        if result &amp;&amp; WikiPage.notify?
+          Mailer.deliver_wiki_edit(@content)
+        end
       end
+      redirect_to page_link if result
     end
   rescue ActiveRecord::StaleObjectError
     # Optimistic locking exception
     flash[:error] = l(:notice_locking_conflict)
   end
-  
+
   # rename a page
   def rename
     return render_403 unless editable?
@@ -135,6 +145,7 @@ class WikiController &lt; ApplicationController
   def destroy
     return render_403 unless editable?
     @page.destroy
+    Mailer.deliver_wiki_remove(@page, User.current) if WikiPage.notify?
     redirect_to :action =&gt; 'special', :id =&gt; @project, :page =&gt; 'Page_index'
   end
 
@@ -178,8 +189,7 @@ class WikiController &lt; ApplicationController
   def add_attachment
     return render_403 unless editable?
     attachments = attach_files(@page, params[:attachments])
-    if !attachments.empty? &amp;&amp;
-        Setting.notified_events.include?(NotificationKeys::WIKI_EDIT)
+    if !attachments.empty? &amp;&amp; WikiPage.notify?
       
       Mailer.deliver_attachments_added(attachments)
     end</diff>
      <filename>app/controllers/wiki_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -35,7 +35,7 @@ class Document &lt; ActiveRecord::Base
     end
   end
 
-  def self.notify?(action)
+  def self.notify?(action = nil)
     Setting.notified_events.include?(NotificationKeys::DOCUMENT_ADDED)
   end
 end</diff>
      <filename>app/models/document.rb</filename>
    </modified>
    <modified>
      <diff>@@ -284,7 +284,7 @@ class Issue &lt; ActiveRecord::Base
   end
   
   def self.notify?(action)
-    Setting.notified_events.include?(NotificationKeys.const_get('ISSUE_%sD' % action.to_s.upcase))
+    Setting.notified_events.include?(NotificationKeys.const_get('ISSUE_%s' % action.to_s.upcase))
   end
 
   private</diff>
      <filename>app/models/issue.rb</filename>
    </modified>
    <modified>
      <diff>@@ -69,11 +69,41 @@ class Mailer &lt; ActionMailer::Base
   def document_added(document)
     redmine_headers 'Project' =&gt; document.project.identifier
     recipients document.project.recipients
-    subject &quot;[#{document.project.name}] #{l(:label_document_new)}: #{document.title}&quot;
+    subject &quot;[#{document.project.name}] #{l(:label_document_added)}: #{document.title}&quot;
     body :document =&gt; document,
          :document_url =&gt; url_for(:controller =&gt; 'documents', :action =&gt; 'show', :id =&gt; document)
   end
 
+  def wiki_add(content)
+    page = content.page
+    redmine_headers 'Project' =&gt; page.project.identifier
+    recipients page.project.recipients
+    subject &quot;[#{page.project.name}] #{l(:label_wiki_added)}: #{page.title}&quot;
+    body :page =&gt; page, :content =&gt; content,
+         :page_url =&gt; url_for({:controller =&gt; 'wiki'}.merge(WikiController.page_link(page)))
+  end
+
+  def wiki_remove(page, actor)
+    redmine_headers 'Project' =&gt; page.project.identifier
+    recipients page.project.recipients
+    subject &quot;[#{page.project.name}] #{l(:label_wiki_deleted)}: #{page.title}&quot;
+    body :page =&gt; page, :actor =&gt; actor, :pages_index_url =&gt;
+      url_for(:controller =&gt; 'wiki', :action =&gt; 'special', :id =&gt; page.project,
+      :page =&gt; 'Page_index')
+  end
+
+  def wiki_edit(content)
+    page = content.page
+    redmine_headers 'Project' =&gt; page.project.identifier
+    recipients page.project.recipients
+    subject &quot;[#{page.project.name}] #{l(:label_wiki_changed)}: #{page.title}&quot;
+    body :page =&gt; page, :content =&gt; content,
+         :page_url =&gt; url_for({:controller =&gt; 'wiki'}.
+           merge(WikiController.page_link(page))),
+         :change_url =&gt; url_for(:controller =&gt; 'wiki', :action =&gt; 'diff', 
+         :page =&gt; page.title, :version =&gt; content.version, :id =&gt; page.project)
+  end
+
   def attachments_added(attachments)
     attachments_action(attachments) do |container|
       subject &quot;[#{container.project.name}] #{l(:label_attachment_new)}&quot;</diff>
      <filename>app/models/mailer.rb</filename>
    </modified>
    <modified>
      <diff>@@ -126,7 +126,7 @@ class WikiPage &lt; ActiveRecord::Base
     self.parent = parent_page
   end
   
-  def self.notify?(action)
+  def self.notify?(action = nil)
     Setting.notified_events.include?(NotificationKeys::WIKI_EDIT)
   end
 </diff>
      <filename>app/models/wiki_page.rb</filename>
    </modified>
    <modified>
      <diff>@@ -311,6 +311,11 @@ label_document: Document
 label_document_new: New document
 label_document_plural: Documents
 label_document_added: Document added
+label_wiki_added: Wiki page added
+label_wiki_changed: Wiki page changed
+label_wiki_changed_word: changed
+label_wiki_deleted: Wiki page was deleted
+label_wiki_deleted_by: Wiki page '%s' was deleted by %s
 label_role: Role
 label_role_plural: Roles
 label_role_new: New role
@@ -680,6 +685,9 @@ text_issues_ref_in_commit_messages: Referencing and fixing issues in commit mess
 text_issue_added: Issue %s has been reported by %s.
 text_issue_updated: Issue %s has been updated by %s.
 text_wiki_destroy_confirmation: Are you sure you want to delete this wiki and all its content ?
+text_wiki_page_added: Wiki page has been added by %s
+text_wiki_page_changed: Wiki page has been %s by %s
+text_with_comment: with comment '%s'
 text_issue_category_destroy_question: Some issues (%d) are assigned to this category. What do you want to do ?
 text_issue_category_destroy_assignments: Remove category assignments
 text_issue_category_reassign_to: Reassign issues to this category</diff>
      <filename>lang/en.yml</filename>
    </modified>
    <modified>
      <diff>@@ -579,6 +579,11 @@ label_wiki_edit: &#1056;&#1077;&#1076;&#1072;&#1082;&#1090;&#1080;&#1088;&#1086;&#1074;&#1072;&#1085;&#1080;&#1077; Wiki
 label_wiki_edit_plural: &#1056;&#1077;&#1076;&#1072;&#1082;&#1090;&#1080;&#1088;&#1086;&#1074;&#1072;&#1085;&#1080;&#1103; Wiki
 label_wiki_page: &#1057;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072; Wiki
 label_wiki_page_plural: &#1057;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1099; Wiki
+label_wiki_added: &#1044;&#1086;&#1073;&#1072;&#1074;&#1083;&#1077;&#1085;&#1072; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072; Wiki
+label_wiki_changed: &#1048;&#1079;&#1084;&#1077;&#1085;&#1077;&#1085;&#1072; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072; Wiki
+label_wiki_changed_word: &#1080;&#1079;&#1084;&#1077;&#1085;&#1077;&#1085;&#1072;
+label_wiki_deleted: &#1059;&#1076;&#1072;&#1083;&#1077;&#1085;&#1072; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072; Wiki
+label_wiki_deleted_by: &#1057;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072; Wiki '%s' &#1073;&#1099;&#1083;&#1072; &#1091;&#1076;&#1072;&#1083;&#1077;&#1085;&#1072; &#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1090;&#1077;&#1083;&#1077;&#1084; %s
 label_workflow: &#1055;&#1086;&#1089;&#1083;&#1077;&#1076;&#1086;&#1074;&#1072;&#1090;&#1077;&#1083;&#1100;&#1085;&#1086;&#1089;&#1090;&#1100; &#1076;&#1077;&#1081;&#1089;&#1090;&#1074;&#1080;&#1081;
 label_year: &#1043;&#1086;&#1076;
 label_yesterday: &#1074;&#1095;&#1077;&#1088;&#1072;
@@ -727,16 +732,13 @@ text_assign_time_entries_to_project: &#1055;&#1088;&#1080;&#1082;&#1088;&#1077;&#1087;&#1080;&#1090;&#1100; &#1079;&#1072;&#1088;&#1077;&#1075;&#1080;&#1089;&#1090;&#1088;&#1080;&#1088;
 text_caracters_maximum: %d &#1089;&#1080;&#1084;&#1074;&#1086;&#1083;&#1086;&#1074;(&#1072;) &#1084;&#1072;&#1082;&#1089;&#1080;&#1084;&#1091;&#1084;.
 text_caracters_maximum: &#1052;&#1072;&#1082;&#1089;&#1080;&#1084;&#1091;&#1084; %d &#1089;&#1080;&#1084;&#1074;&#1086;&#1083;&#1086;&#1074;(&#1072;).
 text_caracters_minimum: &#1044;&#1086;&#1083;&#1078;&#1085;&#1086; &#1073;&#1099;&#1090;&#1100; &#1085;&#1077; &#1084;&#1077;&#1085;&#1077;&#1077; %d &#1089;&#1080;&#1084;&#1074;&#1086;&#1083;&#1086;&#1074;.
-text_caracters_minimum: &#1044;&#1086;&#1083;&#1078;&#1085;&#1086; &#1073;&#1099;&#1090;&#1100; &#1085;&#1077; &#1084;&#1077;&#1085;&#1077;&#1077; %d &#1079;&#1085;&#1072;&#1082;&#1086;&#1074;.
 text_clear_to_recalculate_time_by_range: &#1054;&#1095;&#1080;&#1089;&#1090;&#1080;&#1090;&#1077;, &#1095;&#1090;&#1086;&#1073;&#1099; &#1087;&#1077;&#1088;&#1077;&#1089;&#1095;&#1080;&#1090;&#1072;&#1090;&#1100; &#1087;&#1086; &#1074;&#1088;&#1077;&#1084;&#1077;&#1085;&#1080; &#1086;&#1082;&#1086;&#1085;&#1095;&#1072;&#1085;&#1080;&#1103;
 text_comma_separated: &#1044;&#1086;&#1087;&#1091;&#1089;&#1090;&#1080;&#1084;&#1099; &#1085;&#1077;&#1089;&#1082;&#1086;&#1083;&#1100;&#1082;&#1086; &#1079;&#1085;&#1072;&#1095;&#1077;&#1085;&#1080;&#1081; (&#1088;&#1072;&#1079;&#1076;&#1077;&#1083;&#1077;&#1085;&#1085;&#1099;&#1077; &#1079;&#1072;&#1087;&#1103;&#1090;&#1086;&#1081;).
-text_comma_separated: &#1044;&#1086;&#1087;&#1091;&#1089;&#1090;&#1080;&#1084;&#1099; &#1085;&#1077;&#1089;&#1082;&#1086;&#1083;&#1100;&#1082;&#1086; &#1079;&#1085;&#1072;&#1095;&#1077;&#1085;&#1080;&#1081; (&#1095;&#1077;&#1088;&#1077;&#1079; &#1079;&#1072;&#1087;&#1103;&#1090;&#1091;&#1102;).
 text_custom_field_possible_values_info: 'One line for each value'
 text_default_administrator_account_changed: &#1059;&#1095;&#1077;&#1090;&#1085;&#1072;&#1103; &#1079;&#1072;&#1087;&#1080;&#1089;&#1100; &#1072;&#1076;&#1084;&#1080;&#1085;&#1080;&#1089;&#1090;&#1088;&#1072;&#1090;&#1086;&#1088;&#1072; &#1087;&#1086; &#1091;&#1084;&#1086;&#1083;&#1095;&#1072;&#1085;&#1080;&#1102; &#1080;&#1079;&#1084;&#1077;&#1085;&#1077;&#1085;&#1072;
 text_destroy_time_entries: &#1059;&#1076;&#1072;&#1083;&#1080;&#1090;&#1100; &#1079;&#1072;&#1088;&#1077;&#1075;&#1080;&#1089;&#1090;&#1088;&#1080;&#1088;&#1086;&#1074;&#1072;&#1085;&#1085;&#1086;&#1077; &#1074;&#1088;&#1077;&#1084;&#1103;
 text_destroy_time_entries_question: &#1042;&#1099; &#1089;&#1086;&#1073;&#1080;&#1088;&#1072;&#1077;&#1090;&#1077;&#1089;&#1100; &#1091;&#1076;&#1072;&#1083;&#1080;&#1090;&#1100; %.02f &#1095;&#1072;&#1089;&#1072;(&#1086;&#1074;) &#1087;&#1088;&#1080;&#1082;&#1088;&#1077;&#1087;&#1083;&#1077;&#1085;&#1085;&#1099;&#1093; &#1079;&#1072; &#1101;&#1090;&#1086;&#1081; &#1079;&#1072;&#1076;&#1072;&#1095;&#1077;&#1081;.
 text_diff_truncated: '... &#1069;&#1090;&#1086;&#1090; diff &#1086;&#1075;&#1088;&#1072;&#1085;&#1080;&#1095;&#1077;&#1085;, &#1090;&#1072;&#1082; &#1082;&#1072;&#1082; &#1087;&#1088;&#1077;&#1074;&#1099;&#1096;&#1072;&#1077;&#1090; &#1084;&#1072;&#1082;&#1089;&#1080;&#1084;&#1072;&#1083;&#1100;&#1085;&#1099;&#1081; &#1086;&#1090;&#1086;&#1073;&#1088;&#1072;&#1078;&#1072;&#1077;&#1084;&#1099;&#1081; &#1088;&#1072;&#1079;&#1084;&#1077;&#1088;.'
-text_email_delivery_not_configured: &quot;&#1055;&#1072;&#1088;&#1072;&#1084;&#1077;&#1090;&#1088;&#1099; &#1088;&#1072;&#1073;&#1086;&#1090;&#1099; &#1089; &#1087;&#1086;&#1095;&#1090;&#1086;&#1074;&#1099;&#1084; &#1089;&#1077;&#1088;&#1074;&#1077;&#1088;&#1086;&#1084; &#1085;&#1077; &#1085;&#1072;&#1089;&#1090;&#1088;&#1086;&#1077;&#1085;&#1099; &#1080; &#1092;&#1091;&#1085;&#1082;&#1094;&#1080;&#1103; &#1091;&#1074;&#1077;&#1076;&#1086;&#1084;&#1083;&#1077;&#1085;&#1080;&#1103; &#1087;&#1086; email &#1085;&#1077; &#1072;&#1082;&#1090;&#1080;&#1074;&#1085;&#1072;.\n&#1053;&#1072;&#1089;&#1090;&#1088;&#1086;&#1080;&#1090;&#1100; &#1087;&#1072;&#1088;&#1072;&#1084;&#1077;&#1090;&#1088;&#1099; &#1076;&#1083;&#1103; &#1074;&#1072;&#1096;&#1077;&#1075;&#1086; SMTP &#1089;&#1077;&#1088;&#1074;&#1077;&#1088;&#1072; &#1074;&#1099; &#1084;&#1086;&#1078;&#1077;&#1090;&#1077; &#1074; &#1092;&#1072;&#1081;&#1083;&#1077; config/email.yml. &#1044;&#1083;&#1103; &#1087;&#1088;&#1080;&#1084;&#1077;&#1085;&#1077;&#1085;&#1080;&#1103; &#1080;&#1079;&#1084;&#1077;&#1085;&#1077;&#1085;&#1080;&#1081; &#1087;&#1077;&#1088;&#1077;&#1079;&#1072;&#1087;&#1091;&#1089;&#1090;&#1080;&#1090;&#1077; &#1087;&#1088;&#1080;&#1083;&#1086;&#1078;&#1077;&#1085;&#1080;&#1077;.&quot;
 text_email_delivery_not_configured: &quot;&#1055;&#1072;&#1088;&#1072;&#1084;&#1077;&#1090;&#1088;&#1099; &#1088;&#1072;&#1073;&#1086;&#1090;&#1099; &#1089; &#1087;&#1086;&#1095;&#1090;&#1086;&#1074;&#1099;&#1084; &#1089;&#1077;&#1088;&#1074;&#1077;&#1088;&#1086;&#1084; &#1085;&#1077; &#1085;&#1072;&#1089;&#1090;&#1088;&#1086;&#1077;&#1085;&#1099; &#1080; &#1092;&#1091;&#1085;&#1082;&#1094;&#1080;&#1103; &#1091;&#1074;&#1077;&#1076;&#1086;&#1084;&#1083;&#1077;&#1085;&#1080;&#1103; &#1087;&#1086; email &#1085;&#1077; &#1072;&#1082;&#1090;&#1080;&#1074;&#1085;&#1072;.\n&#1053;&#1072;&#1089;&#1090;&#1088;&#1086;&#1080;&#1090;&#1100; &#1087;&#1072;&#1088;&#1072;&#1084;&#1077;&#1090;&#1088;&#1099; &#1076;&#1083;&#1103; &#1042;&#1072;&#1096;&#1077;&#1075;&#1086; SMTP-&#1089;&#1077;&#1088;&#1074;&#1077;&#1088;&#1072; &#1042;&#1099; &#1084;&#1086;&#1078;&#1077;&#1090;&#1077; &#1074; &#1092;&#1072;&#1081;&#1083;&#1077; config/email.yml. &#1044;&#1083;&#1103; &#1087;&#1088;&#1080;&#1084;&#1077;&#1085;&#1077;&#1085;&#1080;&#1103; &#1080;&#1079;&#1084;&#1077;&#1085;&#1077;&#1085;&#1080;&#1081; &#1087;&#1077;&#1088;&#1077;&#1079;&#1072;&#1087;&#1091;&#1089;&#1090;&#1080;&#1090;&#1077; &#1087;&#1088;&#1080;&#1083;&#1086;&#1078;&#1077;&#1085;&#1080;&#1077;.&quot;
 text_enumeration_category_reassign_to: '&#1053;&#1072;&#1079;&#1085;&#1072;&#1095;&#1080;&#1090;&#1100; &#1080;&#1084; &#1089;&#1083;&#1077;&#1076;&#1091;&#1102;&#1097;&#1077;&#1077; &#1079;&#1085;&#1072;&#1095;&#1077;&#1085;&#1080;&#1077;:'
 text_enumeration_destroy_question: '%d &#1086;&#1073;&#1098;&#1077;&#1082;&#1090;(&#1072;,&#1086;&#1074;) &#1089;&#1074;&#1103;&#1079;&#1072;&#1085;&#1099; &#1089; &#1101;&#1090;&#1080;&#1084; &#1079;&#1085;&#1072;&#1095;&#1077;&#1085;&#1080;&#1077;&#1084;.'
@@ -745,7 +747,6 @@ text_hours_short: &#1095;
 text_in_progress: &#1074; &#1087;&#1088;&#1086;&#1094;&#1077;&#1089;&#1089;&#1077;
 text_issue_added: &#1055;&#1086; &#1079;&#1072;&#1076;&#1072;&#1095;&#1077; %s &#1073;&#1099;&#1083; &#1089;&#1086;&#1079;&#1076;&#1072;&#1085; &#1086;&#1090;&#1095;&#1077;&#1090; (%s).
 text_issue_category_destroy_assignments: &#1059;&#1076;&#1072;&#1083;&#1080;&#1090;&#1100; &#1085;&#1072;&#1079;&#1085;&#1072;&#1095;&#1077;&#1085;&#1080;&#1103; &#1082;&#1072;&#1090;&#1077;&#1075;&#1086;&#1088;&#1080;&#1080;
-text_issue_category_destroy_question: &#1053;&#1077;&#1089;&#1082;&#1086;&#1083;&#1100;&#1082;&#1086; &#1079;&#1072;&#1076;&#1072;&#1095; (%d) &#1085;&#1072;&#1079;&#1085;&#1072;&#1095;&#1077;&#1085;&#1086; &#1074; &#1076;&#1072;&#1085;&#1085;&#1091;&#1102; &#1082;&#1072;&#1090;&#1077;&#1075;&#1086;&#1088;&#1080;&#1102;. &#1063;&#1090;&#1086; &#1074;&#1099; &#1093;&#1086;&#1090;&#1080;&#1090;&#1077; &#1087;&#1088;&#1077;&#1076;&#1087;&#1088;&#1080;&#1085;&#1103;&#1090;&#1100;?
 text_issue_category_destroy_question: &#1053;&#1077;&#1089;&#1082;&#1086;&#1083;&#1100;&#1082;&#1086; &#1079;&#1072;&#1076;&#1072;&#1095; (%d) &#1085;&#1072;&#1079;&#1085;&#1072;&#1095;&#1077;&#1085;&#1086; &#1074; &#1076;&#1072;&#1085;&#1085;&#1091;&#1102; &#1082;&#1072;&#1090;&#1077;&#1075;&#1086;&#1088;&#1080;&#1102;. &#1063;&#1090;&#1086; &#1042;&#1099; &#1093;&#1086;&#1090;&#1080;&#1090;&#1077; &#1087;&#1088;&#1077;&#1076;&#1087;&#1088;&#1080;&#1085;&#1103;&#1090;&#1100;?
 text_issue_category_reassign_to: &#1055;&#1077;&#1088;&#1077;&#1085;&#1072;&#1079;&#1085;&#1072;&#1095;&#1080;&#1090;&#1100; &#1079;&#1072;&#1076;&#1072;&#1095;&#1080; &#1076;&#1083;&#1103; &#1076;&#1072;&#1085;&#1085;&#1086;&#1081; &#1082;&#1072;&#1090;&#1077;&#1075;&#1086;&#1088;&#1080;&#1080;
 text_issue_updated: &#1047;&#1072;&#1076;&#1072;&#1095;&#1072; %s &#1073;&#1099;&#1083;&#1072; &#1086;&#1073;&#1085;&#1086;&#1074;&#1083;&#1077;&#1085;&#1072; (%s).
@@ -755,14 +756,12 @@ text_journal_changed: &#1087;&#1072;&#1088;&#1072;&#1084;&#1077;&#1090;&#1088; &#1080;&#1079;&#1084;&#1077;&#1085;&#1080;&#1083;&#1089;&#1103; &#1089; %s &#1085;&#1072; %s
 text_journal_deleted: &#1091;&#1076;&#1072;&#1083;&#1077;&#1085;&#1086;
 text_journal_set_to: &#1087;&#1072;&#1088;&#1072;&#1084;&#1077;&#1090;&#1088; &#1080;&#1079;&#1084;&#1077;&#1085;&#1080;&#1083;&#1089;&#1103; &#1085;&#1072; %s
 text_length_between: &#1044;&#1083;&#1080;&#1085;&#1072; &#1084;&#1077;&#1078;&#1076;&#1091; %d &#1080; %d &#1089;&#1080;&#1084;&#1074;&#1086;&#1083;&#1086;&#1074;.
-text_load_default_configuration: &#1047;&#1072;&#1075;&#1088;&#1091;&#1079;&#1080;&#1090;&#1100; &#1082;&#1086;&#1085;&#1092;&#1080;&#1075;&#1091;&#1088;&#1072;&#1094;&#1080;&#1102; &#1087;&#1086;-&#1091;&#1084;&#1086;&#1083;&#1095;&#1072;&#1085;&#1080;&#1102;
 text_load_default_configuration: &#1047;&#1072;&#1075;&#1088;&#1091;&#1079;&#1080;&#1090;&#1100; &#1082;&#1086;&#1085;&#1092;&#1080;&#1075;&#1091;&#1088;&#1072;&#1094;&#1080;&#1102; &#1087;&#1086; &#1091;&#1084;&#1086;&#1083;&#1095;&#1072;&#1085;&#1080;&#1102;
 text_min_max_length_info: 0 &#1086;&#1079;&#1085;&#1072;&#1095;&#1072;&#1077;&#1090; &#1086;&#1090;&#1089;&#1091;&#1090;&#1089;&#1090;&#1074;&#1080;&#1077; &#1079;&#1072;&#1087;&#1088;&#1077;&#1090;&#1086;&#1074;
 text_no_configuration_data: &quot;&#1056;&#1086;&#1083;&#1080;, &#1090;&#1088;&#1077;&#1082;&#1077;&#1088;&#1099;, &#1089;&#1090;&#1072;&#1090;&#1091;&#1089;&#1099; &#1079;&#1072;&#1076;&#1072;&#1095; &#1080; &#1086;&#1087;&#1077;&#1088;&#1072;&#1090;&#1080;&#1074;&#1085;&#1099;&#1081; &#1087;&#1083;&#1072;&#1085; &#1085;&#1077; &#1073;&#1099;&#1083;&#1080; &#1089;&#1082;&#1086;&#1085;&#1092;&#1080;&#1075;&#1091;&#1088;&#1080;&#1088;&#1086;&#1074;&#1072;&#1085;&#1099;.\n&#1053;&#1072;&#1089;&#1090;&#1086;&#1103;&#1090;&#1077;&#1083;&#1100;&#1085;&#1086; &#1088;&#1077;&#1082;&#1086;&#1084;&#1077;&#1085;&#1076;&#1091;&#1077;&#1090;&#1089;&#1103; &#1079;&#1072;&#1075;&#1088;&#1091;&#1079;&#1080;&#1090;&#1100; &#1082;&#1086;&#1085;&#1092;&#1080;&#1075;&#1091;&#1088;&#1072;&#1094;&#1080;&#1102; &#1087;&#1086;-&#1091;&#1084;&#1086;&#1083;&#1095;&#1072;&#1085;&#1080;&#1102;. &#1042;&#1099; &#1089;&#1084;&#1086;&#1078;&#1077;&#1090;&#1077; &#1077;&#1105; &#1080;&#1079;&#1084;&#1077;&#1085;&#1080;&#1090;&#1100; &#1087;&#1086;&#1090;&#1086;&#1084;.&quot;
 text_not_assigned: &#1053;&#1077; &#1085;&#1072;&#1079;&#1085;&#1072;&#1095;&#1077;&#1085;&#1086;
 text_plugin_assets_writable: Plugin assets directory writable
 text_project_destroy_confirmation: &#1042;&#1099; &#1085;&#1072;&#1089;&#1090;&#1072;&#1080;&#1074;&#1072;&#1077;&#1090;&#1077; &#1085;&#1072; &#1091;&#1076;&#1072;&#1083;&#1077;&#1085;&#1080;&#1080; &#1076;&#1072;&#1085;&#1085;&#1086;&#1075;&#1086; &#1087;&#1088;&#1086;&#1077;&#1082;&#1090;&#1072; &#1080; &#1074;&#1089;&#1077;&#1081; &#1086;&#1090;&#1085;&#1086;&#1089;&#1103;&#1097;&#1077;&#1081;&#1089;&#1103; &#1082; &#1085;&#1077;&#1084;&#1091; &#1080;&#1085;&#1092;&#1086;&#1088;&#1084;&#1072;&#1094;&#1080;&#1080;?
-text_project_identifier_info: '&#1057;&#1090;&#1088;&#1086;&#1095;&#1085;&#1099;&#1077; &#1073;&#1091;&#1082;&#1074;&#1099; (a-z), &#1076;&#1086;&#1087;&#1091;&#1089;&#1090;&#1080;&#1084;&#1099; &#1094;&#1080;&#1092;&#1088;&#1099; &#1080; &#1076;&#1077;&#1092;&#1080;&#1089;.&lt;br /&gt;&#1057;&#1086;&#1093;&#1088;&#1072;&#1085;&#1077;&#1085;&#1085;&#1099;&#1081; &#1080;&#1076;&#1077;&#1085;&#1090;&#1080;&#1092;&#1080;&#1082;&#1072;&#1090;&#1086;&#1088; &#1085;&#1077; &#1084;&#1086;&#1078;&#1077;&#1090; &#1073;&#1099;&#1090;&#1100; &#1080;&#1079;&#1084;&#1077;&#1085;&#1077;&#1085;.'
 text_project_identifier_info: '&#1044;&#1086;&#1087;&#1091;&#1089;&#1090;&#1080;&#1084;&#1099; &#1089;&#1090;&#1088;&#1086;&#1095;&#1085;&#1099;&#1077; &#1073;&#1091;&#1082;&#1074;&#1099; (a-z), &#1094;&#1080;&#1092;&#1088;&#1099; &#1080; &#1076;&#1077;&#1092;&#1080;&#1089;.&lt;br /&gt;&#1057;&#1086;&#1093;&#1088;&#1072;&#1085;&#1077;&#1085;&#1085;&#1099;&#1081; &#1080;&#1076;&#1077;&#1085;&#1090;&#1080;&#1092;&#1080;&#1082;&#1072;&#1090;&#1086;&#1088; &#1085;&#1077; &#1084;&#1086;&#1078;&#1077;&#1090; &#1073;&#1099;&#1090;&#1100; &#1080;&#1079;&#1084;&#1077;&#1085;&#1077;&#1085;.'
 text_reassign_time_entries: '&#1055;&#1077;&#1088;&#1077;&#1085;&#1077;&#1089;&#1090;&#1080; &#1079;&#1072;&#1088;&#1077;&#1075;&#1080;&#1089;&#1090;&#1088;&#1080;&#1088;&#1086;&#1074;&#1072;&#1085;&#1085;&#1086;&#1077; &#1074;&#1088;&#1077;&#1084;&#1103; &#1085;&#1072; &#1089;&#1083;&#1077;&#1076;&#1091;&#1102;&#1097;&#1091;&#1102; &#1079;&#1072;&#1076;&#1072;&#1095;&#1091;:'
 text_regexp_info: &#1085;&#1072;&#1087;&#1088;. ^[A-Z0-9]+$
@@ -781,11 +780,12 @@ text_tip_task_begin_end_day: &#1085;&#1072;&#1095;&#1072;&#1083;&#1086; &#1079;&#1072;&#1076;&#1072;&#1095;&#1080; &#1080; &#1086;&#1082;&#1086;&#1085;&#1095;&#1072;&#1085;&#1080;&#1077; &#1077;
 text_tip_task_end_day: &#1076;&#1072;&#1090;&#1072; &#1079;&#1072;&#1074;&#1077;&#1088;&#1096;&#1077;&#1085;&#1080;&#1103; &#1079;&#1072;&#1076;&#1072;&#1095;&#1080;
 text_tracker_no_workflow: &#1044;&#1083;&#1103; &#1101;&#1090;&#1086;&#1075;&#1086; &#1090;&#1088;&#1077;&#1082;&#1077;&#1088;&#1072; &#1087;&#1086;&#1089;&#1083;&#1077;&#1076;&#1086;&#1074;&#1072;&#1090;&#1077;&#1083;&#1100;&#1085;&#1086;&#1089;&#1090;&#1100; &#1076;&#1077;&#1081;&#1089;&#1090;&#1074;&#1080;&#1081; &#1085;&#1077; &#1086;&#1087;&#1088;&#1077;&#1076;&#1077;&#1083;&#1077;&#1085;&#1072;
 text_unallowed_characters: &#1047;&#1072;&#1087;&#1088;&#1077;&#1097;&#1077;&#1085;&#1085;&#1099;&#1077; &#1089;&#1080;&#1084;&#1074;&#1086;&#1083;&#1099;
-text_user_mail_option: &quot;&#1044;&#1083;&#1103; &#1085;&#1077;&#1074;&#1099;&#1073;&#1088;&#1072;&#1085;&#1085;&#1099;&#1093; &#1087;&#1088;&#1086;&#1077;&#1082;&#1090;&#1086;&#1074;, &#1074;&#1099; &#1073;&#1091;&#1076;&#1077;&#1090;&#1077; &#1087;&#1086;&#1083;&#1091;&#1095;&#1072;&#1090;&#1100; &#1091;&#1074;&#1077;&#1076;&#1086;&#1084;&#1083;&#1077;&#1085;&#1080;&#1103; &#1090;&#1086;&#1083;&#1100;&#1082;&#1086; &#1086; &#1090;&#1086;&#1084; &#1095;&#1090;&#1086; &#1087;&#1088;&#1086;&#1089;&#1084;&#1072;&#1090;&#1088;&#1080;&#1074;&#1072;&#1077;&#1090;&#1077; &#1080;&#1083;&#1080; &#1074; &#1095;&#1077;&#1084; &#1091;&#1095;&#1072;&#1089;&#1090;&#1074;&#1091;&#1077;&#1090;&#1077; (&#1085;&#1072;&#1087;&#1088;&#1080;&#1084;&#1077;&#1088;, &#1074;&#1086;&#1087;&#1088;&#1086;&#1089;&#1099; &#1072;&#1074;&#1090;&#1086;&#1088;&#1086;&#1084; &#1082;&#1086;&#1090;&#1086;&#1088;&#1099;&#1093; &#1074;&#1099; &#1103;&#1074;&#1083;&#1103;&#1077;&#1090;&#1077;&#1089;&#1100; &#1080;&#1083;&#1080; &#1082;&#1086;&#1090;&#1086;&#1088;&#1099;&#1077; &#1074;&#1072;&#1084; &#1085;&#1072;&#1079;&#1085;&#1072;&#1095;&#1077;&#1085;&#1099;).&quot;
 text_user_mail_option: &quot;&#1044;&#1083;&#1103; &#1085;&#1077;&#1074;&#1099;&#1073;&#1088;&#1072;&#1085;&#1085;&#1099;&#1093; &#1087;&#1088;&#1086;&#1077;&#1082;&#1090;&#1086;&#1074;, &#1042;&#1099; &#1073;&#1091;&#1076;&#1077;&#1090;&#1077; &#1087;&#1086;&#1083;&#1091;&#1095;&#1072;&#1090;&#1100; &#1091;&#1074;&#1077;&#1076;&#1086;&#1084;&#1083;&#1077;&#1085;&#1080;&#1103; &#1090;&#1086;&#1083;&#1100;&#1082;&#1086; &#1086; &#1090;&#1086;&#1084; &#1095;&#1090;&#1086; &#1087;&#1088;&#1086;&#1089;&#1084;&#1072;&#1090;&#1088;&#1080;&#1074;&#1072;&#1077;&#1090;&#1077; &#1080;&#1083;&#1080; &#1074; &#1095;&#1077;&#1084; &#1091;&#1095;&#1072;&#1089;&#1090;&#1074;&#1091;&#1077;&#1090;&#1077; (&#1085;&#1072;&#1087;&#1088;&#1080;&#1084;&#1077;&#1088;, &#1074;&#1086;&#1087;&#1088;&#1086;&#1089;&#1099;, &#1072;&#1074;&#1090;&#1086;&#1088;&#1086;&#1084; &#1082;&#1086;&#1090;&#1086;&#1088;&#1099;&#1093; &#1042;&#1099; &#1103;&#1074;&#1083;&#1103;&#1077;&#1090;&#1077;&#1089;&#1100; &#1080;&#1083;&#1080; &#1082;&#1086;&#1090;&#1086;&#1088;&#1099;&#1077; &#1042;&#1072;&#1084; &#1085;&#1072;&#1079;&#1085;&#1072;&#1095;&#1077;&#1085;&#1099;).&quot;
 text_user_wrote: '%s &#1085;&#1072;&#1087;&#1080;&#1089;&#1072;&#1083;(&#1072;):'
-text_wiki_destroy_confirmation: &#1042;&#1099; &#1091;&#1074;&#1077;&#1088;&#1077;&#1085;&#1099;, &#1095;&#1090;&#1086; &#1093;&#1086;&#1090;&#1080;&#1090;&#1077; &#1091;&#1076;&#1072;&#1083;&#1080;&#1090;&#1100; &#1076;&#1072;&#1085;&#1085;&#1091;&#1102; &#1074;&#1080;&#1082;&#1080; &#1080; &#1074;&#1089;&#1077; &#1089;&#1086;&#1076;&#1077;&#1088;&#1078;&#1080;&#1084;&#1086;&#1077;?
 text_wiki_destroy_confirmation: &#1042;&#1099; &#1091;&#1074;&#1077;&#1088;&#1077;&#1085;&#1099;, &#1095;&#1090;&#1086; &#1093;&#1086;&#1090;&#1080;&#1090;&#1077; &#1091;&#1076;&#1072;&#1083;&#1080;&#1090;&#1100; &#1076;&#1072;&#1085;&#1085;&#1091;&#1102; Wiki &#1080; &#1074;&#1089;&#1077; &#1077;&#1077; &#1089;&#1086;&#1076;&#1077;&#1088;&#1078;&#1080;&#1084;&#1086;&#1077;?
+text_wiki_page_added: &#1057;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072; Wiki &#1073;&#1099;&#1083;&#1072; &#1076;&#1086;&#1073;&#1072;&#1074;&#1083;&#1077;&#1085;&#1072; &#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1090;&#1077;&#1083;&#1077;&#1084; %s
+text_wiki_page_changed: &#1057;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072; Wiki &#1073;&#1099;&#1083;&#1072; %s &#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1090;&#1077;&#1083;&#1077;&#1084; %s
+text_with_comment: &#1089; &#1082;&#1086;&#1084;&#1084;&#1077;&#1085;&#1090;&#1072;&#1088;&#1080;&#1077;&#1084; '%s'
 text_workflow_edit: &#1042;&#1099;&#1073;&#1077;&#1088;&#1080;&#1090;&#1077; &#1088;&#1086;&#1083;&#1100; &#1080; &#1090;&#1088;&#1077;&#1082;&#1077;&#1088; &#1076;&#1083;&#1103; &#1088;&#1077;&#1076;&#1072;&#1082;&#1090;&#1080;&#1088;&#1086;&#1074;&#1072;&#1085;&#1080;&#1103; &#1087;&#1086;&#1089;&#1083;&#1077;&#1076;&#1086;&#1074;&#1072;&#1090;&#1077;&#1083;&#1100;&#1085;&#1086;&#1089;&#1090;&#1080; &#1089;&#1086;&#1089;&#1090;&#1086;&#1103;&#1085;&#1080;&#1081;
 
 warning_attachments_not_saved: &quot;%d file(s) could not be saved.&quot;</diff>
      <filename>lang/ru.yml</filename>
    </modified>
    <modified>
      <diff>@@ -203,7 +203,28 @@ class MailerTest &lt; Test::Unit::TestCase
       assert Mailer.deliver_message_posted(message, recipients)
     end
   end
+
+  wiki_remove_tester = lambda do |page, context|
+    context.assert Mailer.deliver_wiki_remove(page, User.find(1))
+  end
   
+  [:add, :edit, [:remove, wiki_remove_tester]].each do |action, custom_tester|
+    define_method 'test_wiki_%s' % action do
+      page = WikiPage.find(1)
+      GLoc.valid_languages.each do |lang|
+        Setting.default_language = lang.to_s
+        [true, false].each do |plain|
+          Setting.plain_text_mail = plain
+          if custom_tester
+            custom_tester.call(page, self)
+          else
+            assert Mailer.send('deliver_wiki_%s' % action, page.content)
+          end
+        end
+      end
+    end
+  end
+
   def test_account_information
     user = User.find(:first)
     GLoc.valid_languages.each do |lang|</diff>
      <filename>test/unit/mailer_test.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>c8aab89b1d1de59dc6648ebc0c69f13eb102f8e2</id>
    </parent>
  </parents>
  <author>
    <name>Artem Vasiliev</name>
    <email>artem.vasiliev@texunatech.com</email>
  </author>
  <url>http://github.com/artemv/redmine_tt/commit/504e44c68b6d7580c3e5b415e549e75ab94ef39d</url>
  <id>504e44c68b6d7580c3e5b415e549e75ab94ef39d</id>
  <committed-date>2009-01-21T07:20:54-08:00</committed-date>
  <authored-date>2009-01-21T07:20:54-08:00</authored-date>
  <message>Wiki notification on:
* creation
* removal
* edit</message>
  <tree>5edc6e2720b0937b1e4aa0350f40ef47dc10a3ad</tree>
  <committer>
    <name>Artem Vasiliev</name>
    <email>artem.vasiliev@texunatech.com</email>
  </committer>
</commit>
