Преглед изворни кода

Allow deleting of projects

James Allen пре 12 година
родитељ
комит
ab5d6f82c0
2 измењених фајлова са 99 додато и 18 уклоњено
  1. 25 11
      services/web/app/views/project/list.jade
  2. 74 7
      services/web/public/coffee/project-list.coffee

+ 25 - 11
services/web/app/views/project/list.jade

@@ -102,7 +102,7 @@ block content
 												data-original-title="Delete",
 												data-toggle="tooltip",
 												data-placement="bottom",
-												title=""
+												ng-click="deleteSelectedProjects()"
 											)
 												i.fa.fa-trash-o
 
@@ -135,17 +135,17 @@ block content
 													a(href="#", ng-click="openNewTagModal()") Create New Folder
 
 										.btn-group(ng-hide="selectedProjects.length != 1")
-											a.btn.btn-default.dropdown-toggle(data-toggle="dropdown", href="#") More 
+											a.btn.btn-default.dropdown-toggle(
+												href='#',
+												data-toggle="dropdown"
+											) More 
 												span.caret
 											ul.dropdown-menu.dropdown-menu-right(role="menu")
 												li
-													a(href='/project/'+"5369c5737fc6b47f048da1f5"+'/clone', data-csrf=csrfToken).cloneProject Make a Copy...
-												-if ("owner" == "owner")
-													li
-														a(href='/project/'+"5369c5737fc6b47f048da1f5"+'/rename', data-name="the project", data-id="5369c5737fc6b47f048da1f5", data-csrf=csrfToken).renameProject Rename...
-												-else
-													li
-														a(href='/project/'+"5369c5737fc6b47f048da1f5"+'/leave', data-name="the project", data-id="5369c5737fc6b47f048da1f5", data-csrf=csrfToken).leaveProject Leave Project
+													a(
+														href='#',
+														ng-click="openRenameProjectModal()"
+													) Rename
 						.row.row-spaced
 							.col-md-12
 								.card.card-thin
@@ -193,7 +193,6 @@ block content
 			.modal-header
 				h3 Create New Folder
 			.modal-body
-				div {{inputs.newTagName}}
 				input.form-control(
 					type="text",
 					placeholder="New Folder Name",
@@ -203,4 +202,19 @@ block content
 				)
 			.modal-footer
 				button.btn.btn-default(ng-click="cancel()") Cancel
-				button.btn.btn-primary(ng-click="create()") Create
+				button.btn.btn-primary(ng-click="create()") Create
+
+		script(type='text/ng-template', id='renameProjectModalTemplate')
+			.modal-header
+				h3 Rename Project
+			.modal-body
+				input.form-control(
+					type="text",
+					placeholder="Project Name",
+					ng-model="inputs.projectName",
+					ng-enter="rename()",
+					ng-focus-on="open"
+				)
+			.modal-footer
+				button.btn.btn-default(ng-click="cancel()") Cancel
+				button.btn.btn-primary(ng-click="rename()") Rename

+ 74 - 7
services/web/public/coffee/project-list.coffee

@@ -73,6 +73,9 @@ ProjectPageApp.controller "ProjectPageController", ($scope, $modal, $http) ->
 	$scope.getSelectedProjectIds = () ->
 		$scope.selectedProjects.map (project) -> project._id
 
+	$scope.getFirstSelectedProject = () ->
+		$scope.selectedProjects[0]
+
 	$scope.$on "selection:change", () ->
 		$scope.updateSelectedProjects()
 
@@ -100,20 +103,23 @@ ProjectPageApp.controller "ProjectPageController", ($scope, $modal, $http) ->
 			return tag if tag.selected
 		return null
 
-	$scope.removeSelectedProjectsFromTag = (tag) ->
-		selected_project_ids = $scope.getSelectedProjectIds()
-		selected_projects = $scope.getSelectedProjects()
-
+	$scope._removeProjectIdsFromTagArray = (tag, remove_project_ids) ->
 		# Remove project_id from tag.project_ids
 		remaining_project_ids = []
 		removed_project_ids = []
 		for project_id in tag.project_ids
-			if project_id not in selected_project_ids
+			if project_id not in remove_project_ids
 				remaining_project_ids.push project_id
 			else
 				removed_project_ids.push project_id
 		tag.project_ids = remaining_project_ids
 
+	$scope.removeSelectedProjectsFromTag = (tag) ->
+		selected_project_ids = $scope.getSelectedProjectIds()
+		selected_projects = $scope.getSelectedProjects()
+
+		$scope._removeProjectIdsFromTagArray(tag, selected_project_ids)
+
 		# Remove tag from project.tags
 		remaining_tags = []
 		for project in selected_projects
@@ -171,6 +177,53 @@ ProjectPageApp.controller "ProjectPageController", ($scope, $modal, $http) ->
 				$scope.createTag(newTagName)
 		)
 
+	$scope.renameProject = (project, newName) ->
+		project.name = newName
+		$http.post "/project/#{project._id}/rename", {
+			newProjectName: newName
+			_csrf: window.csrfToken
+		}
+
+	$scope.openRenameProjectModal = () ->
+		project = $scope.getFirstSelectedProject()
+		return if !project?
+
+		modalInstance = $modal.open(
+			templateUrl: "renameProjectModalTemplate"
+			controller: "RenameProjectModalController"
+			resolve:
+				projectName: () -> project.name
+		)
+
+		modalInstance.result.then(
+			(newName) ->
+				$scope.renameProject(project, newName)
+		)
+
+	$scope.deleteSelectedProjects = () ->
+		selected_projects = $scope.getSelectedProjects()
+		selected_project_ids = $scope.getSelectedProjectIds()
+
+		# Remove projects from array
+		for project in selected_projects
+			index = $scope.projects.indexOf(project)
+			if index > -1
+				$scope.projects.splice(index, 1)
+
+		# 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()
+
 ProjectPageApp.controller "ProjectListItemController", ($scope) ->
 	$scope.onSelectedChange = () ->
 		$scope.$emit "selected:on-change"
@@ -217,7 +270,7 @@ ProjectPageApp.controller "TagDropdownItemController", ($scope) ->
 
 ProjectPageApp.controller 'NewTagModalController', ($scope, $modalInstance, $timeout) ->
 	$scope.inputs = 
-		newTagName: "original"
+		newTagName: ""
 
 	$modalInstance.opened.then () ->
 		$timeout () ->
@@ -225,8 +278,22 @@ ProjectPageApp.controller 'NewTagModalController', ($scope, $modalInstance, $tim
 		, 700
 
 	$scope.create = () ->
-		console.log $scope.inputs.newTagName
 		$modalInstance.close($scope.inputs.newTagName)
 
 	$scope.cancel = () ->
 		$modalInstance.dismiss('cancel')
+
+ProjectPageApp.controller 'RenameProjectModalController', ($scope, $modalInstance, $timeout, projectName) ->
+	$scope.inputs = 
+		projectName: projectName
+
+	$modalInstance.opened.then () ->
+		$timeout () ->
+			$scope.$broadcast "open"
+		, 700
+
+	$scope.rename = () ->
+		$modalInstance.close($scope.inputs.projectName)
+
+	$scope.cancel = () ->
+		$modalInstance.dismiss('cancel')