diff options
author | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2014-02-26 14:06:31 +0200 |
---|---|---|
committer | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2014-02-26 14:06:31 +0200 |
commit | a9280de11f6b5255de2feeaab618aab0ac54db38 (patch) | |
tree | c52a72336840f32057578f889ecfe74b9e2d7b15 /app/controllers | |
parent | 5d6e4bd2d8d2e45407bb437e5b22656cffedc15a (diff) | |
download | gitlab-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.rb | 4 | ||||
-rw-r--r-- | app/controllers/projects/edit_tree_controller.rb | 25 |
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 |