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:
parent
751572c977
commit
ab5d6f82c0
2 changed files with 99 additions and 18 deletions
services/web
|
@ -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
|
||||
|
|
|
@ -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')
|
||||
|
|
Loading…
Add table
Reference in a new issue