summaryrefslogtreecommitdiff
path: root/app/controllers
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2014-02-26 14:06:31 +0200
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2014-02-26 14:06:31 +0200
commita9280de11f6b5255de2feeaab618aab0ac54db38 (patch)
treec52a72336840f32057578f889ecfe74b9e2d7b15 /app/controllers
parent5d6e4bd2d8d2e45407bb437e5b22656cffedc15a (diff)
downloadgitlab-ce-a9280de11f6b5255de2feeaab618aab0ac54db38.tar.gz
Better redirect for edit blod from MergeRequest
If you cancel edit you will be redirected back to merge request If you submit changes you will be redirected back to merge request Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Diffstat (limited to 'app/controllers')
-rw-r--r--app/controllers/application_controller.rb4
-rw-r--r--app/controllers/projects/edit_tree_controller.rb25
2 files changed, 23 insertions, 6 deletions
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index bb25327bc2d..9ed46c23942 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -210,4 +210,8 @@ class ApplicationController < ActionController::Base
devise_parameter_sanitizer.for(:sign_in) { |u| u.permit(:username, :email, :password, :login, :remember_me) }
devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:username, :email, :name, :password, :password_confirmation) }
end
+
+ def hexdigest(string)
+ Digest::SHA1.hexdigest string
+ end
end
diff --git a/app/controllers/projects/edit_tree_controller.rb b/app/controllers/projects/edit_tree_controller.rb
index c54b757d13c..ff5206b6fa1 100644
--- a/app/controllers/projects/edit_tree_controller.rb
+++ b/app/controllers/projects/edit_tree_controller.rb
@@ -2,6 +2,8 @@ class Projects::EditTreeController < Projects::BaseTreeController
before_filter :require_branch_head
before_filter :blob
before_filter :authorize_push!
+ before_filter :from_merge_request
+ before_filter :after_edit_path
def show
@last_commit = Gitlab::Git::Commit.last_for_path(@repository, @ref, @path).sha
@@ -13,15 +15,11 @@ class Projects::EditTreeController < Projects::BaseTreeController
if result[:status] == :success
flash[:notice] = "Your changes have been successfully committed"
- # If blob edit was initiated from merge request page
- from_merge_request = MergeRequest.find_by(id: params[:from_merge_request_id])
-
if from_merge_request
from_merge_request.reload_code
- redirect_to diffs_project_merge_request_path(from_merge_request.target_project, from_merge_request)
- else
- redirect_to project_blob_path(@project, @id)
end
+
+ redirect_to after_edit_path
else
flash[:alert] = result[:error]
render :show
@@ -33,4 +31,19 @@ class Projects::EditTreeController < Projects::BaseTreeController
def blob
@blob ||= @repository.blob_at(@commit.id, @path)
end
+
+ def after_edit_path
+ @after_edit_path ||=
+ if from_merge_request
+ diffs_project_merge_request_path(from_merge_request.target_project, from_merge_request) +
+ "#file-path-#{hexdigest(@path)}"
+ else
+ project_blob_path(@project, @id)
+ end
+ end
+
+ def from_merge_request
+ # If blob edit was initiated from merge request page
+ @from_merge_request ||= MergeRequest.find_by(id: params[:from_merge_request_id])
+ end
end