Add option to clone filters on project duplication
* Fixed missing metadata option from project "create from" * Added option to clone project custom filters * Added append option to custom field tests * Added a test that uses the "append" option * Fixed disabled swimlane duplication error with Postgresql
This commit is contained in:
committed by
Frédéric Guillot
parent
d3be738d4f
commit
c250f3b1b8
@@ -101,4 +101,39 @@ class CustomFilterModel extends Base
|
||||
{
|
||||
return $this->db->table(self::TABLE)->eq('id', $filter_id)->remove();
|
||||
}
|
||||
|
||||
/**
|
||||
* Duplicate custom filters from a project to another one, must be executed inside a transaction
|
||||
*
|
||||
* @param integer $src_project_id Source project id
|
||||
* @param integer $dst_project_id Destination project id
|
||||
* @return boolean
|
||||
*/
|
||||
public function duplicate($src_project_id, $dst_project_id)
|
||||
{
|
||||
$filters = $this->db
|
||||
->table(self::TABLE)
|
||||
->columns(
|
||||
self::TABLE.'.user_id',
|
||||
self::TABLE.'.filter',
|
||||
self::TABLE.'.name',
|
||||
self::TABLE.'.is_shared',
|
||||
self::TABLE.'.append'
|
||||
)
|
||||
->eq('project_id', $src_project_id)
|
||||
->findAll();
|
||||
|
||||
foreach ($filters as $filter) {
|
||||
$filter['project_id'] = $dst_project_id;
|
||||
// Avoid SQL error with Postgres
|
||||
$filter['is_shared'] = $filter['is_shared'] ?: 0;
|
||||
$filter['append'] = $filter['append'] ?: 0;
|
||||
|
||||
if (! $this->db->table(self::TABLE)->save($filter)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,6 +28,7 @@ class ProjectDuplicationModel extends Base
|
||||
'projectPermissionModel',
|
||||
'actionModel',
|
||||
'tagDuplicationModel',
|
||||
'customFilterModel',
|
||||
'projectMetadataModel',
|
||||
'projectTaskDuplicationModel',
|
||||
);
|
||||
@@ -50,6 +51,7 @@ class ProjectDuplicationModel extends Base
|
||||
'actionModel',
|
||||
'swimlaneModel',
|
||||
'tagDuplicationModel',
|
||||
'customFilterModel',
|
||||
'projectMetadataModel',
|
||||
'projectTaskDuplicationModel',
|
||||
);
|
||||
|
||||
@@ -443,7 +443,7 @@ class SwimlaneModel extends Base
|
||||
'name' => $swimlane['name'],
|
||||
'description' => $swimlane['description'],
|
||||
'position' => $swimlane['position'],
|
||||
'is_active' => $swimlane['is_active'],
|
||||
'is_active' => $swimlane['is_active'] ? self::ACTIVE : self::INACTIVE, // Avoid SQL error with Postgres
|
||||
'project_id' => $projectDstId,
|
||||
);
|
||||
|
||||
|
||||
@@ -30,6 +30,8 @@
|
||||
<?= $this->form->checkbox('categoryModel', t('Categories'), 1, true) ?>
|
||||
<?= $this->form->checkbox('tagDuplicationModel', t('Tags'), 1, true) ?>
|
||||
<?= $this->form->checkbox('actionModel', t('Actions'), 1, true) ?>
|
||||
<?= $this->form->checkbox('customFilterModel', t('Custom filters'), 1, true) ?>
|
||||
<?= $this->form->checkbox('projectMetadataModel', t('Metadata'), 1, false) ?>
|
||||
<?= $this->form->checkbox('projectTaskDuplicationModel', t('Tasks'), 1, false) ?>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
<?= $this->form->checkbox('categoryModel', t('Categories'), 1, true) ?>
|
||||
<?= $this->form->checkbox('tagDuplicationModel', t('Tags'), 1, true) ?>
|
||||
<?= $this->form->checkbox('actionModel', t('Actions'), 1, true) ?>
|
||||
<?= $this->form->checkbox('customFilterModel', t('Custom filters'), 1, true) ?>
|
||||
<?= $this->form->checkbox('projectMetadataModel', t('Metadata'), 1, false) ?>
|
||||
<?= $this->form->checkbox('projectTaskDuplicationModel', t('Tasks'), 1, false) ?>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user