فهرست منبع

show and restore archived projects

James Allen 12 سال پیش
والد
کامیت
81ee0f4342
2فایلهای تغییر یافته به همراه78 افزوده شده و 23 حذف شده
  1. 27 12
      services/web/app/views/project/list.jade
  2. 51 11
      services/web/public/coffee/project-list.coffee

+ 27 - 12
services/web/app/views/project/list.jade

@@ -52,11 +52,13 @@ block content
 					.row-spaced
 					.row-spaced
 						ul.list-unstyled.folders-menu.js-folders-menu(ng-controller="TagListController")
 						ul.list-unstyled.folders-menu.js-folders-menu(ng-controller="TagListController")
 							li(ng-class="{active: (filter == 'all')}")
 							li(ng-class="{active: (filter == 'all')}")
-								a.menu-indent(href, ng-click="selectAllProjects()") All projects
+								a.menu-indent(href, ng-click="filterProjects('all')") All projects
 							li(ng-class="{active: (filter == 'owned')}")
 							li(ng-class="{active: (filter == 'owned')}")
-								a.menu-indent(href, ng-click="selectOwnedProjects()") Your projects
+								a.menu-indent(href, ng-click="filterProjects('owned')") Your projects
 							li(ng-class="{active: (filter == 'shared')}")
 							li(ng-class="{active: (filter == 'shared')}")
-								a.menu-indent(href, ng-click="selectSharedProjects()") Shared projects
+								a.menu-indent(href, ng-click="filterProjects('shared')") Shared projects
+							li(ng-class="{active: (filter == 'archived')}")
+								a.menu-indent(href, ng-click="filterProjects('archived')") Deleted projects
 							li 
 							li 
 								h2 Folders
 								h2 Folders
 							li(
 							li(
@@ -74,13 +76,6 @@ block content
 									|  {{tag.name}} 
 									|  {{tag.name}} 
 								span.small ({{tag.project_ids.length}})
 								span.small ({{tag.project_ids.length}})
 
 
-					.row-spaced-small
-						ul.list-unstyled.folders-menu
-							li
-								a.menu-indent(href="#")
-									i.icon.fa.fa-plus
-									|  New Folder
-
 					-if (settings.enableSubscriptions)
 					-if (settings.enableSubscriptions)
 						.row-spaced
 						.row-spaced
 							a(href="/user/bonus").btn.btn-info Upgrade Account
 							a(href="/user/bonus").btn.btn-info Upgrade Account
@@ -100,7 +95,7 @@ block content
 									//- i.fa.fa-remove
 									//- i.fa.fa-remove
 
 
 								.project-tools.js-toggle-tools
 								.project-tools.js-toggle-tools
-									.btn-toolbar
+									.btn-toolbar(ng-show="filter != 'archived'")
 										.btn-group(ng-hide="selectedProjects.length < 1")
 										.btn-group(ng-hide="selectedProjects.length < 1")
 											a.btn.btn-default(
 											a.btn.btn-default(
 												href='#',
 												href='#',
@@ -115,7 +110,7 @@ block content
 												data-original-title="Delete",
 												data-original-title="Delete",
 												data-toggle="tooltip",
 												data-toggle="tooltip",
 												data-placement="bottom",
 												data-placement="bottom",
-												ng-click="deleteSelectedProjects()"
+												ng-click="archiveSelectedProjects()"
 											)
 											)
 												i.fa.fa-trash-o
 												i.fa.fa-trash-o
 
 
@@ -160,6 +155,26 @@ block content
 														href='#',
 														href='#',
 														ng-click="openRenameProjectModal()"
 														ng-click="openRenameProjectModal()"
 													) Rename
 													) Rename
+
+									.btn-toolbar(ng-show="filter == 'archived'")
+										.btn-group(ng-hide="selectedProjects.length < 1")
+											a.btn.btn-default(
+												href='#',
+												data-original-title="Restore",
+												data-toggle="tooltip",
+												data-placement="bottom",
+												ng-click="restoreSelectedProjects()"
+											) Restore
+
+										.btn-group(ng-hide="selectedProjects.length < 1")
+											a.btn.btn-danger(
+												href='#',
+												data-original-title="Delete Forever",
+												data-toggle="tooltip",
+												data-placement="bottom",
+												ng-click="deleteSelectedProjects()"
+											) Delete Forever
+
 						.row.row-spaced
 						.row.row-spaced
 							.col-md-12
 							.col-md-12
 								.card.card-thin
 								.card.card-thin

