]> source.dussan.org Git - sonarqube.git/commitdiff
[SONAR-1973] Add validations on forms
authorFabrice Bellingard <bellingard@gmail.com>
Thu, 7 Apr 2011 14:32:25 +0000 (16:32 +0200)
committerFabrice Bellingard <bellingard@gmail.com>
Wed, 20 Apr 2011 06:49:57 +0000 (08:49 +0200)
sonar-server/src/main/webapp/WEB-INF/app/controllers/reviews_controller.rb
sonar-server/src/main/webapp/WEB-INF/app/models/review.rb
sonar-server/src/main/webapp/WEB-INF/app/models/review_comment.rb
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

index 8004460ddfdcce7196b9965b1b04a86741e0a4be..1b1ae8e06767aa810cbe169e25d435de7eed0cca 100644 (file)
@@ -34,9 +34,7 @@ class ReviewsController < ApplicationController
          @review.rule_failure_id = params[:violation_id]
          @review.user = current_user
          @review_comment = ReviewComment.new
-         @review_comment.user = current_user
-         @review_comment.review = @review
-         @review_comment.review_text = "Enter your review here"
+         @review_comment.review_text = ""
          render :partial => "form"
        end
        
@@ -52,17 +50,18 @@ class ReviewsController < ApplicationController
        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 = ReviewComment.new(params[:review_comment])
          review_comment.user = current_user
-         review_comment.review_id = review.id
-         review_comment.save
-         
-         params[:rule_failure_id] = review.rule_failure_id
-         index
+         review.review_comments << review_comment
+         if review.valid?
+           review.save
+           params[:rule_failure_id] = review.rule_failure_id
+               index
+         else 
+           @review = review
+           @review_comment = review_comment
+           render :partial => "form"
+         end
        end
        
        def create_comment
@@ -70,9 +69,15 @@ class ReviewsController < ApplicationController
        
       review_comment = ReviewComment.new(params[:review_comment])
       review_comment.user = current_user
-         review_comment.save
-         
-         index
+      if review_comment.valid?
+           review_comment.save
+           index
+         else
+           @review_comment = review_comment
+           @rule_failure_id = params[:rule_failure_id]
+           # TODO Find a way to update the right DIV...
+           render :partial => "form_comment"
+         end
        end
        
 end
index 661227a8fba40d011ea1f04435e21c8e2739e6f9..bdaaa65e512dcae1479414abd05fe983ad04d4d6 100644 (file)
 class Review < ActiveRecord::Base
   belongs_to :user
   belongs_to :rule_failure
-  belongs_to :resource, :class_name => 'Project', :foreign_key => 'resource_id'
+  belongs_to :resource, :class_name => "Project", :foreign_key => "resource_id"
   has_many :review_comments, :order => "created_at", :dependent => :destroy
-  validates_presence_of :user
-  validates_presence_of :review_type
-  validates_presence_of :status
+  validates_presence_of :user, :message => "can't be empty"
+  validates_presence_of :review_type, :message => "can't be empty"
+  validates_presence_of :status, :message => "can't be empty"
 
 end
index d763ae2d42636227b496511c1c2b5cfd3eedbb3d..51e07df0043500b6400ab7c9f0fc9ca1ef4b5161 100644 (file)
 class ReviewComment < ActiveRecord::Base
   belongs_to :user
   belongs_to :review
-  validates_presence_of :user
-  validates_presence_of :review
-  validates_length_of :review_text, :minimum => 1, :too_short => "Your review cannot be empty."
+  validates_presence_of :user => "can't be empty"
+  validate :comment_should_not_be_empty
+  
+  def comment_should_not_be_empty
+    errors.add("Comment", " cannot be empty") if review_text.strip.blank?
+  end
 
 end
index eb62f5a4f481957e37bbe8e75f6b52067fb51c90..ddbd5aa878037e506c4c3bd7bbeadddc9c314a66 100644 (file)
       <%= text_area :review_comment, :review_text, :id => "reviewText", :rows => 10 %>
       <br/>
       <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';} });">
+             onclick="new Ajax.Updater({success:'reviewFailure<%= @review.rule_failure_id.to_s -%>', failure:'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';">
+
+      <%= f.error_messages :header_message => "Can't create the review", :message => "", :header_tag => :h3 %>
+      
 <% end %>
\ No newline at end of file
index 3ef46ed88a6297b282179e59be0177a5efcf416a..59420400668989a4c0ca0ba66b7edde30ca9fe51 100644 (file)
@@ -8,8 +8,11 @@
       <br/>
       <%= submit_to_remote 'create_btn', 'Add comment', 
                      :url => { :action => 'create_comment', :rule_failure_id => @rule_failure_id },
-                     :update => { :success => "reviewFailure" + @rule_failure_id.to_s, :failure => "fail" } %>
+                     :update => { :success => "reviewFailure" + @rule_failure_id.to_s } %>
       <%= submit_to_remote 'cancel_btn', 'Cancel', 
-                     :url => { :action => 'list', :rule_failure_id => @rule_failure_id.to_s },
+                     :url => { :action => 'index', :rule_failure_id => @rule_failure_id.to_s },
                      :update => { :success => "reviewFailure" + @rule_failure_id.to_s } %>
+      
+      <%= f.error_messages :header_message => "Can't save the comment", :message => "", :header_tag => :h3%>
+      
 <% end %>
\ No newline at end of file