]> source.dussan.org Git - redmine.git/commitdiff
Ability to watch a wiki or a single wiki page (#413).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Mon, 25 May 2009 19:02:28 +0000 (19:02 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Mon, 25 May 2009 19:02:28 +0000 (19:02 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2765 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/controllers/wiki_controller.rb
app/models/mailer.rb
app/models/wiki.rb
app/models/wiki_page.rb
app/views/wiki/show.rhtml
app/views/wiki/special_date_index.rhtml
app/views/wiki/special_page_index.rhtml

index 9c624462a6bfcfb7925162f362085ff28420074b..fd876cf049b91ef9a3561e4483b06af33d0ad609 100644 (file)
@@ -25,6 +25,7 @@ class WikiController < ApplicationController
 
   helper :attachments
   include AttachmentsHelper   
+  helper :watchers
   
   # display a page (in editing mode if it doesn't exist)
   def index
index 7619bfd2c840a42fc12391707e64fd26474f964c..fbe76ac3aa5bc103e07db55e475ed145e85d31b3 100644 (file)
@@ -163,6 +163,7 @@ class Mailer < ActionMailer::Base
                     'Wiki-Page-Id' => wiki_content.page.id
     message_id wiki_content
     recipients wiki_content.project.recipients
+    cc(wiki_content.page.wiki.watcher_recipients - 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)
@@ -178,6 +179,7 @@ class Mailer < ActionMailer::Base
                     'Wiki-Page-Id' => wiki_content.page.id
     message_id wiki_content
     recipients wiki_content.project.recipients
+    cc(wiki_content.page.wiki.watcher_recipients + wiki_content.page.watcher_recipients - 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),
index be048775aaa0b4e5d8ae76d9fc7bf36250abd3d2..b31b03482c7cf64e496b4bfc4f4ed84ac4ca527c 100644 (file)
@@ -1,5 +1,5 @@
-# redMine - project management software
-# Copyright (C) 2006-2007  Jean-Philippe Lang
+# 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
@@ -20,6 +20,8 @@ class Wiki < ActiveRecord::Base
   has_many :pages, :class_name => 'WikiPage', :dependent => :destroy, :order => 'title'
   has_many :redirects, :class_name => 'WikiRedirect', :dependent => :delete_all
   
+  acts_as_watchable
+  
   validates_presence_of :start_page
   validates_format_of :start_page, :with => /^[^,\.\/\?\;\|\:]*$/
   
index 19858dbd427a1c7e776b435aa82c276d62faccd3..d6009c2e3cce37684fae21656c168272cbe3244d 100644 (file)
@@ -1,5 +1,5 @@
-# redMine - project management software
-# Copyright (C) 2006-2007  Jean-Philippe Lang
+# 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
@@ -23,7 +23,8 @@ class WikiPage < ActiveRecord::Base
   has_one :content, :class_name => 'WikiContent', :foreign_key => 'page_id', :dependent => :destroy
   acts_as_attachable :delete_permission => :delete_wiki_pages_attachments
   acts_as_tree :dependent => :nullify, :order => 'title'
-  
+
+  acts_as_watchable
   acts_as_event :title => Proc.new {|o| "#{l(:label_wiki)}: #{o.title}"},
                 :description => :text,
                 :datetime => :created_on,
index 033c59160b5b69d78ed3205b943f4dce9be55d50..0ae8c10dca5422667da5fdc4a6cb6ee4815002fa 100644 (file)
@@ -1,6 +1,7 @@
 <div class="contextual">
 <% if @editable %>
 <%= link_to_if_authorized(l(:button_edit), {:action => 'edit', :page => @page.title}, :class => 'icon icon-edit', :accesskey => accesskey(:edit)) if @content.version == @page.content.version %>
+<%= watcher_tag(@page, User.current) %>
 <%= link_to_if_authorized(l(:button_lock), {:action => 'protect', :page => @page.title, :protected => 1}, :method => :post, :class => 'icon icon-lock') if !@page.protected? %>
 <%= link_to_if_authorized(l(:button_unlock), {:action => 'protect', :page => @page.title, :protected => 0}, :method => :post, :class => 'icon icon-unlock') if @page.protected? %>
 <%= link_to_if_authorized(l(:button_rename), {:action => 'rename', :page => @page.title}, :class => 'icon icon-move') if @content.version == @page.content.version %>
index 008f892935719b2c6d0420ffcb8f01cbc872781d..6bc2d56c205d507cd6c0f090b7cbd3312d9e06f5 100644 (file)
@@ -1,3 +1,7 @@
+<div class="contextual">
+<%= watcher_tag(@wiki, User.current) %>
+</div>
+
 <h2><%= l(:label_index_by_date) %></h2>
 
 <% if @pages.empty? %>
index 5547f5b1c0823596b8f9ce2d9ba02f42934126dc..a0670da3761270d3b4a1a14d909e3d71f2c0244b 100644 (file)
@@ -1,3 +1,7 @@
+<div class="contextual">
+<%= watcher_tag(@wiki, User.current) %>
+</div>
+
 <h2><%= l(:label_index_by_title) %></h2>
 
 <% if @pages.empty? %>