diff options
author | Adam Niedzielski <adamsunday@gmail.com> | 2017-03-13 18:12:32 +0100 |
---|---|---|
committer | Adam Niedzielski <adamsunday@gmail.com> | 2017-03-13 18:12:32 +0100 |
commit | 34bf5d863ec1655e3681997c549d159fea6983a9 (patch) | |
tree | e751c69843b79acc74522d07cd2aac440c252d45 /app | |
parent | 32da7602686f2b8161175d82b121deb9e01b2db5 (diff) | |
download | gitlab-ce-34bf5d863ec1655e3681997c549d159fea6983a9.tar.gz |
Display error message when deleting tag in web UI failshandle-failure-when-deleting-tags
Diffstat (limited to 'app')
-rw-r--r-- | app/controllers/projects/tags_controller.rb | 22 | ||||
-rw-r--r-- | app/services/tags/destroy_service.rb | 2 | ||||
-rw-r--r-- | app/views/projects/tags/destroy.js.haml | 4 |
3 files changed, 23 insertions, 5 deletions
diff --git a/app/controllers/projects/tags_controller.rb b/app/controllers/projects/tags_controller.rb index 33379659d73..ea7e4d9f663 100644 --- a/app/controllers/projects/tags_controller.rb +++ b/app/controllers/projects/tags_controller.rb @@ -41,13 +41,27 @@ class Projects::TagsController < Projects::ApplicationController end def destroy - Tags::DestroyService.new(project, current_user).execute(params[:id]) + result = Tags::DestroyService.new(project, current_user).execute(params[:id]) respond_to do |format| - format.html do - redirect_to namespace_project_tags_path(@project.namespace, @project) + if result[:status] == :success + format.html do + redirect_to namespace_project_tags_path(@project.namespace, @project) + end + + format.js + else + @error = result[:message] + + format.html do + redirect_to namespace_project_tags_path(@project.namespace, @project), + alert: @error + end + + format.js do + render status: :unprocessable_entity + end end - format.js end end end diff --git a/app/services/tags/destroy_service.rb b/app/services/tags/destroy_service.rb index 910b4f5e361..a368f4f5b61 100644 --- a/app/services/tags/destroy_service.rb +++ b/app/services/tags/destroy_service.rb @@ -21,6 +21,8 @@ module Tags else error('Failed to remove tag') end + rescue GitHooksService::PreReceiveError => ex + error(ex.message) end def error(message, return_code = 400) diff --git a/app/views/projects/tags/destroy.js.haml b/app/views/projects/tags/destroy.js.haml index e4a78fadbeb..cde23e03d54 100644 --- a/app/views/projects/tags/destroy.js.haml +++ b/app/views/projects/tags/destroy.js.haml @@ -1,2 +1,4 @@ -- if @repository.tags.empty? +- if @error.present? + new Flash('#{escape_javascript(@error)}', 'alert'); +- elsif @repository.tags.empty? $('.tags').load(document.URL + ' .nothing-here-block').hide().fadeIn(1000) |