From 81ee0f4342310eb561e31ef8b362a693302ea76d Mon Sep 17 00:00:00 2001 From: James Allen Date: Mon, 16 Jun 2014 15:06:58 +0100 Subject: [PATCH] show and restore archived projects --- services/web/app/views/project/list.jade | 39 ++++++++---- .../web/public/coffee/project-list.coffee | 62 +++++++++++++++---- 2 files changed, 78 insertions(+), 23 deletions(-) diff --git a/services/web/app/views/project/list.jade b/services/web/app/views/project/list.jade index 08c12493dc..b11a6e55e5 100644 --- a/services/web/app/views/project/list.jade +++ b/services/web/app/views/project/list.jade @@ -52,11 +52,13 @@ block content .row-spaced ul.list-unstyled.folders-menu.js-folders-menu(ng-controller="TagListController") 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')}") - 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')}") - 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 h2 Folders li( @@ -74,13 +76,6 @@ block content | {{tag.name}} 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) .row-spaced a(href="/user/bonus").btn.btn-info Upgrade Account @@ -100,7 +95,7 @@ block content //- i.fa.fa-remove .project-tools.js-toggle-tools - .btn-toolbar + .btn-toolbar(ng-show="filter != 'archived'") .btn-group(ng-hide="selectedProjects.length < 1") a.btn.btn-default( href='#', @@ -115,7 +110,7 @@ block content data-original-title="Delete", data-toggle="tooltip", data-placement="bottom", - ng-click="deleteSelectedProjects()" + ng-click="archiveSelectedProjects()" ) i.fa.fa-trash-o @@ -160,6 +155,26 @@ block content href='#', ng-click="openRenameProjectModal()" ) 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 .col-md-12 .card.card-thin diff --git a/services/web/public/coffee/project-list.coffee b/services/web/public/coffee/project-list.coffee index 119be15c0d..19df920007 100644 --- a/services/web/public/coffee/project-list.coffee +++ b/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" 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 $scope.visibleProjects.push project else # We don't want hidden selections project.selected = false + $scope.updateSelectedProjects() $scope.getSelectedTag = () -> for tag in $scope.tags @@ -253,6 +263,27 @@ ProjectPageApp.controller "ProjectPageController", ($scope, $modal, $http, $q) - $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 = () -> selected_projects = $scope.getSelectedProjects() selected_project_ids = $scope.getSelectedProjectIds() @@ -270,7 +301,24 @@ ProjectPageApp.controller "ProjectPageController", ($scope, $modal, $http, $q) - for project_id in selected_project_ids $http { 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: "X-CSRF-Token": window.csrfToken } @@ -296,17 +344,9 @@ ProjectPageApp.controller "ProjectListItemController", ($scope) -> return "?" ProjectPageApp.controller "TagListController", ($scope) -> - $scope.selectAllProjects = () -> + $scope.filterProjects = (filter = "all") -> $scope._clearTags() - $scope.setFilter("all") - - $scope.selectOwnedProjects = () -> - $scope._clearTags() - $scope.setFilter("owned") - - $scope.selectSharedProjects = () -> - $scope._clearTags() - $scope.setFilter("shared") + $scope.setFilter(filter) $scope._clearTags = () -> for tag in $scope.tags