Change column move restriction behavior
This commit is contained in:
@@ -36,7 +36,7 @@ class ProjectRoleHelper extends Base
|
|||||||
public function isDraggable(array &$task)
|
public function isDraggable(array &$task)
|
||||||
{
|
{
|
||||||
if ($task['is_active'] == 1 && $this->helper->user->hasProjectAccess('BoardViewController', 'save', $task['project_id'])) {
|
if ($task['is_active'] == 1 && $this->helper->user->hasProjectAccess('BoardViewController', 'save', $task['project_id'])) {
|
||||||
return $this->isSortableColumn($task['project_id'], $task['column_id'], 'src_column_id');
|
return $this->isSortableColumn($task['project_id'], $task['column_id']);
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
@@ -47,10 +47,9 @@ class ProjectRoleHelper extends Base
|
|||||||
*
|
*
|
||||||
* @param int $project_id
|
* @param int $project_id
|
||||||
* @param int $column_id
|
* @param int $column_id
|
||||||
* @param string $field
|
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public function isSortableColumn($project_id, $column_id, $field)
|
public function isSortableColumn($project_id, $column_id)
|
||||||
{
|
{
|
||||||
$role = $this->getProjectUserRole($project_id);
|
$role = $this->getProjectUserRole($project_id);
|
||||||
|
|
||||||
@@ -58,7 +57,7 @@ class ProjectRoleHelper extends Base
|
|||||||
$sortableColumns = $this->columnMoveRestrictionCacheDecorator->getSortableColumns($project_id, $role);
|
$sortableColumns = $this->columnMoveRestrictionCacheDecorator->getSortableColumns($project_id, $role);
|
||||||
|
|
||||||
foreach ($sortableColumns as $column) {
|
foreach ($sortableColumns as $column) {
|
||||||
if ($column[$field] == $column_id) {
|
if ($column['src_column_id'] == $column_id || $column['dst_column_id'] == $column_id) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -92,6 +91,10 @@ class ProjectRoleHelper extends Base
|
|||||||
if ($column['src_column_id'] == $src_column_id && $column['dst_column_id'] == $dst_column_id) {
|
if ($column['src_column_id'] == $src_column_id && $column['dst_column_id'] == $dst_column_id) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($column['dst_column_id'] == $src_column_id && $column['src_column_id'] == $dst_column_id) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return empty($sortableColumns);
|
return empty($sortableColumns);
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
<!-- tasks list -->
|
<!-- tasks list -->
|
||||||
<div
|
<div
|
||||||
class="board-task-list board-column-expanded <?= $this->projectRole->isSortableColumn($column['project_id'], $column['id'], 'dst_column_id') ? 'sortable-column' : '' ?>"
|
class="board-task-list board-column-expanded <?= $this->projectRole->isSortableColumn($column['project_id'], $column['id']) ? 'sortable-column' : '' ?>"
|
||||||
data-column-id="<?= $column['id'] ?>"
|
data-column-id="<?= $column['id'] ?>"
|
||||||
data-swimlane-id="<?= $swimlane['id'] ?>"
|
data-swimlane-id="<?= $swimlane['id'] ?>"
|
||||||
data-task-limit="<?= $column['task_limit'] ?>">
|
data-task-limit="<?= $column['task_limit'] ?>">
|
||||||
|
|||||||
@@ -265,13 +265,21 @@ class ProjectRoleHelperTest extends Base
|
|||||||
$this->assertEquals(1, $columnMoveRestrictionModel->create(1, 1, 2, 3));
|
$this->assertEquals(1, $columnMoveRestrictionModel->create(1, 1, 2, 3));
|
||||||
|
|
||||||
$this->assertTrue($projectUserRole->addUser(1, 2, 'Custom Role'));
|
$this->assertTrue($projectUserRole->addUser(1, 2, 'Custom Role'));
|
||||||
$this->assertEquals(1, $taskCreationModel->create(array('project_id' => 1, 'title' => 'test', 'column_id' => 2)));
|
$this->assertEquals(1, $taskCreationModel->create(array('project_id' => 1, 'title' => 'test', 'column_id' => 1)));
|
||||||
$this->assertEquals(2, $taskCreationModel->create(array('project_id' => 1, 'title' => 'test', 'column_id' => 3)));
|
$this->assertEquals(2, $taskCreationModel->create(array('project_id' => 1, 'title' => 'test', 'column_id' => 2)));
|
||||||
|
$this->assertEquals(3, $taskCreationModel->create(array('project_id' => 1, 'title' => 'test', 'column_id' => 3)));
|
||||||
|
$this->assertEquals(4, $taskCreationModel->create(array('project_id' => 1, 'title' => 'test', 'column_id' => 4)));
|
||||||
|
|
||||||
$task = $taskFinderModel->getById(1);
|
$task = $taskFinderModel->getById(1);
|
||||||
$this->assertTrue($projectRoleHelper->isDraggable($task));
|
$this->assertFalse($projectRoleHelper->isDraggable($task));
|
||||||
|
|
||||||
$task = $taskFinderModel->getById(2);
|
$task = $taskFinderModel->getById(2);
|
||||||
|
$this->assertTrue($projectRoleHelper->isDraggable($task));
|
||||||
|
|
||||||
|
$task = $taskFinderModel->getById(3);
|
||||||
|
$this->assertTrue($projectRoleHelper->isDraggable($task));
|
||||||
|
|
||||||
|
$task = $taskFinderModel->getById(4);
|
||||||
$this->assertFalse($projectRoleHelper->isDraggable($task));
|
$this->assertFalse($projectRoleHelper->isDraggable($task));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user