]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-2443 Improve the assignee select-box in the resource viewer
authorFabrice Bellingard <bellingard@gmail.com>
Tue, 24 May 2011 16:03:33 +0000 (18:03 +0200)
committerFabrice Bellingard <bellingard@gmail.com>
Tue, 24 May 2011 17:03:19 +0000 (19:03 +0200)
For:
- creating a review
- assigning a review

sonar-server/src/main/webapp/WEB-INF/app/controllers/reviews_controller.rb
sonar-server/src/main/webapp/WEB-INF/app/views/autocomplete/_text_field.html.erb
sonar-server/src/main/webapp/WEB-INF/app/views/resource/_violation.html.erb
sonar-server/src/main/webapp/WEB-INF/app/views/reviews/_assign_form.html.erb
sonar-server/src/main/webapp/WEB-INF/app/views/reviews/_violation_assign_form.html.erb
sonar-server/src/main/webapp/WEB-INF/app/views/reviews/_violation_comment_form.html.erb
sonar-server/src/main/webapp/stylesheets/style.css

index 8ab6f3a2f7478bd07af71c7856b4bf4d632b2634..742b81c7d2f47804e3adec51028e0c94b98535a6 100644 (file)
@@ -61,7 +61,6 @@ class ReviewsController < ApplicationController
 
   # GET
   def assign_form
-    @user_options = options_for_users()
     render :partial => "assign_form"
   end
 
@@ -163,7 +162,6 @@ class ReviewsController < ApplicationController
 
   # GET
   def violation_assign_form
-    @user_options = options_for_users()
     render :partial => "violation_assign_form"
   end
 
@@ -220,7 +218,6 @@ class ReviewsController < ApplicationController
     if !params[:comment_id].blank? && @violation.review
       @comment = @violation.review.comments.find(params[:comment_id])
     end
-    @user_options = [["Unassigned", ""]] + options_for_users
     render :partial => 'reviews/violation_comment_form'
   end
 
@@ -269,7 +266,6 @@ class ReviewsController < ApplicationController
   private
 
   def init_params
-    @user_names = [["Any", ""]] + options_for_users
     default_user = (current_user ? current_user.id : '')
     @assignee_id = params[:assignee_id] || default_user
     @author_id = params[:author_id] || ''
@@ -281,18 +277,6 @@ class ReviewsController < ApplicationController
     @asc = params[:asc] == "true"
   end
 
-  def options_for_users
-    options=[]
-    User.find( :all ).each do |user|
-      username = user.name
-      if current_user && current_user.id == user.id
-        username = "Me (" + user.name + ")"
-      end
-      options<<[username, user.id.to_s]
-    end
-    options
-  end
-
   def filter_any(array)
     if array && array.size>1 && array.include?("")
       array=[""]
index 393007219de94cfa7c5799df41506abf86fc361e..5f37632ba08e14598368d0dd041e5f322b05fdb6 100644 (file)
@@ -1,4 +1,4 @@
-  <input type="text" id="autocompleteText-<%= param_id_name -%>" value="<%= param_displayed_value -%>" onkeyup="if (this.value=='') $('<%= param_id_name -%>').value='';"/>
+  <input type="text" id="autocompleteText-<%= param_id_name -%>" value="<%= param_displayed_value -%>" onfocus="$('<%= param_id_name -%>').value=''; this.value=''"/>
   <input type="hidden" id="<%= param_id_name -%>" name="<%= param_id_name -%>" value="<%= param_id_value -%>"/>
   <span id="load-<%= param_id_name -%>" style="display: none">
     <%= image_tag("loading.gif") -%>
index 25989a7b1e000e1e7597d0a2f74f23f8dc307acc..ef561c7e4a7a1fb75cd683a4884e6fdb178faad3 100644 (file)
@@ -76,7 +76,6 @@
   %>
   <div class="discussionComment">
     <h4><%= image_tag("reviews/comment.png") -%> &nbsp;<b><%= review_comment.user.name -%></b> (<%= distance_of_time_in_words_to_now(review_comment.created_at) -%>)
-    <!-- && current_user.id == review_comment.user_id -->
     <% if is_last_comment && current_user %>
       <span class="actions" id="commentActions<%= violation.id -%>">
         &nbsp;&nbsp;
index 7aff44c3d4cbf8438a422fc059c68818f9fec6aa..cd10d6b3691849024e3a6feb151d360c4a8139cf 100644 (file)
@@ -1,12 +1,17 @@
-<% form_tag :html => {:style => "display:inline"} do %>
+<form method="post"
+      onsubmit="if ($('assignee_id').value != '') { new Ajax.Updater('review', '<%= url_for :action => 'assign' -%>', {asynchronous:true, evalScripts:true, parameters:Form.serialize(this)}); };return false;">
   <%= hidden_field_tag :id, params[:review_id] -%>
