]> source.dussan.org Git - redmine.git/commitdiff
Don't display default watchers checkboxes on the new issue form when there are more...
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 19 Jan 2014 10:01:14 +0000 (10:01 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 19 Jan 2014 10:01:14 +0000 (10:01 +0000)
git-svn-id: http://svn.redmine.org/redmine/trunk@12673 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/controllers/issues_controller.rb
app/controllers/watchers_controller.rb
app/views/watchers/_new.html.erb
app/views/watchers/create.js.erb
app/views/watchers/new.js.erb

index f89298c4ce06c5722ee49a41cb2bf0e2af5ba0ed..7f40be7d7068cc5f67457fa1dd1063b21b5f212b 100644 (file)
@@ -428,7 +428,10 @@ class IssuesController < ApplicationController
 
     @priorities = IssuePriority.active
     @allowed_statuses = @issue.new_statuses_allowed_to(User.current, @issue.new_record?)
-    @available_watchers = (@issue.project.users.sort + @issue.watcher_users).uniq
+    @available_watchers = @issue.watcher_users
+    if @issue.project.users.count <= 20
+      @available_watchers = (@available_watchers + @issue.project.users.sort).uniq
+    end
   end
 
   def check_for_default_issue_status
index 325e9e9f2bc074b19ccf0670505ccad572c164bc..13f1f35c6d199d55fdea70de72b54b82c5e9240b 100644 (file)
@@ -30,6 +30,7 @@ class WatchersController < ApplicationController
   accept_api_auth :create, :destroy
 
   def new
+    @users = users_for_new_watcher
   end
 
   def create
@@ -44,7 +45,7 @@ class WatchersController < ApplicationController
     end
     respond_to do |format|
       format.html { redirect_to_referer_or {render :text => 'Watcher added.', :layout => true}}
-      format.js
+      format.js { @users = users_for_new_watcher }
       format.api { render_api_ok }
     end
   end
@@ -66,10 +67,7 @@ class WatchersController < ApplicationController
   end
 
   def autocomplete_for_user
-    @users = User.active.sorted.like(params[:q]).limit(100).all
-    if @watched
-      @users -= @watched.watcher_users
-    end
+    @users = users_for_new_watcher
     render :layout => false
   end
 
@@ -106,4 +104,17 @@ class WatchersController < ApplicationController
       format.js { render :partial => 'set_watcher', :locals => {:user => user, :watched => watchables} }
     end
   end
+
+  def users_for_new_watcher
+    users = []
+    if params[:q].blank? && @project.present?
+      users = @project.users.sorted
+    else
+      users = User.active.sorted.like(params[:q]).limit(100)
+    end
+    if @watched
+      users -= @watched.watcher_users
+    end
+    users
+  end
 end
index e3443a1cd5610b0e238147deaaf5c16974ba6853..6282d59aa0da7b122c10cc484165ebcfd29e1888 100644 (file)
                  :project_id => @project) }')" %>
 
   <div id="users_for_watcher">
-    <%= principals_check_box_tags(
-            'watcher[user_ids][]',
-            (watched ?
-               watched.addable_watcher_users : User.active.limit(100).all)
-           ) %>
+    <%= principals_check_box_tags('watcher[user_ids][]', users) %>
   </div>
 
   <p class="buttons">
index 0f7e15a00ad7d45dd98f5133be162b623008764b..ba8e580af470d1b148e30727207f6cc3a10697c4 100644 (file)
@@ -1,2 +1,2 @@
-$('#ajax-modal').html('<%= escape_javascript(render(:partial => 'watchers/new', :locals => {:watched => @watched})) %>');
+$('#ajax-modal').html('<%= escape_javascript(render(:partial => 'watchers/new', :locals => {:watched => @watched, :users => @users})) %>');
 $('#watchers').html('<%= escape_javascript(render(:partial => 'watchers/watchers', :locals => {:watched => @watched})) %>');
index 6b99f657eaa862b550b8343e4d8c7a8413e479d5..8ff5dacc98253250e3b6eb6b7f32bbac53fd1c6f 100644 (file)
@@ -1,3 +1,3 @@
-$('#ajax-modal').html('<%= escape_javascript(render :partial => 'watchers/new', :locals => {:watched => @watched}) %>');
+$('#ajax-modal').html('<%= escape_javascript(render :partial => 'watchers/new', :locals => {:watched => @watched, :users => @users}) %>');
 showModal('ajax-modal', '400px');
 $('#ajax-modal').addClass('new-watcher');