Project

General

Profile

Defect #4334 » watchers_list_refresh_patch.diff

Marcin Świątkiewicz, 2014-10-21 12:35

View differences:

app/controllers/watchers_controller.rb
17 17

  
18 18
class WatchersController < ApplicationController
19 19
  before_filter :require_login, :find_watchables, :only => [:watch, :unwatch]
20
  before_filter :find_project, :only => [:new, :create, :append, :destroy, :autocomplete_for_user, :watch, :unwatch]
21
  before_filter :authorize, :only => [:new, :create, :append, :destroy, :autocomplete_for_user]
20 22

  
21 23
  def watch
22 24
    set_watcher(@watchables, User.current, true)
......
26 28
    set_watcher(@watchables, User.current, false)
27 29
  end
28 30

  
29
  before_filter :find_project, :authorize, :only => [:new, :create, :append, :destroy, :autocomplete_for_user]
30 31
  accept_api_auth :create, :destroy
31 32

  
32 33
  def new
......
40 41
    else
41 42
      user_ids << params[:user_id]
42 43
    end
43
    user_ids.flatten.compact.uniq.each do |user_id|
44
    user_ids = user_ids.flatten.compact.uniq.map(&:to_i) & users_for_new_watcher.map(&:id)
45
    user_ids.each do |user_id|
44 46
      Watcher.create(:watchable => @watched, :user_id => user_id)
45 47
    end
46 48
    respond_to do |format|
......
116 118

  
117 119
  def users_for_new_watcher
118 120
    users = []
119
    if params[:q].blank? && @project.present?
120
      users = @project.users.sorted
121
    else
122
      users = User.active.sorted.like(params[:q]).limit(100)
121
    if @project.present?
122
      if params[:q].blank?
123
        users = @project.users.sorted
124
      else
125
        users = @project.users.sorted.like(params[:q]).limit(10)
126
      end
123 127
    end
124 128
    if @watched
125 129
      users -= @watched.watcher_users
app/helpers/watchers_helper.rb
52 52
  def watchers_list(object)
53 53
    remove_allowed = User.current.allowed_to?("delete_#{object.class.name.underscore}_watchers".to_sym, object.project)
54 54
    content = ''.html_safe
55
    object.reload
55 56
    lis = object.watcher_users.collect do |user|
56 57
      s = ''.html_safe
57 58
      s << avatar(user, :size => "16").to_s
app/views/watchers/_set_watcher.js.erb
1 1
<% selector = ".#{watcher_css(watched)}" %>
2 2
$("<%= selector %>").each(function(){$(this).replaceWith("<%= escape_javascript watcher_link(watched, user) %>")});
3
$('#watchers').html('<%= escape_javascript(render(:partial => 'watchers/watchers', :locals => {:watched => watched.first})) %>');
app/views/watchers/_watchers.html.erb
1
<% watched.reload %>
1 2
<% if User.current.allowed_to?(:add_issue_watchers, @project) %>
2 3
<div class="contextual">
3 4
<%= link_to l(:button_add),
app/views/watchers/destroy.js.erb
1 1
$('#watchers').html('<%= escape_javascript(render(:partial => 'watchers/watchers', :locals => {:watched => @watched})) %>');
2
<% selector = ".#{watcher_css(@watched)}" %>
3
$("<%= selector %>").each(function(){$(this).replaceWith("<%= escape_javascript watcher_link(@watched, User.current) %>")});
    (1-1/1)