]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-2616 Improve the user auto-suggest box
authorFabrice Bellingard <bellingard@gmail.com>
Thu, 1 Sep 2011 13:52:34 +0000 (15:52 +0200)
committerFabrice Bellingard <bellingard@gmail.com>
Thu, 1 Sep 2011 13:52:34 +0000 (15:52 +0200)
Initial bug : when assigning a review, if assignee does not exist
an error message should appear.

plugins/sonar-l10n-en-plugin/src/main/resources/org/sonar/l10n/core.properties
sonar-server/src/main/webapp/WEB-INF/app/views/autocomplete/_text_field.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

index fa208995a46102854b97fb9221746926f2745afb..5cc94c9fa925e7b0e1a37259f7046468d4875623 100644 (file)
@@ -380,6 +380,7 @@ reviews.without_false_positives=Without false positives
 reviews.showing_false_positives_only=Showing false positives only
 reviews.why_false_positive=Why is it a false-positive ?
 reviews.why_not_false_positive=Why is it not a false-positive anymore ?
+reviews.user_does_not_exist=\ : user does not exist. \\nPlease select a valid user or leave the field blank.
 
 
 #------------------------------------------------------------------------------
index 2e9b6f047e7ebb45598395cd257d4dc481aa452a..bd2913043b8022628a61561ffbc5eb4d752e36ef 100644 (file)
@@ -1,17 +1,22 @@
   <input type="text" 
          id="autocompleteText-<%= param_id_name -%>" 
-         value="<%= param_displayed_value -%>" 
-         onfocus="$('<%= param_id_name -%>').value=''; this.value=''"
-         <%= "class=\"" + options[:class] + "\"" if options[:class] -%>/>
+         value="<%= param_displayed_value -%>"
+         <%= "class=\"" + options[:class] + "\"" if options[:class] -%>
+         onKeyUp="if (this.value.length== 0 || this.value.length== 1) $('<%= param_id_name -%>').value = '';"/>
   <input type="hidden" id="<%= param_id_name -%>" name="<%= param_id_name -%>" value="<%= param_id_value -%>"/>
   <div id="autocomplete-<%= param_id_name -%>" class="autocomplete"></div>
   <script>
     new Ajax.Autocompleter("autocompleteText-<%= param_id_name -%>", "autocomplete-<%= param_id_name -%>", "<%= server_url -%>", {
       paramName: "user_name_start", 
       minChars: 2,
-      afterUpdateElement : getSelection<%= param_id_name -%>
+      afterUpdateElement : getSelection<%= param_id_name -%>,
+      callback : callBack<%= param_id_name -%>
     });
     function getSelection<%= param_id_name -%>(text, li) {
-      $('<%= param_id_name -%>').value = li.id
+      $('<%= param_id_name -%>').value = li.id;
+    }
+    function callBack<%= param_id_name -%>(field, queryString) {
+      $('<%= param_id_name -%>').value = '';
+      return queryString;
     }
   </script>
\ No newline at end of file
index df4a07ab1648d0884345f8aff9c864c68af67073..06cf4dadea1b7f083bc2f02c3c1ddf9c8d94b04a 100644 (file)
@@ -1,11 +1,16 @@
+<%
+  assignee_check_script = "if ($('autocompleteText-assignee_login').value != '' && $('assignee_login').value == '') { alert($('autocompleteText-assignee_login').value + '" + message('reviews.user_does_not_exist') + "'); return false;}"
+%>
+
 <form method="post"
-      onsubmit="if ($('assignee_login').value != '') { new Ajax.Updater('review', '<%= url_for :action => 'assign' -%>', {asynchronous:true, evalScripts:true, parameters:Form.serialize(this)}); };return false;">
+      onsubmit="<%= assignee_check_script -%> 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] -%>
   <%= user_autocomplete_field "assignee_login", "" -%>
   &nbsp;&nbsp;
   <%= submit_to_remote "submit_btn", message('assign'), 
          :url => { :action => 'assign' },
-         :update => "review" -%>
+         :update => "review",
+         :before => assignee_check_script -%>
   &nbsp;&nbsp;
   <%= link_to_remote message('cancel'), 
          :url => { :action => 'show', :id => params[:review_id] },
index 5977b875884a05dea901d0195abbbbda11a9c6ae..3435a2f3da0e3dcfd8217dc9fd6c89ccc1f9b691 100644 (file)
@@ -1,13 +1,18 @@
+<%
+  assignee_check_script = "if ($('autocompleteText-assignee_login').value != '' && $('assignee_login').value == '') { alert($('autocompleteText-assignee_login').value + '" + message('reviews.user_does_not_exist') + "'); return false;}"
+%>
+
 <%= image_tag("sep12.png") -%>
 &nbsp;&nbsp;
 <form method="post"
-      onsubmit="if ($('assignee_login').value != '') { new Ajax.Updater('vId<%= params[:violation_id] -%>', '<%= url_for :action => 'violation_assign' -%>', {asynchronous:true, evalScripts:true, parameters:Form.serialize(this)}); };return false;">
+      onsubmit="<%= assignee_check_script -%> 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] -%>
   <%= user_autocomplete_field "assignee_login", "" -%>
   &nbsp;&nbsp;
   <%= submit_to_remote "submit_btn", message('assign'), 
          :url => { :action => 'violation_assign' },
-         :update => "vId" + params[:violation_id] -%>
+         :update => "vId" + params[:violation_id],
+         :before => assignee_check_script -%>
   &nbsp;&nbsp;
   <%= link_to_remote message('cancel'), 
          :url => { :action => 'display_violation', :id => params[:violation_id] },
index 20752d630fe32657da9c9178ec9fe616a09367e6..b9c5db8e5b4f72ae2cf39f7eef9ac8a262516029 100644 (file)
@@ -1,8 +1,13 @@
 <%
   button=(@comment ? message('update_comment') : message('add_comment'))
+  
+  if @violation.review.nil? || @violation.review.comments.size==0
+    # This is the first comment, we must ask for the assignee
+    assignee_check_script = "if ($('autocompleteText-assignee_login').value != '' && $('assignee_login').value == '') { alert($('autocompleteText-assignee_login').value + '" + message('reviews.user_does_not_exist') + "'); return false;}"
+  end  
 %>
 <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;">
+      onsubmit="<%= assignee_check_script if assignee_check_script -%> 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 -%>"/>
@@ -16,7 +21,8 @@
         <%= 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] -%>
+                  :update => 'vId'+params[:id],
+                  :before => assignee_check_script ? assignee_check_script : "" -%>
         &nbsp;
         <%= link_to_remote message('cancel'), :url => {:action => 'display_violation', :id => params[:id]}, :update => 'vId' + params[:id] -%>