Add status attribute for advanced search

This commit is contained in:
Frederic Guillot
2015-06-28 20:47:39 -04:00
parent 7af5a923b0
commit 2e7e703180
5 changed files with 88 additions and 1 deletions

View File

@@ -28,6 +28,7 @@ class Lexer
"/^(assignee:)/" => 'T_ASSIGNEE',
"/^(color:)/" => 'T_COLOR',
"/^(due:)/" => 'T_DUE',
"/^(status:)/" => 'T_STATUS',
"/^(title:)/" => 'T_TITLE',
"/^(\s+)/" => 'T_WHITESPACE',
'/^([<=>]{0,2}[0-9]{4}-[0-9]{2}-[0-9]{2})/' => 'T_DATE',
@@ -114,10 +115,11 @@ class Lexer
break;
case 'T_STATUS':
case 'T_DUE':
$next = next($tokens);
if ($next !== false && $next['token'] === 'T_DATE') {
if ($next !== false && ($next['token'] === 'T_DATE' || $next['token'] === 'T_STRING')) {
$map[$token['token']] = $next['match'];
}

View File

@@ -53,6 +53,9 @@ class TaskFilter extends Base
case 'T_TITLE':
$this->filterByTitle($value);
break;
case 'T_STATUS':
$this->filterByStatusName($value);
break;
}
}
@@ -296,6 +299,22 @@ class TaskFilter extends Base
return $this;
}
/**
* Filter by status name
*
* @access public
* @param string $status
* @return TaskFilter
*/
public function filterByStatusName($status)
{
if ($status === 'open' || $status === 'closed') {
$this->filterByStatus($status === 'open' ? Task::STATUS_OPEN : Task::STATUS_CLOSED);
}
return $this;
}
/**
* Filter by status
*
@@ -321,6 +340,7 @@ class TaskFilter extends Base
*/
public function filterByDueDate($date)
{
$this->query->neq('date_due', '');
$this->query->neq('date_due', 0);
$this->query->notNull('date_due');
return $this->filterWithOperator('date_due', $date, true);