Duplicate project metadata when duplicating project (#2074)

This commit is contained in:
Busfreak 2016-05-12 00:26:44 +02:00 committed by Frédéric Guillot
parent 754b2bf1f0
commit 58ccf9f692
4 changed files with 24 additions and 4 deletions

View File

@ -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');
}
/**

View File

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

View File

@ -18,6 +18,7 @@
<?= $this->form->checkbox('action', t('Actions'), 1, true) ?>
<?= $this->form->checkbox('swimlane', t('Swimlanes'), 1, false) ?>
<?= $this->form->checkbox('task', t('Tasks'), 1, false) ?>
<?= $this->form->checkbox('projectMetadata', t('Metadata'), 1, false) ?>
<div class="form-actions">
<button type="submit" class="btn btn-red"><?= t('Duplicate') ?></button>

View File

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