Allow cloning of projects

This commit is contained in:
James Allen 2014-06-16 15:32:20 +01:00
parent 8bb181a465
commit 3a969876e0
2 changed files with 89 additions and 0 deletions

View file

@ -155,6 +155,11 @@ block content
href='#',
ng-click="openRenameProjectModal()"
) Rename
li
a(
href='#',
ng-click="openCloneProjectModal()"
) Make a copy
.btn-toolbar(ng-show="filter == 'archived'")
.btn-group(ng-hide="selectedProjects.length < 1")
@ -252,6 +257,31 @@ block content
button.btn.btn-default(ng-click="cancel()") Cancel
button.btn.btn-primary(ng-click="rename()") Rename
script(type='text/ng-template', id='cloneProjectModalTemplate')
.modal-header
h3 Copy Project
.modal-body
.form-group
label New Name
input.form-control(
type="text",
placeholder="New Project Name",
ng-model="inputs.projectName",
ng-enter="clone()",
ng-focus-on="open"
)
.modal-footer
button.btn.btn-default(
ng-disabled="state.inflight"
ng-click="cancel()"
) Cancel
button.btn.btn-primary(
ng-disabled="state.inflight"
ng-click="clone()"
)
span(ng-hide="state.inflight") Copy
span(ng-show="state.inflight") Copying...
script(type='text/ng-template', id='newProjectModalTemplate')
.modal-header
h3 New Project

View file

@ -263,6 +263,43 @@ ProjectPageApp.controller "ProjectPageController", ($scope, $modal, $http, $q) -
$scope.renameProject(project, newName)
)
$scope.cloneProject = (project, cloneName) ->
deferred = $q.defer()
$http
.post("/project/#{project.id}/clone", {
_csrf: window.csrfToken
projectName: cloneName
})
.success((data, status, headers, config) ->
$scope.projects.push {
name: cloneName
id: data.project_id
accessLevel: "owner"
# TODO: Check access level if correct after adding it in
# to the rest of the app
}
$scope.updateVisibleProjects()
deferred.resolve(data.project_id)
)
.error((data, status, headers, config) ->
deferred.reject()
)
return deferred.promise
$scope.openCloneProjectModal = () ->
project = $scope.getFirstSelectedProject()
return if !project?
modalInstance = $modal.open(
templateUrl: "cloneProjectModalTemplate"
controller: "CloneProjectModalController"
resolve:
project: () -> project
scope: $scope
)
$scope.archiveSelectedProjects = () ->
selected_projects = $scope.getSelectedProjects()
selected_project_ids = $scope.getSelectedProjectIds()
@ -411,6 +448,28 @@ ProjectPageApp.controller 'RenameProjectModalController', ($scope, $modalInstanc
$scope.cancel = () ->
$modalInstance.dismiss('cancel')
ProjectPageApp.controller 'CloneProjectModalController', ($scope, $modalInstance, $timeout, project) ->
$scope.inputs =
projectName: project.name + " (Copy)"
$scope.state =
inflight: false
$modalInstance.opened.then () ->
$timeout () ->
$scope.$broadcast "open"
, 700
$scope.clone = () ->
$scope.state.inflight = true
$scope
.cloneProject(project, $scope.inputs.projectName)
.then (project_id) ->
$scope.state.inflight = false
$modalInstance.close(project_id)
$scope.cancel = () ->
$modalInstance.dismiss('cancel')
ProjectPageApp.controller 'NewProjectModalController', ($scope, $modalInstance, $timeout, template) ->
$scope.inputs =
projectName: ""