1
0
Fork 0
mirror of https://github.com/overleaf/overleaf.git synced 2025-04-14 17:23:26 +00:00

Allow deleting of projects

This commit is contained in:
James Allen 2014-06-13 15:24:20 +01:00
parent 751572c977
commit ab5d6f82c0
2 changed files with 99 additions and 18 deletions
services/web
app/views/project
public/coffee

View file

@ -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

View file

@ -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')