##// END OF EJS Templates
set default category_id instead of the object (#11665)...
set default category_id instead of the object (#11665) Rails 2.3 still has issues with synchronizing the association_id and association attributes of an object. That means, if you set the association with an object first and then just set the id afterwards, the object wins and the setting of the id gets lost. This is not an issue in Rails >= 3.1 anymore. Contributed by Holger Just. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.4-stable@10226 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r9189:d36d64f6648e
r10043:14dcefaa97f9
Show More
watchers_controller.rb
136 lines | 4.3 KiB | text/x-ruby | RubyLexer
/ app / controllers / watchers_controller.rb
Jean-Philippe Lang
Cleaner way to handle the replacement of watch links (#8071)....
r5200 # Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
Jean-Philippe Lang
Added "Watch" functionality on issues. It allows users to receive mail notifications about issue changes....
r450 #
# 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.
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/watchers_controller.rb....
r6684 #
Jean-Philippe Lang
Added "Watch" functionality on issues. It allows users to receive mail notifications about issue changes....
r450 # 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.
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/watchers_controller.rb....
r6684 #
Jean-Philippe Lang
Added "Watch" functionality on issues. It allows users to receive mail notifications about issue changes....
r450 # 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 WatchersController < ApplicationController
Jean-Philippe Lang
Adds permissions for viewing the watcher list and adding new watchers on the issue detail view (#398)....
r1711 before_filter :find_project
before_filter :require_login, :check_project_privacy, :only => [:watch, :unwatch]
Jean-Philippe Lang
Add a permission to remove issue watchers (#2450)....
r2863 before_filter :authorize, :only => [:new, :destroy]
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/watchers_controller.rb....
r6684
Jean-Philippe Lang
Adds permissions for viewing the watcher list and adding new watchers on the issue detail view (#398)....
r1711 def watch
Jean-Philippe Lang
Make sure user can not watch what he is not allowed to view....
r3056 if @watched.respond_to?(:visible?) && !@watched.visible?(User.current)
render_403
else
set_watcher(User.current, true)
end
Jean-Philippe Lang
Adds permissions for viewing the watcher list and adding new watchers on the issue detail view (#398)....
r1711 end
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/watchers_controller.rb....
r6684
Jean-Philippe Lang
Adds permissions for viewing the watcher list and adding new watchers on the issue detail view (#398)....
r1711 def unwatch
set_watcher(User.current, false)
Jean-Philippe Lang
Added "Watch" functionality on issues. It allows users to receive mail notifications about issue changes....
r450 end
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/watchers_controller.rb....
r6684
Jean-Philippe Lang
Adds permissions for viewing the watcher list and adding new watchers on the issue detail view (#398)....
r1711 def new
Jean-Philippe Lang
Ability to add non-member users as watchers (#5159)....
r8472 respond_to do |format|
format.js do
render :update do |page|
page.replace_html 'ajax-modal', :partial => 'watchers/new', :locals => {:watched => @watched}
page << "showModal('ajax-modal', '400px');"
Jean-Philippe Lang
Avoid an AJAX query if the watchers form is already loaded....
r8473 page << "$('ajax-modal').addClassName('new-watcher');"
Jean-Philippe Lang
Ability to add non-member users as watchers (#5159)....
r8472 end
end
end
end
def create
if params[:watcher].is_a?(Hash) && request.post?
user_ids = params[:watcher][:user_ids] || [params[:watcher][:user_id]]
user_ids.each do |user_id|
Watcher.create(:watchable => @watched, :user_id => user_id)
end
end
Jean-Philippe Lang
Added watchers for message boards (watchers controller modified to support any watchable model)....
r527 respond_to do |format|
Jean-Philippe Lang
Redirects back after clicking watch/unwatch links without javascript (#1337)....
r1593 format.html { redirect_to :back }
Jean-Philippe Lang
Adds permissions for viewing the watcher list and adding new watchers on the issue detail view (#398)....
r1711 format.js do
render :update do |page|
Jean-Philippe Lang
Ability to add non-member users as watchers (#5159)....
r8472 page.replace_html 'ajax-modal', :partial => 'watchers/new', :locals => {:watched => @watched}
Jean-Philippe Lang
Adds permissions for viewing the watcher list and adding new watchers on the issue detail view (#398)....
r1711 page.replace_html 'watchers', :partial => 'watchers/watchers', :locals => {:watched => @watched}
end
end
Jean-Philippe Lang
Added watchers for message boards (watchers controller modified to support any watchable model)....
r527 end
Jean-Philippe Lang
Adds permissions for viewing the watcher list and adding new watchers on the issue detail view (#398)....
r1711 rescue ::ActionController::RedirectBackError
render :text => 'Watcher added.', :layout => true
Jean-Philippe Lang
Added "Watch" functionality on issues. It allows users to receive mail notifications about issue changes....
r450 end
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/watchers_controller.rb....
r6684
Jean-Philippe Lang
Ability to add non-member watchers on issue creation (#5159)....
r9134 def append
if params[:watcher].is_a?(Hash)
user_ids = params[:watcher][:user_ids] || [params[:watcher][:user_id]]
users = User.active.find_all_by_id(user_ids)
respond_to do |format|
format.js do
render :update do |page|
users.each do |user|
Jean-Philippe Lang
Failing test with 1.8.7 and jruby (#10538)....
r9142 page.select("#issue_watcher_user_ids_#{user.id}").each do |item|
page.remove item
end
Jean-Philippe Lang
Ability to add non-member watchers on issue creation (#5159)....
r9134 end
page.insert_html :bottom, 'watchers_inputs', :text => watchers_checkboxes(nil, users, true)
end
end
end
end
end
Jean-Philippe Lang
Add a permission to remove issue watchers (#2450)....
r2863 def destroy
@watched.set_watcher(User.find(params[:user_id]), false) if request.post?
respond_to do |format|
format.html { redirect_to :back }
format.js do
render :update do |page|
page.replace_html 'watchers', :partial => 'watchers/watchers', :locals => {:watched => @watched}
end
end
end
end
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/watchers_controller.rb....
r6684
Jean-Philippe Lang
Ability to add non-member users as watchers (#5159)....
r8472 def autocomplete_for_user
Jean-Philippe Lang
Ability to add non-member watchers on issue creation (#5159)....
r9134 @users = User.active.like(params[:q]).find(:all, :limit => 100)
if @watched
Etienne Massip
Fixed Internal Error in watchers XHR search (#10600)....
r9189 @users -= @watched.watcher_users
Jean-Philippe Lang
Ability to add non-member watchers on issue creation (#5159)....
r9134 end
Jean-Philippe Lang
Ability to add non-member users as watchers (#5159)....
r8472 render :layout => false
end
Jean-Philippe Lang
Added "Watch" functionality on issues. It allows users to receive mail notifications about issue changes....
r450 private
def find_project
Jean-Philippe Lang
Ability to add non-member watchers on issue creation (#5159)....
r9134 if params[:object_type] && params[:object_id]
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
elsif params[:project_id]
@project = Project.visible.find(params[:project_id])
end
Jean-Philippe Lang
Added watchers for message boards (watchers controller modified to support any watchable model)....
r527 rescue
render_404
Jean-Philippe Lang
Added "Watch" functionality on issues. It allows users to receive mail notifications about issue changes....
r450 end
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/watchers_controller.rb....
r6684
Jean-Philippe Lang
Adds permissions for viewing the watcher list and adding new watchers on the issue detail view (#398)....
r1711 def set_watcher(user, watching)
@watched.set_watcher(user, watching)
respond_to do |format|
format.html { redirect_to :back }
Eric Davis
Add a second action menu to IssuesController#show. (#4331)...
r3005 format.js do
render(:update) do |page|
Jean-Philippe Lang
Cleaner way to handle the replacement of watch links (#8071)....
r5200 c = watcher_css(@watched)
page.select(".#{c}").each do |item|
page.replace_html item, watcher_link(@watched, user)
Eric Davis
Add a second action menu to IssuesController#show. (#4331)...
r3005 end
end
end
Jean-Philippe Lang
Adds permissions for viewing the watcher list and adding new watchers on the issue detail view (#398)....
r1711 end
rescue ::ActionController::RedirectBackError
render :text => (watching ? 'Watcher added.' : 'Watcher removed.'), :layout => true
end
Jean-Philippe Lang
Added "Watch" functionality on issues. It allows users to receive mail notifications about issue changes....
r450 end