]> source.dussan.org Git - sonarqube.git/commitdiff
[SONAR-1973] Improve review&comment forms
authorFabrice Bellingard <bellingard@gmail.com>
Thu, 7 Apr 2011 11:51:00 +0000 (13:51 +0200)
committerFabrice Bellingard <bellingard@gmail.com>
Wed, 20 Apr 2011 06:49:56 +0000 (08:49 +0200)
sonar-server/src/main/webapp/WEB-INF/app/controllers/reviews_controller.rb
sonar-server/src/main/webapp/WEB-INF/app/views/resource/_violation.html.erb
sonar-server/src/main/webapp/WEB-INF/app/views/reviews/_form.html.erb
sonar-server/src/main/webapp/WEB-INF/app/views/reviews/_form_comment.html.erb
sonar-server/src/main/webapp/WEB-INF/app/views/reviews/_view.html.erb

index 5c1eb333c9a65746675a86db768180025549f898..fba4a4b3e0b41192dbee5f7788d1ee1a2a2719a4 100644 (file)
 
 class ReviewsController < ApplicationController
 
-       SECTION=Navigation::SECTION_CONFIGURATION
+       SECTION=Navigation::SECTION_RESOURCE
+       
+       #verify :method => :post, :only => [  :create, :...... ], :redirect_to => { :action => :index }
        
        def index
        end
        
        def list
          reviews = Review.find :all, :conditions => ['rule_failure_id=?', params[:rule_failure_id]]
-         render :partial => "list", :locals => { :reviews => reviews }, :layout => false
+         render :partial => "list", :locals => { :reviews => reviews }
        end
        
        def form
@@ -38,7 +40,7 @@ class ReviewsController < ApplicationController
          @review_comment.user = current_user
          @review_comment.review = @review
          @review_comment.review_text = "Enter your review here"
-         render "_form", :layout => false
+         render :partial => "form"
        end
        
        def formComment
@@ -47,13 +49,15 @@ class ReviewsController < ApplicationController
          @review_comment.review_id = params[:review_id]
          @review_comment.review_text = ""
          @rule_failure_id = params[:rule_failure_id]
-         render "_form_comment", :layout => false
+         render :partial => "form_comment"
        end
        
        def create
          review = Review.new(params[:review])
          review.user = current_user
+         # save!
          review.save
+         # --> Build?
          #review.review_comments.create(params[:review_comment])
       review_comment = ReviewComment.new(params[:review_comment])
          review_comment.user = current_user
@@ -65,6 +69,8 @@ class ReviewsController < ApplicationController
        end
        
        def createComment
+         #return access_denied unless has_role?(:user, @project)
+       
       review_comment = ReviewComment.new(params[:review_comment])
       review_comment.user = current_user
          review_comment.save
index 5353f9b7dc11fb9fe6e47fce622e668e309f52ca..6ac4247163f0248f5bf7137e5d23e86fdf180816 100644 (file)
@@ -1,12 +1,20 @@
+<% 
+  displayReviewFailureDiv = 'block'
+  if violation.reviews.blank?
+    displayReviewFailureDiv = 'none'
+  end
+%>
 <div class="violation">
   <table>
     <tr>
     
       <td width="30px" valign="top">
-       <% if current_user %>
-          <%= link_to_remote(image_tag("add.png"), 
-                       :update => "reviewFailure" + violation.id.to_s, 
-                       :url => { :controller => "reviews", :action => "form", :violation_id => violation.id }) -%>
+       <% if current_user && violation.reviews.blank? %>
+          <%= link_to_remote image_tag("add.png"),  
+                       :url => { :controller => "reviews", :action => "form", :violation_id => violation.id },
+                       :update => "reviewFailure" + violation.id.to_s,
+                       :html => { :id => "createReviewLink" + violation.id.to_s },
+                       :complete => "$('reviewFailure" + violation.id.to_s + "').style.display='';$('reviewText').focus();" -%>
        <% end %>
       </td>
       
