From 58ccf9f6929512bc5ccba16279eacde3e9dc537e Mon Sep 17 00:00:00 2001 From: Busfreak Date: Thu, 12 May 2016 00:26:44 +0200 Subject: Duplicate project metadata when duplicating project (#2074) --- app/Model/ProjectDuplication.php | 4 ++-- app/Model/ProjectMetadata.php | 19 +++++++++++++++++++ app/Template/project/duplicate.php | 1 + tests/units/Model/ProjectDuplicationTest.php | 4 ++-- 4 files changed, 24 insertions(+), 4 deletions(-) diff --git a/app/Model/ProjectDuplication.php b/app/Model/ProjectDuplication.php index 9c5f80ad..79011258 100644 --- a/app/Model/ProjectDuplication.php +++ b/app/Model/ProjectDuplication.php @@ -21,7 +21,7 @@ class ProjectDuplication extends Base */ public function getOptionalSelection() { - return array('category', 'projectPermission', 'action', 'swimlane', 'task'); + return array('category', 'projectPermission', 'action', 'swimlane', 'task', 'projectMetadata'); } /** @@ -32,7 +32,7 @@ class ProjectDuplication extends Base */ public function getPossibleSelection() { - return array('board', 'category', 'projectPermission', 'action', 'swimlane', 'task'); + return array('board', 'category', 'projectPermission', 'action', 'swimlane', 'task', 'projectMetadata'); } /** diff --git a/app/Model/ProjectMetadata.php b/app/Model/ProjectMetadata.php index 85498053..256f5e1f 100644 --- a/app/Model/ProjectMetadata.php +++ b/app/Model/ProjectMetadata.php @@ -27,4 +27,23 @@ class ProjectMetadata extends Metadata { return 'project_id'; } + + /** + * Helper method to duplicate all metadata to another project + * + * @access public + * @param integer $src_project_id + * @param integer $dst_project_id + * @return boolean + */ + public function duplicate($src_project_id, $dst_project_id) + { + $metadata = $this->getAll($src_project_id); + + if (! $this->save($dst_project_id, $metadata)) { + return false; + } + + return true; + } } diff --git a/app/Template/project/duplicate.php b/app/Template/project/duplicate.php index 7cfa8969..e856ec80 100644 --- a/app/Template/project/duplicate.php +++ b/app/Template/project/duplicate.php @@ -18,6 +18,7 @@ form->checkbox('action', t('Actions'), 1, true) ?> form->checkbox('swimlane', t('Swimlanes'), 1, false) ?> form->checkbox('task', t('Tasks'), 1, false) ?> + form->checkbox('projectMetadata', t('Metadata'), 1, false) ?>
diff --git a/tests/units/Model/ProjectDuplicationTest.php b/tests/units/Model/ProjectDuplicationTest.php index ee5b4ce4..14db80bf 100644 --- a/tests/units/Model/ProjectDuplicationTest.php +++ b/tests/units/Model/ProjectDuplicationTest.php @@ -22,8 +22,8 @@ class ProjectDuplicationTest extends Base public function testGetSelections() { $projectDuplicationModel = new ProjectDuplication($this->container); - $this->assertCount(5, $projectDuplicationModel->getOptionalSelection()); - $this->assertCount(6, $projectDuplicationModel->getPossibleSelection()); + $this->assertCount(6, $projectDuplicationModel->getOptionalSelection()); + $this->assertCount(7, $projectDuplicationModel->getPossibleSelection()); } public function testGetClonedProjectName() -- cgit v1.2.3