##// END OF EJS Templates
Don't add the inclusion error when tracker is not set, the blank error is enough....
Don't add the inclusion error when tracker is not set, the blank error is enough. git-svn-id: http://svn.redmine.org/redmine/trunk@15492 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r14932:933dc946d4ba
r15110:90d14b71b365
Show More
watchers_controller.rb
149 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
Jean-Philippe Lang
Updates copyright for 2016....
r14856 # Copyright (C) 2006-2016 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
Bulk watch/unwatch issues from the context menu (#7159)....
r11109 before_filter :require_login, :find_watchables, :only => [:watch, :unwatch]
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
Bulk watch/unwatch issues from the context menu (#7159)....
r11109 set_watcher(@watchables, User.current, true)
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
Jean-Philippe Lang
Bulk watch/unwatch issues from the context menu (#7159)....
r11109 set_watcher(@watchables, 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
Bulk watch/unwatch issues from the context menu (#7159)....
r11109 before_filter :find_project, :authorize, :only => [:new, :create, :append, :destroy, :autocomplete_for_user]
accept_api_auth :create, :destroy
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
Don't display default watchers checkboxes on the new issue form when there are more than 20 members (#8562)....
r12398 @users = users_for_new_watcher
Jean-Philippe Lang
Ability to add non-member users as watchers (#5159)....
r8472 end
def create
Jean-Philippe Lang
Add/remove issue watchers via the REST API (#6727)....
r11060 user_ids = []
if params[:watcher].is_a?(Hash)
user_ids << (params[:watcher][:user_ids] || params[:watcher][:user_id])
else
user_ids << params[:user_id]
end
Jean-Philippe Lang
Adds a role setting for controlling visibility of users: all or members of visible projects (#11724)....
r13202 users = User.active.visible.where(:id => user_ids.flatten.compact.uniq)
users.each do |user|
Jean-Philippe Lang
Allow addition of watchers via bulk edit context menu (#5754)....
r14929 @watchables.each do |watchable|
Watcher.create(:watchable => watchable, :user => user)
end
Jean-Philippe Lang
Ability to add non-member users as watchers (#5159)....
r8472 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
Code cleanup....
r9229 format.html { redirect_to_referer_or {render :text => 'Watcher added.', :layout => true}}
Jean-Philippe Lang
Don't display default watchers checkboxes on the new issue form when there are more than 20 members (#8562)....
r12398 format.js { @users = users_for_new_watcher }
Jean-Philippe Lang
Add/remove issue watchers via the REST API (#6727)....
r11060 format.api { render_api_ok }
Jean-Philippe Lang
Added watchers for message boards (watchers controller modified to support any watchable model)....
r527 end
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]]
Jean-Philippe Lang
Adds a role setting for controlling visibility of users: all or members of visible projects (#11724)....
r13202 @users = User.active.visible.where(:id => user_ids).to_a
Jean-Philippe Lang
Ability to add non-member watchers on issue creation (#5159)....
r9134 end
Jean-Philippe Lang
Fixed: Error generated on 'search for watchers to add' after clicking add without selected users (#14298)....
r12710 if @users.blank?
render :nothing => true
end
Jean-Philippe Lang
Ability to add non-member watchers on issue creation (#5159)....
r9134 end
Jean-Philippe Lang
Add a permission to remove issue watchers (#2450)....
r2863 def destroy
Jean-Philippe Lang
Allow addition of watchers via bulk edit context menu (#5754)....
r14929 user = User.find(params[:user_id])
@watchables.each do |watchable|
watchable.set_watcher(user, false)
end
Jean-Philippe Lang
Add a permission to remove issue watchers (#2450)....
r2863 respond_to do |format|
format.html { redirect_to :back }
Jean-Philippe Lang
Removes RJS from WatchersController....
r9864 format.js
Jean-Philippe Lang
Add/remove issue watchers via the REST API (#6727)....
r11060 format.api { render_api_ok }
Jean-Philippe Lang
Add a permission to remove issue watchers (#2450)....
r2863 end
Jean-Philippe Lang
Fixed that user with permission can't remove a locked watcher (#21382)....
r14564 rescue ActiveRecord::RecordNotFound
render_404
Jean-Philippe Lang
Add a permission to remove issue watchers (#2450)....
r2863 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
Don't display default watchers checkboxes on the new issue form when there are more than 20 members (#8562)....
r12398 @users = users_for_new_watcher
Jean-Philippe Lang
Ability to add non-member users as watchers (#5159)....
r8472 render :layout => false
end
Jean-Philippe Lang
Bulk watch/unwatch issues from the context menu (#7159)....
r11109 private
Jean-Philippe Lang
Added "Watch" functionality on issues. It allows users to receive mail notifications about issue changes....
r450 def find_project
Jean-Philippe Lang
Ability to add non-member watchers on issue creation (#5159)....
r9134 if params[:object_type] && params[:object_id]
Jean-Philippe Lang
Allow addition of watchers via bulk edit context menu (#5754)....
r14929 @watchables = find_objets_from_params
@projects = @watchables.map(&:project).uniq
if @projects.size == 1
@project = @projects.first
end
Jean-Philippe Lang
Ability to add non-member watchers on issue creation (#5159)....
r9134 elsif params[:project_id]
Jean-Philippe Lang
Merged rails-3.2 branch....
r9346 @project = Project.visible.find_by_param(params[:project_id])
Jean-Philippe Lang
Ability to add non-member watchers on issue creation (#5159)....
r9134 end
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
Bulk watch/unwatch issues from the context menu (#7159)....
r11109 def find_watchables
Jean-Philippe Lang
Allow addition of watchers via bulk edit context menu (#5754)....
r14929 @watchables = find_objets_from_params
unless @watchables.present?
render_404
Jean-Philippe Lang
Bulk watch/unwatch issues from the context menu (#7159)....
r11109 end
end
def set_watcher(watchables, user, watching)
watchables.each do |watchable|
watchable.set_watcher(user, watching)
end
Jean-Philippe Lang
Adds permissions for viewing the watcher list and adding new watchers on the issue detail view (#398)....
r1711 respond_to do |format|
Jean-Philippe Lang
Code cleanup....
r9229 format.html { redirect_to_referer_or {render :text => (watching ? 'Watcher added.' : 'Watcher removed.'), :layout => true}}
Jean-Philippe Lang
Bulk watch/unwatch issues from the context menu (#7159)....
r11109 format.js { render :partial => 'set_watcher', :locals => {:user => user, :watched => watchables} }
Jean-Philippe Lang
Adds permissions for viewing the watcher list and adding new watchers on the issue detail view (#398)....
r1711 end
end
Jean-Philippe Lang
Don't display default watchers checkboxes on the new issue form when there are more than 20 members (#8562)....
r12398
def users_for_new_watcher
Jean-Philippe Lang
Adds a role setting for controlling visibility of users: all or members of visible projects (#11724)....
r13202 scope = nil
Jean-Philippe Lang
Don't display default watchers checkboxes on the new issue form when there are more than 20 members (#8562)....
r12398 if params[:q].blank? && @project.present?
Jean-Philippe Lang
Adds a role setting for controlling visibility of users: all or members of visible projects (#11724)....
r13202 scope = @project.users
Jean-Philippe Lang
Don't display default watchers checkboxes on the new issue form when there are more than 20 members (#8562)....
r12398 else
Jean-Philippe Lang
Adds a role setting for controlling visibility of users: all or members of visible projects (#11724)....
r13202 scope = User.all.limit(100)
Jean-Philippe Lang
Don't display default watchers checkboxes on the new issue form when there are more than 20 members (#8562)....
r12398 end
Jean-Philippe Lang
Adds a role setting for controlling visibility of users: all or members of visible projects (#11724)....
r13202 users = scope.active.visible.sorted.like(params[:q]).to_a
Jean-Philippe Lang
Don't reject users that already watch one of the objects (#5754)....
r14931 if @watchables && @watchables.size == 1
users -= @watchables.first.watcher_users
Jean-Philippe Lang
Don't display default watchers checkboxes on the new issue form when there are more than 20 members (#8562)....
r12398 end
users
end
Jean-Philippe Lang
Allow addition of watchers via bulk edit context menu (#5754)....
r14929
def find_objets_from_params
klass = Object.const_get(params[:object_type].camelcase) rescue nil
return unless klass && klass.respond_to?('watched_by')
Jean-Philippe Lang
Preload project when possible (#5754)....
r14932 scope = klass.where(:id => Array.wrap(params[:object_id]))
if klass.reflect_on_association(:project)
scope = scope.preload(:project => :enabled_modules)
end
objects = scope.to_a
Jean-Philippe Lang
Allow addition of watchers via bulk edit context menu (#5754)....
r14929 raise Unauthorized if objects.any? do |w|
if w.respond_to?(:visible?)
!w.visible?
elsif w.respond_to?(:project) && w.project
!w.project.visible?
end
end
objects
end
Jean-Philippe Lang
Added "Watch" functionality on issues. It allows users to receive mail notifications about issue changes....
r450 end