+ 51 - 11
services/web/public/coffee/project-list.coffee

@@ -105,11 +105,21 @@ ProjectPageApp.controller "ProjectPageController", ($scope, $modal, $http, $q) -
 			if $scope.filter == "owned" and project.accessLevel != "owner"
 			if $scope.filter == "owned" and project.accessLevel != "owner"
 				visible = false
 				visible = false
 
 
+			if $scope.filter == "archived"
+				# Only show archived projects
+				if !project.archived
+					visible = false
+			else
+				# Only show non-archived projects
+				if project.archived
+					visible = false
+
 			if visible
 			if visible
 				$scope.visibleProjects.push project
 				$scope.visibleProjects.push project
 			else
 			else
 				# We don't want hidden selections
 				# We don't want hidden selections
 				project.selected = false
 				project.selected = false
+		$scope.updateSelectedProjects()
 
 
 	$scope.getSelectedTag = () ->
 	$scope.getSelectedTag = () ->
 		for tag in $scope.tags
 		for tag in $scope.tags
@@ -253,6 +263,27 @@ ProjectPageApp.controller "ProjectPageController", ($scope, $modal, $http, $q) -
 				$scope.renameProject(project, newName)
 				$scope.renameProject(project, newName)
 		)
 		)
 
 
+	$scope.archiveSelectedProjects = () ->
+		selected_projects = $scope.getSelectedProjects()
+		selected_project_ids = $scope.getSelectedProjectIds()
+
+		for project in selected_projects
+			project.archived = true
+
+		# Remove project from any tags
+		for tag in $scope.tags
+			$scope._removeProjectIdsFromTagArray(tag, selected_project_ids)
+
+		for project_id in selected_project_ids
+			$http {
+				method: "DELETE"
+				url: "/project/#{project_id}"
+				headers:
+					"X-CSRF-Token": window.csrfToken
+			}
+
+		$scope.updateVisibleProjects()
+
 	$scope.deleteSelectedProjects = () ->
 	$scope.deleteSelectedProjects = () ->
 		selected_projects = $scope.getSelectedProjects()
 		selected_projects = $scope.getSelectedProjects()
 		selected_project_ids = $scope.getSelectedProjectIds()
 		selected_project_ids = $scope.getSelectedProjectIds()
@@ -270,7 +301,24 @@ ProjectPageApp.controller "ProjectPageController", ($scope, $modal, $http, $q) -
 		for project_id in selected_project_ids
 		for project_id in selected_project_ids
 			$http {
 			$http {
 				method: "DELETE"
 				method: "DELETE"
-				url: "/project/#{project_id}"
+				url: "/project/#{project_id}?forever=true"
+				headers:
+					"X-CSRF-Token": window.csrfToken
+			}
+
+		$scope.updateVisibleProjects()
+
+	$scope.restoreSelectedProjects = () ->
+		selected_projects = $scope.getSelectedProjects()
+		selected_project_ids = $scope.getSelectedProjectIds()
+
+		for project in selected_projects
+			project.archived = false
+
+		for project_id in selected_project_ids
+			$http {
+				method: "POST"
+				url: "/project/#{project_id}/restore"
 				headers:
 				headers:
 					"X-CSRF-Token": window.csrfToken
 					"X-CSRF-Token": window.csrfToken
 			}
 			}
@@ -296,17 +344,9 @@ ProjectPageApp.controller "ProjectListItemController", ($scope) ->
 			return "?"
 			return "?"
 
 
 ProjectPageApp.controller "TagListController", ($scope) ->
 ProjectPageApp.controller "TagListController", ($scope) ->
-	$scope.selectAllProjects = () ->
-		$scope._clearTags()
-		$scope.setFilter("all")
-
-	$scope.selectOwnedProjects = () ->
-		$scope._clearTags()
-		$scope.setFilter("owned")
-
-	$scope.selectSharedProjects = () ->
+	$scope.filterProjects = (filter = "all") ->
 		$scope._clearTags()
 		$scope._clearTags()
-		$scope.setFilter("shared")
+		$scope.setFilter(filter)
 
 
 	$scope._clearTags = () ->
 	$scope._clearTags = () ->
 		for tag in $scope.tags
 		for tag in $scope.tags