Просмотр исходного кода

Add delete as an inline table action (only when viewing archived projects).

Paulo Reis 8 лет назад
Родитель
Сommit
60cbc989e2

+ 8 - 0
services/web/app/views/project/list/item.pug

@@ -90,6 +90,14 @@ if settings.overleaf
 				ng-click="restore($event)"
 				ng-click="restore($event)"
 			)
 			)
 				i.icon.fa.fa-reply
 				i.icon.fa.fa-reply
+			button.btn.btn-link.action-btn(
+				ng-if="project.archived && isOwner()"
+				tooltip=translate('delete_forever'),
+				tooltip-placement="top",
+				tooltip-append-to-body="true",
+				ng-click="deleteProject($event)"
+			)
+				i.icon.fa.fa-trash
 		div(
 		div(
 			ng-if="project.isTableActionInflight"
 			ng-if="project.isTableActionInflight"
 		)
 		)

+ 26 - 1
services/web/public/coffee/main/project-list/project-list.coffee

@@ -469,7 +469,7 @@ define [
 		else
 		else
 			$scope.updateVisibleProjects()
 			$scope.updateVisibleProjects()
 
 
-	App.controller "ProjectListItemController", ($scope) ->
+	App.controller "ProjectListItemController", ($scope, $modal, queuedHttp) ->
 
 
 		$scope.shouldDisableCheckbox = (project) ->
 		$scope.shouldDisableCheckbox = (project) ->
 			$scope.filter == 'archived' && project.accessLevel != 'owner'
 			$scope.filter == 'archived' && project.accessLevel != 'owner'
@@ -518,3 +518,28 @@ define [
 		$scope.restore = (e) ->
 		$scope.restore = (e) ->
 			e.stopPropagation()
 			e.stopPropagation()
 			$scope.restoreProjects([$scope.project])
 			$scope.restoreProjects([$scope.project])
+
+		$scope.deleteProject = (e) ->
+			e.stopPropagation()
+			modalInstance = $modal.open(
+				templateUrl: "deleteProjectsModalTemplate"
+				controller: "DeleteProjectsModalController"
+				resolve:
+					projects: () -> [ $scope.project ]
+			)
+
+			modalInstance.result.then () ->
+				$scope.project.isTableActionInflight = true
+				queuedHttp({
+					method: "DELETE"
+					url: "/project/#{$scope.project.id}?forever=true"
+					headers:
+						"X-CSRF-Token": window.csrfToken
+				}).then () -> 
+					$scope.project.isTableActionInflight = false
+					$scope._removeProjectFromList $scope.project
+					for tag in $scope.tags
+						$scope._removeProjectIdsFromTagArray(tag, [ $scope.project.id ])
+					$scope.updateVisibleProjects()
+				.catch () -> 
+					$scope.project.isTableActionInflight = false