diff options
-rw-r--r-- | app/controllers/comments_controller.rb | 23 | ||||
-rw-r--r-- | public/javascripts/application.js | 4 | ||||
-rw-r--r-- | test/functional/comments_controller_test.rb | 3 |
3 files changed, 19 insertions, 11 deletions
diff --git a/app/controllers/comments_controller.rb b/app/controllers/comments_controller.rb index e47bada..87b6150 100644 --- a/app/controllers/comments_controller.rb +++ b/app/controllers/comments_controller.rb @@ -53,16 +53,10 @@ class CommentsController < ApplicationController @comment.user = current_user @comment.state = state @comment.project = @project + render_or_redirect + end - if MergeRequestVersion === @target - if @comment.save - render :nothing => true, :status => :created - else - render :text => "Clean up your mess", :status => :not_acceptable - end - return - end - + def render_or_redirect respond_to do |format| if @comment.save create_new_commented_posted_event @@ -74,10 +68,18 @@ class CommentsController < ApplicationController redirect_to repo_owner_path(@repository, :project_repository_commit_path, @project, @repository, @comment.sha1) end end + format.js do + render :nothing => true, :status => :created + end else format.html { render :action => "new" } + format.js {render :nothing => true, :status => :not_acceptable} end - end + end + end + + def applies_to_merge_request_version? + MergeRequestVersion === @target end protected @@ -105,6 +107,7 @@ class CommentsController < ApplicationController def create_new_commented_posted_event # def create_event(action_id, target, user, data = nil, body = nil, date = Time.now.utc) + return if applies_to_merge_request_version? if @target == @repository @project.create_event(Action::COMMENT, @repository, current_user, @comment.to_param, "Repository") else diff --git a/public/javascripts/application.js b/public/javascripts/application.js index d285c06..5917c27 100644 --- a/public/javascripts/application.js +++ b/public/javascripts/application.js @@ -981,3 +981,7 @@ if (!Array.prototype.map) { return jQuery.map(this, callback); } } +// Make JQuery work with Rails' respond_to +jQuery.ajaxSetup({ + 'beforeSend': function(xhr) {xhr.setRequestHeader("Accept", "text/javascript")} +}) diff --git a/test/functional/comments_controller_test.rb b/test/functional/comments_controller_test.rb index 349b29d..6bb544d 100644 --- a/test/functional/comments_controller_test.rb +++ b/test/functional/comments_controller_test.rb @@ -133,7 +133,8 @@ class CommentsControllerTest < ActionController::TestCase :path => "LICENSE", :lines => "1..14", :sha1 => "ffac01-ffab99", - :body => "Needs more cowbell"} + :body => "Needs more cowbell"}, :format => "js" + assert @controller.applies_to_merge_request_version? assert_response :success assert_equal @version, assigns(:target) assert_equal @version, assigns(:comment).target |