diff --git a/app/controllers/watchers_controller.rb b/app/controllers/watchers_controller.rb index 6c61f1970..096e44f06 100644 --- a/app/controllers/watchers_controller.rb +++ b/app/controllers/watchers_controller.rb @@ -15,13 +15,37 @@ # 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 - before_filter :require_login, :find_watchables, :only => [:watch, :unwatch] + before_filter :require_login#, :find_watchables, :only => [:watch, :unwatch] def watch - set_watcher(@watchables, User.current, true) + s = Service.new + watchables = s.watch params.merge(:current_user_id => User.current.id) + respond_to do |format| + format.html { redirect_to_referer_or {render :text => (true ? 'Watcher added.' : 'Watcher removed.'), :layout => true}} + format.js { render :partial => 'set_watcher', :locals => {:user => User.current, :watched => watchables} } + end + rescue Exception => e + if e.message == "404" + render_404 + else + raise e + end + #set_watcher(@watchables, User.current, true) end def unwatch - set_watcher(@watchables, User.current, false) + s = Service.new + watchables = s.unwatch params.merge(:current_user_id => User.current.id) + respond_to do |format| + format.html { redirect_to_referer_or {render :text => (false ? 'Watcher added.' : 'Watcher removed.'), :layout => true}} + format.js { render :partial => 'set_watcher', :locals => {:user => User.current, :watched => watchables} } + end + rescue Exception => e + if e.message == "404" + render_404 + else + raise e + end + #set_watcher(@watchables, User.current, false) end def join diff --git a/app/services/service.rb b/app/services/service.rb index c4eb4bc1c..413d9bfb8 100644 --- a/app/services/service.rb +++ b/app/services/service.rb @@ -1,15 +1,20 @@ class Service def watch params + @current_user = User.find(params[:current_user_id]) @watchables = find_watchables params if @watchables.nil? - + raise '404' end - set_watcher(@watchables, User.current, true) + set_watcher(@watchables, @current_user, true) end def unwatch params - find_watchables params - set_watcher(@watchables, User.current, false) + @current_user = User.find(params[:current_user_id]) + @watchables = find_watchables params + if @watchables.nil? + raise '404' + end + set_watcher(@watchables, @current_user, false) end def find_watchables params @@ -47,5 +52,6 @@ class Service end end end + watchables end end \ No newline at end of file