summaryrefslogtreecommitdiffstats
path: root/app/controllers
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2007-05-13 19:43:35 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2007-05-13 19:43:35 +0000
commitbca5bd9c62769ca85f00259ac0e9a3c4538f7051 (patch)
treea14630132f58878681cc416aa86b20a8d448923c /app/controllers
parentb90e84b9fe252df464d084f0222c65367407a4ba (diff)
downloadredmine-bca5bd9c62769ca85f00259ac0e9a3c4538f7051.tar.gz
redmine-bca5bd9c62769ca85f00259ac0e9a3c4538f7051.zip
Added watchers for message boards (watchers controller modified to support any watchable model).
No notification yet when a new message is posted. git-svn-id: http://redmine.rubyforge.org/svn/trunk@530 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app/controllers')
-rw-r--r--app/controllers/boards_controller.rb2
-rw-r--r--app/controllers/issues_controller.rb2
-rw-r--r--app/controllers/watchers_controller.rb25
3 files changed, 22 insertions, 7 deletions
diff --git a/app/controllers/boards_controller.rb b/app/controllers/boards_controller.rb
index b3be6b7a2..0ad2645f8 100644
--- a/app/controllers/boards_controller.rb
+++ b/app/controllers/boards_controller.rb
@@ -25,6 +25,8 @@ class BoardsController < ApplicationController
include MessagesHelper
helper :sort
include SortHelper
+ helper :watchers
+ include WatchersHelper
def index
@boards = @project.boards
diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb
index cec126dd3..0a8d19a31 100644
--- a/app/controllers/issues_controller.rb
+++ b/app/controllers/issues_controller.rb
@@ -27,6 +27,8 @@ class IssuesController < ApplicationController
include IfpdfHelper
helper :issue_relations
include IssueRelationsHelper
+ helper :watchers
+ include WatchersHelper
def show
@status_options = @issue.status.find_new_statuses_allowed_to(logged_in_user.role_for_project(@project), @issue.tracker) if logged_in_user
diff --git a/app/controllers/watchers_controller.rb b/app/controllers/watchers_controller.rb
index 09ec5bcd7..f617a5b5a 100644
--- a/app/controllers/watchers_controller.rb
+++ b/app/controllers/watchers_controller.rb
@@ -20,19 +20,30 @@ class WatchersController < ApplicationController
before_filter :require_login, :find_project, :check_project_privacy
def add
- @issue.add_watcher(logged_in_user)
- redirect_to :controller => 'issues', :action => 'show', :id => @issue
+ user = logged_in_user
+ @watched.add_watcher(user)
+ respond_to do |format|
+ format.html { render :text => 'Watcher added.', :layout => true }
+ format.js { render(:update) {|page| page.replace_html 'watcher', watcher_link(@watched, user)} }
+ end
end
def remove
- @issue.remove_watcher(logged_in_user)
- redirect_to :controller => 'issues', :action => 'show', :id => @issue
+ user = logged_in_user
+ @watched.remove_watcher(user)
+ respond_to do |format|
+ format.html { render :text => 'Watcher removed.', :layout => true }
+ format.js { render(:update) {|page| page.replace_html 'watcher', watcher_link(@watched, user)} }
+ end
end
private
-
def find_project
- @issue = Issue.find(params[:issue_id])
- @project = @issue.project
+ klass = Object.const_get(params[:object_type].camelcase)
+ return false unless klass.respond_to?('watched_by')
+ @watched = klass.find(params[:object_id])
+ @project = @watched.project
+ rescue
+ render_404
end
end