From dfd79722270b4f7a6653cb130b6518dcd7bd8c95 Mon Sep 17 00:00:00 2001 From: Frederic Guillot Date: Sat, 18 Jul 2015 11:33:51 -0400 Subject: Add new search attribute for swimlane --- app/Core/Lexer.php | 2 ++ app/Model/TaskFilter.php | 27 +++++++++++++++++++++++++++ app/Model/TaskFinder.php | 3 +++ app/Template/listing/show.php | 18 ++++++------------ app/Template/search/results.php | 20 +++++++------------- 5 files changed, 45 insertions(+), 25 deletions(-) (limited to 'app') diff --git a/app/Core/Lexer.php b/app/Core/Lexer.php index 3887dc82..0a237254 100644 --- a/app/Core/Lexer.php +++ b/app/Core/Lexer.php @@ -33,6 +33,7 @@ class Lexer "/^(category:)/" => 'T_CATEGORY', "/^(column:)/" => 'T_COLUMN', "/^(project:)/" => 'T_PROJECT', + "/^(swimlane:)/" => 'T_SWIMLANE', "/^(ref:)/" => 'T_REFERENCE', "/^(reference:)/" => 'T_REFERENCE', "/^(\s+)/" => 'T_WHITESPACE', @@ -116,6 +117,7 @@ class Lexer case 'T_CATEGORY': case 'T_COLUMN': case 'T_PROJECT': + case 'T_SWIMLANE': $next = next($tokens); if ($next !== false && $next['token'] === 'T_STRING') { diff --git a/app/Model/TaskFilter.php b/app/Model/TaskFilter.php index 377ec3c6..822397ec 100644 --- a/app/Model/TaskFilter.php +++ b/app/Model/TaskFilter.php @@ -71,6 +71,9 @@ class TaskFilter extends Base case 'T_REFERENCE': $this->filterByReference($value); break; + case 'T_SWIMLANE': + $this->filterBySwimlaneName($value); + break; } } @@ -246,6 +249,30 @@ class TaskFilter extends Base $this->query->closeOr(); } + /** + * Filter by swimlane name + * + * @access public + * @param array $values List of swimlane name + * @return TaskFilter + */ + public function filterBySwimlaneName(array $values) + { + $this->query->beginOr(); + + foreach ($values as $swimlane) { + if ($swimlane === 'default') { + $this->query->eq(Task::TABLE.'.swimlane_id', 0); + } + else { + $this->query->ilike(Swimlane::TABLE.'.name', $swimlane); + $this->query->addCondition(Task::TABLE.'.swimlane_id=0 AND '.Project::TABLE.'.default_swimlane '.$this->db->getDriver()->getOperator('ILIKE')." '$swimlane'"); + } + } + + $this->query->closeOr(); + } + /** * Filter by category id * diff --git a/app/Model/TaskFinder.php b/app/Model/TaskFinder.php index 2b0453a5..47a67a35 100644 --- a/app/Model/TaskFinder.php +++ b/app/Model/TaskFinder.php @@ -88,11 +88,14 @@ class TaskFinder extends Base Category::TABLE.'.name AS category_name', Category::TABLE.'.description AS category_description', Board::TABLE.'.title AS column_name', + Swimlane::TABLE.'.name AS swimlane_name', + Project::TABLE.'.default_swimlane', Project::TABLE.'.name AS project_name' ) ->join(User::TABLE, 'id', 'owner_id', Task::TABLE) ->join(Category::TABLE, 'id', 'category_id', Task::TABLE) ->join(Board::TABLE, 'id', 'column_id', Task::TABLE) + ->join(Swimlane::TABLE, 'id', 'swimlane_id', Task::TABLE) ->join(Project::TABLE, 'id', 'project_id', Task::TABLE); } diff --git a/app/Template/listing/show.php b/app/Template/listing/show.php index 06940678..fc8a607b 100644 --- a/app/Template/listing/show.php +++ b/app/Template/listing/show.php @@ -10,13 +10,12 @@ - - + + + - - getCollection() as $task): ?> @@ -24,6 +23,9 @@ + @@ -43,14 +45,6 @@ - -
order(t('Id'), 'tasks.id') ?>order(t('Column'), 'tasks.column_id') ?>order(t('Category'), 'tasks.category_id') ?>order(t('Swimlane'), 'tasks.swimlane_id') ?>order(t('Column'), 'tasks.column_id') ?>order(t('Category'), 'tasks.category_id') ?> order(t('Title'), 'tasks.title') ?> order(t('Assignee'), 'users.username') ?> order(t('Due date'), 'tasks.date_due') ?>order(t('Date created'), 'tasks.date_creation') ?>order(t('Date completed'), 'tasks.date_completed') ?> order(t('Status'), 'tasks.is_active') ?>
url->link('#'.$this->e($task['id']), 'task', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id']), false, '', t('View this task')) ?> + e($task['swimlane_name'] ?: $task['default_swimlane']) ?> + e($task['column_name']) ?> - - - - - - diff --git a/app/Template/search/results.php b/app/Template/search/results.php index 1d8cc6e2..04cb6a19 100644 --- a/app/Template/search/results.php +++ b/app/Template/search/results.php @@ -1,14 +1,13 @@ - - - + + + + - - getCollection() as $task): ?> @@ -19,6 +18,9 @@ + @@ -38,14 +40,6 @@ - -
order(t('Project'), 'tasks.project_id') ?>order(t('Id'), 'tasks.id') ?>order(t('Column'), 'tasks.column_id') ?>order(t('Category'), 'tasks.category_id') ?>order(t('Id'), 'tasks.id') ?>order(t('Swimlane'), 'tasks.swimlane_id') ?>order(t('Column'), 'tasks.column_id') ?>order(t('Category'), 'tasks.category_id') ?> order(t('Title'), 'tasks.title') ?> order(t('Assignee'), 'users.username') ?> order(t('Due date'), 'tasks.date_due') ?>order(t('Date created'), 'tasks.date_creation') ?>order(t('Date completed'), 'tasks.date_completed') ?> order(t('Status'), 'tasks.is_active') ?>
url->link('#'.$this->e($task['id']), 'task', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id']), false, '', t('View this task')) ?> + e($task['swimlane_name'] ?: $task['default_swimlane']) ?> + e($task['column_name']) ?> - - - - - - -- cgit v1.2.3