@@ -23,7 +31,7 @@
                  <span class="violation_date"><%= duration==0 ? 'today' : "#{duration} days ago" -%></span>
                <% end %>
                
-               <div id="reviewFailure<%= violation.id -%>" style="padding:5px; background:white">
+               <div id="reviewFailure<%= violation.id -%>" style="padding:5px; background:white; display:<%= displayReviewFailureDiv -%>">
                  <%= render :partial => "reviews/list", :locals => { :reviews => violation.reviews } %>
                </div>
       </td>
index 66539b0c43e579f6d1965806ef266b7e3f33832b..eb62f5a4f481957e37bbe8e75f6b52067fb51c90 100644 (file)
       <br/>
       Comment:
       <br/>
-      <%= text_area :review_comment, :review_text, :rows => 10 %>
+      <%= text_area :review_comment, :review_text, :id => "reviewText", :rows => 10 %>
       <br/>
-      <%= submit_to_remote 'create_btn', 'Create review', 
-                     :url => { :action => 'create' },
-                     :update => { :success => "reviewFailure" + @review.rule_failure_id.to_s, :failure => "fail" } %>
-      <%= submit_to_remote 'cancel_btn', 'Cancel', 
-                     :url => { :action => 'list', :rule_failure_id => @review.rule_failure_id.to_s },
-                     :update => { :success => "reviewFailure" + @review.rule_failure_id.to_s } %>
+      <input type="button" name="create_btn" value="Create review" 
+             onclick="new Ajax.Updater({success:'reviewFailure<%= @review.rule_failure_id.to_s -%>'}, '<%= ApplicationController.root_context -%>/reviews/create?rule_failure_id=<%= @review.rule_failure_id.to_s -%>', {asynchronous:true, evalScripts:true, parameters:Form.serialize(this.form), onSuccess:function(request){$('createReviewLink<%= @review.rule_failure_id.to_s -%>').style.display='none';} });">
+      <input type="button" name="cancel_btn" value="Cancel" 
+             onclick="new Ajax.Updater({success:'reviewFailure<%= @review.rule_failure_id.to_s -%>'}, '<%= ApplicationController.root_context -%>/reviews/list?rule_failure_id=<%= @review.rule_failure_id.to_s -%>', {asynchronous:true, evalScripts:true, parameters:Form.serialize(this.form), }); $('reviewFailure<%= @review.rule_failure_id.to_s -%>').style.display='none';">
 <% end %>
\ No newline at end of file
index b2ed06f0555800168156cab0e67f20b7bf9d1e6d..50c9a9e6b09ac5a7690529e3d32c37e237519a7e 100644 (file)
@@ -4,7 +4,7 @@
       <br/>
       Comment:
       <br/>
-      <%= f.text_area :review_text, :rows => 10 %>
+      <%= f.text_area :review_text, :rows => 10, :id => "commentText" + @review_comment.review_id.to_s %>
       <br/>
       <%= submit_to_remote 'create_btn', 'Add comment', 
                      :url => { :action => 'createComment', :rule_failure_id => @rule_failure_id },
index 29c962254143f7615449134261442246b3a73983..bc1b5bc3133f30980413ea66553420e95e6ee39a 100644 (file)
                %>
       </div>
       
-      <%= link_to_remote("Add a comment", 
+      <%= link_to_remote "Add a comment", 
+                       :url => { :controller => "reviews", :action => "formComment", :review_id => review.id, :rule_failure_id => review.rule_failure_id },
                        :update => "createComment" + review.id.to_s, 
-                       :url => { :controller => "reviews", :action => "formComment", :review_id => review.id, :rule_failure_id => review.rule_failure_id }) -%>
-       <div id="createComment<%= review.id -%>">
-       
-       </div>
+                       :complete => "$('commentText" + review.id.to_s + "').focus()" -%>
+      
+      <div id="createComment<%= review.id -%>"></div>
+
   </div>