summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/controllers/comments_controller.rb23
-rw-r--r--public/javascripts/application.js4
-rw-r--r--test/functional/comments_controller_test.rb3
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