-  <%= select_tag "assignee_id", options_for_select(@user_options, current_user.id.to_s)  %>
+  <%= user_autocomplete_field "assignee_id", "" -%>
   &nbsp;&nbsp;
   <%= submit_to_remote "submit_btn", "Assign", 
          :url => { :action => 'assign' },
-         :update => "review" -%>
+         :update => "review",
+         :condition => "$('assignee_id').value != ''" -%>
   &nbsp;&nbsp;
   <%= link_to_remote 'Cancel', 
          :url => { :action => 'show', :id => params[:review_id] },
          :update => "review" %>
-<% end %>
\ No newline at end of file
+  <script>
+       $('autocompleteText-assignee_id').focus()
+  </script>
+</form>
\ No newline at end of file
index 2b2b35030bb366861fe937111bb12ec9eca63eb9..039f66976c99ebda66374ed8cc85823ec8ad7d58 100644 (file)
@@ -1,14 +1,19 @@
 <%= image_tag("sep12.png") -%>
 &nbsp;&nbsp;
-<% form_tag :html => {:style => "display:inline"} do %>
+<form method="post"
+      onsubmit="if ($('assignee_id').value != '') { new Ajax.Updater('vId<%= params[:violation_id] -%>', '<%= url_for :action => 'violation_assign' -%>', {asynchronous:true, evalScripts:true, parameters:Form.serialize(this)}); };return false;">
   <%= hidden_field_tag :id, params[:violation_id] -%>
-  <%= select_tag "assignee_id", options_for_select(@user_options, current_user.id.to_s)  %>
+  <%= user_autocomplete_field "assignee_id", "" -%>
   &nbsp;&nbsp;
   <%= submit_to_remote "submit_btn", "Assign", 
          :url => { :action => 'violation_assign' },
-         :update => "vId" + params[:violation_id] -%>
+         :update => "vId" + params[:violation_id],
+         :condition => "$('assignee_id').value != ''" -%>
   &nbsp;&nbsp;
   <%= link_to_remote 'Cancel', 
          :url => { :action => 'display_violation', :id => params[:violation_id] },
          :update => "vId" + params[:violation_id] %>
-<% end %>
\ No newline at end of file
+  <script>
+       $('autocompleteText-assignee_id').focus()
+  </script>
+</form>
\ No newline at end of file
index 7c6a8d243521d423e21e6f57dd44c319baa22019..9072af34d4a505f5682273f2777abde26c2ecad3 100644 (file)
@@ -1,7 +1,8 @@
 <%
   button=(@comment ? 'Update comment' : 'Add comment')
 %>
-<form method="POST" action="violation_save_comment">
+<form method="POST"
+      onsubmit="new Ajax.Updater('vId<%= params[:id] -%>', '<%= url_for :action => 'violation_save_comment' -%>', {asynchronous:true, evalScripts:true, parameters:Form.serialize(this)});return false;">
   <input type="hidden" name="id" value="<%= params[:id] -%>"/>
   <% if @comment %>
     <input type="hidden" name="comment_id" value="<%= @comment.id -%>"/>
       <td style="vertical-align:top">
         <textarea id="commentText<%= params[:id] -%>" rows="8" name="text" style="width: 100%" onkeyup="if (this.value=='') $('submit_btn<%= params[:id] -%>').disabled='true'; else $('submit_btn<%= params[:id] -%>').disabled='';"><%= @comment.text if @comment -%></textarea>
         <br/>
-        <%= submit_to_remote "submit_btn"+params[:id] , button, :url => { :action => 'violation_save_comment'}, :html => { :id => "submit_btn"+params[:id], :disabled => "true" }, :update => 'vId'+params[:id] -%>
+        <%= submit_to_remote "submit_btn"+params[:id] , button, 
+                  :url => { :action => 'violation_save_comment'}, 
+                  :html => { :id => "submit_btn"+params[:id], :disabled => "true" }, 
+                  :update => 'vId'+params[:id] -%>
         &nbsp;
         <%= link_to_remote 'Cancel', :url => {:action => 'display_violation', :id => params[:id]}, :update => 'vId' + params[:id] -%>
 
         <% if @violation.review.nil? || @violation.review.comments.size==0 %>
           &nbsp;&nbsp;
-          <span>Assignee:</span> 
-          <%= select_tag "assignee_id", options_for_select(@user_options, current_user.id.to_s)  %>
+          <span>Assignee:</span>
+          <%= user_autocomplete_field "assignee_id", current_user.id -%>
         <% end %>
       </td>
       <td class="sep"></td>
index 6fa9beb0a19b312441de5ecf1b28e361131dff76..958e9b6eb4ea74acdce91c9324d8407ceada7033 100644 (file)
@@ -916,6 +916,7 @@ div.autocomplete {
   padding:0;
   color: #111;
   line-height: 1em;
+  text-shadow: none;
 }
 div.autocomplete ul {
   list-style-type:none;