Closes issue 3: Issues list left hand navigation - controls for issue due date
This commit is contained in:
parent
315e06da1b
commit
3bf4977460
@ -203,25 +203,47 @@ GROUP BY uid";
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the number of overdue/in date issues.
|
* Returns the number of overdue issues.
|
||||||
*
|
*
|
||||||
* @param string Status ('open'), 'closed'
|
|
||||||
* @return int Count
|
* @return int Count
|
||||||
*/
|
*/
|
||||||
public function getIssueCountByOverdue()
|
public function getIssueCountByDueDate($due='overdue', $status='open', $label=null, $ids=array())
|
||||||
{
|
{
|
||||||
$tags = implode(',', $this->getTagIdsByStatus('open'));
|
switch ($status) {
|
||||||
$sqlIssueTable = Pluf::factory('IDF_Issue')->getSqlTable();
|
case 'open':
|
||||||
$query = "SELECT (
|
$key = 'labels_issue_open';
|
||||||
SELECT COUNT(*) FROM $sqlIssueTable
|
$default = IDF_Form_IssueTrackingConf::init_open;
|
||||||
WHERE due_dtime < NOW() AND status IN ($tags)
|
break;
|
||||||
) AS overdue,
|
case 'closed':
|
||||||
( SELECT COUNT(*) FROM $sqlIssueTable
|
default:
|
||||||
WHERE due_dtime >= NOW() AND status IN ($tags)
|
$key = 'labels_issue_closed';
|
||||||
) AS undue";
|
$default = IDF_Form_IssueTrackingConf::init_closed;
|
||||||
$db = Pluf::db();
|
break;
|
||||||
$dbData = $db->select($query);
|
}
|
||||||
return current($dbData);
|
$tags = array();
|
||||||
|
foreach ($this->getTagsFromConfig($key, $default, 'Status') as $tag) {
|
||||||
|
$tags[] = (int)$tag->id;
|
||||||
|
}
|
||||||
|
if (count($tags) == 0) return array();
|
||||||
|
$sql = new Pluf_SQL(sprintf('project=%%s AND status IN (%s)', implode(', ', $tags)), array($this->id));
|
||||||
|
if (!is_null($label)) {
|
||||||
|
$sql2 = new Pluf_SQL('idf_tag_id=%s', array($label->id));
|
||||||
|
$sql->SAnd($sql2);
|
||||||
|
}
|
||||||
|
if (count($ids) > 0) {
|
||||||
|
$sql2 = new Pluf_SQL(sprintf('id IN (%s)', implode(', ', $ids)));
|
||||||
|
$sql->SAnd($sql2);
|
||||||
|
}
|
||||||
|
if('overdue' === $due) {
|
||||||
|
$sql3 = new Pluf_SQL('due_dtime < NOW()');
|
||||||
|
} else {
|
||||||
|
$sql3 = new Pluf_SQL('due_dtime >= NOW()');
|
||||||
|
}
|
||||||
|
$sql->SAnd($sql3);
|
||||||
|
$params = array('filter' => $sql->gen());
|
||||||
|
if (!is_null($label)) { $params['view'] = 'join_tags'; }
|
||||||
|
$gissue = new IDF_Issue();
|
||||||
|
return $gissue->getCount($params);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -42,6 +42,7 @@ class IDF_Views_Issue
|
|||||||
// Get stats about the issues
|
// Get stats about the issues
|
||||||
$open = $prj->getIssueCountByStatus('open');
|
$open = $prj->getIssueCountByStatus('open');
|
||||||
$closed = $prj->getIssueCountByStatus('closed');
|
$closed = $prj->getIssueCountByStatus('closed');
|
||||||
|
$overdue = $prj->getIssueCountByDueDate('overdue');
|
||||||
// Paginator to paginate the issues
|
// Paginator to paginate the issues
|
||||||
$pag = new Pluf_Paginator(new IDF_Issue());
|
$pag = new Pluf_Paginator(new IDF_Issue());
|
||||||
$pag->class = 'recent-issues';
|
$pag->class = 'recent-issues';
|
||||||
@ -72,6 +73,7 @@ class IDF_Views_Issue
|
|||||||
'page_title' => $title,
|
'page_title' => $title,
|
||||||
'open' => $open,
|
'open' => $open,
|
||||||
'closed' => $closed,
|
'closed' => $closed,
|
||||||
|
'overdue' => $overdue,
|
||||||
'issues' => $pag,
|
'issues' => $pag,
|
||||||
'cloud' => 'issues',
|
'cloud' => 'issues',
|
||||||
);
|
);
|
||||||
@ -123,12 +125,13 @@ class IDF_Views_Issue
|
|||||||
arsort($ownerStatistics);
|
arsort($ownerStatistics);
|
||||||
|
|
||||||
// Issue due date statistics
|
// Issue due date statistics
|
||||||
$overdue = $prj->getIssueCountByOverdue('open');
|
$overdue = $prj->getIssueCountByDueDate('overdue');
|
||||||
$combined_opened = $overdue['overdue'] + $overdue['undue'];
|
$undue = $prj->getIssueCountByDueDate('undue');
|
||||||
|
$combined_opened = $overdue + $undue;
|
||||||
$duedateStatistics = array();
|
$duedateStatistics = array();
|
||||||
if($combined_opened > 0) {
|
if($combined_opened > 0) {
|
||||||
$duedateStatistics['Overdue'] = array($overdue['overdue'], (int)(100 * $overdue['overdue'] / $combined_opened), 'Overdue');
|
$duedateStatistics['Overdue'] = array($overdue, (int)(100 * $overdue / $combined_opened), 'Overdue');
|
||||||
$duedateStatistics['Undue'] = array($overdue['undue'], (int)(100 * $overdue['undue'] / $combined_opened), 'Undue');
|
$duedateStatistics['Undue'] = array($undue, (int)(100 * $undue / $combined_opened), 'Undue');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Issue class tag statistics
|
// Issue class tag statistics
|
||||||
@ -198,9 +201,16 @@ class IDF_Views_Issue
|
|||||||
$nb_open = Pluf::factory('IDF_Issue')->getCount(array('filter'=>$sql->gen()));
|
$nb_open = Pluf::factory('IDF_Issue')->getCount(array('filter'=>$sql->gen()));
|
||||||
$sql = new Pluf_SQL('project=%s AND id IN ('.$issue_ids.') AND status IN ('.implode(', ', $ctags).')', array($prj->id));
|
$sql = new Pluf_SQL('project=%s AND id IN ('.$issue_ids.') AND status IN ('.implode(', ', $ctags).')', array($prj->id));
|
||||||
$nb_closed = Pluf::factory('IDF_Issue')->getCount(array('filter'=>$sql->gen()));
|
$nb_closed = Pluf::factory('IDF_Issue')->getCount(array('filter'=>$sql->gen()));
|
||||||
|
$sql = new Pluf_SQL('project=%s AND id IN ('.$issue_ids.') AND status IN ('.implode(', ', $otags).') AND due_dtime < NOW()', array($prj->id));
|
||||||
|
$nb_overdue = Pluf::factory('IDF_Issue')->getCount(array('filter'=>$sql->gen()));
|
||||||
|
|
||||||
// Generate a filter for the paginator
|
// Generate a filter for the paginator
|
||||||
switch ($match[2]) {
|
switch ($match[2]) {
|
||||||
|
case 'overdue':
|
||||||
|
$title = sprintf(__('Watch List: Overdue Issues for %s'), (string) $prj);
|
||||||
|
$summary = __('This table shows the overdue issues in your watch list for %s project.', (string) $prj);
|
||||||
|
$f_sql = new Pluf_SQL('project=%s AND id IN ('.$issue_ids.') AND status IN ('.implode(', ', $otags).') AND due_dtime < NOW()', array($prj->id));
|
||||||
|
break;
|
||||||
case 'closed':
|
case 'closed':
|
||||||
$title = sprintf(__('Watch List: Closed Issues for %s'), (string) $prj);
|
$title = sprintf(__('Watch List: Closed Issues for %s'), (string) $prj);
|
||||||
$summary = __('This table shows the closed issues in your watch list for %s project.', (string) $prj);
|
$summary = __('This table shows the closed issues in your watch list for %s project.', (string) $prj);
|
||||||
@ -243,6 +253,7 @@ class IDF_Views_Issue
|
|||||||
'page_title' => $title,
|
'page_title' => $title,
|
||||||
'open' => $nb_open,
|
'open' => $nb_open,
|
||||||
'closed' => $nb_closed,
|
'closed' => $nb_closed,
|
||||||
|
'overdue' => $nb_overdue,
|
||||||
'issues' => $pag,
|
'issues' => $pag,
|
||||||
),
|
),
|
||||||
$request);
|
$request);
|
||||||
@ -282,9 +293,16 @@ class IDF_Views_Issue
|
|||||||
$nb_open = Pluf::factory('IDF_Issue')->getCount(array('filter'=>$sql->gen()));
|
$nb_open = Pluf::factory('IDF_Issue')->getCount(array('filter'=>$sql->gen()));
|
||||||
$sql = new Pluf_SQL('id IN ('.$issue_ids.') AND status IN ('.implode(', ', $ctags).')', array());
|
$sql = new Pluf_SQL('id IN ('.$issue_ids.') AND status IN ('.implode(', ', $ctags).')', array());
|
||||||
$nb_closed = Pluf::factory('IDF_Issue')->getCount(array('filter'=>$sql->gen()));
|
$nb_closed = Pluf::factory('IDF_Issue')->getCount(array('filter'=>$sql->gen()));
|
||||||
|
$sql = new Pluf_SQL('id IN ('.$issue_ids.') AND status IN ('.implode(', ', $otags).') AND due_dtime < NOW()', array());
|
||||||
|
$nb_overdue = Pluf::factory('IDF_Issue')->getCount(array('filter'=>$sql->gen()));
|
||||||
|
|
||||||
// Generate a filter for the paginator
|
// Generate a filter for the paginator
|
||||||
switch ($match[1]) {
|
switch ($match[1]) {
|
||||||
|
case 'overdue':
|
||||||
|
$title = sprintf(__('Watch List: Overdue Issues'));
|
||||||
|
$summary = __('This table shows the overdue issues in your watch list.');
|
||||||
|
$f_sql = new Pluf_SQL('id IN ('.$issue_ids.') AND status IN ('.implode(', ', $otags).') AND due_dtime < NOW()', array());
|
||||||
|
break;
|
||||||
case 'closed':
|
case 'closed':
|
||||||
$title = sprintf(__('Watch List: Closed Issues'));
|
$title = sprintf(__('Watch List: Closed Issues'));
|
||||||
$summary = __('This table shows the closed issues in your watch list.');
|
$summary = __('This table shows the closed issues in your watch list.');
|
||||||
@ -325,6 +343,7 @@ class IDF_Views_Issue
|
|||||||
array('page_title' => $title,
|
array('page_title' => $title,
|
||||||
'open' => $nb_open,
|
'open' => $nb_open,
|
||||||
'closed' => $nb_closed,
|
'closed' => $nb_closed,
|
||||||
|
'overdue' => $nb_overdue,
|
||||||
'issues' => $pag,
|
'issues' => $pag,
|
||||||
),
|
),
|
||||||
$request);
|
$request);
|
||||||
@ -476,7 +495,7 @@ class IDF_Views_Issue
|
|||||||
public function searchStatus($request, $match)
|
public function searchStatus($request, $match)
|
||||||
{
|
{
|
||||||
$query = !isset($request->REQUEST['q']) ? '' : $request->REQUEST['q'];
|
$query = !isset($request->REQUEST['q']) ? '' : $request->REQUEST['q'];
|
||||||
$status = in_array($match[2], array('open', 'closed')) ? $match[2] : 'open';
|
$status = in_array($match[2], array('open', 'closed', 'overdue')) ? $match[2] : 'open';
|
||||||
return $this->doSearch($request, $query, $status);
|
return $this->doSearch($request, $query, $status);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -485,7 +504,7 @@ class IDF_Views_Issue
|
|||||||
{
|
{
|
||||||
$query = !isset($request->REQUEST['q']) ? '' : $request->REQUEST['q'];
|
$query = !isset($request->REQUEST['q']) ? '' : $request->REQUEST['q'];
|
||||||
$tag_id = intval($match[2]);
|
$tag_id = intval($match[2]);
|
||||||
$status = in_array($match[3], array('open', 'closed')) ? $match[3] : 'open';
|
$status = in_array($match[3], array('open', 'closed', 'overdue')) ? $match[3] : 'open';
|
||||||
return $this->doSearch($request, $query, $status, $tag_id);
|
return $this->doSearch($request, $query, $status, $tag_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -505,6 +524,10 @@ class IDF_Views_Issue
|
|||||||
$title = sprintf(__('Search issues - %s'), $query);
|
$title = sprintf(__('Search issues - %s'), $query);
|
||||||
if ($status === 'closed') {
|
if ($status === 'closed') {
|
||||||
$title = sprintf(__('Search closed issues - %s'), $query);
|
$title = sprintf(__('Search closed issues - %s'), $query);
|
||||||
|
} elseif ($status === 'overdue') {
|
||||||
|
$title = sprintf(__('Search overdue issues - %s'), $query);
|
||||||
|
$status = 'open';
|
||||||
|
$overdue_status = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// using Plufs ResultSet implementation here is inefficient, because
|
// using Plufs ResultSet implementation here is inefficient, because
|
||||||
@ -525,6 +548,10 @@ class IDF_Views_Issue
|
|||||||
'AND status IN ('.implode(', ', $otags).') '.
|
'AND status IN ('.implode(', ', $otags).') '.
|
||||||
($tag_id !== null ? 'AND idf_tag_id='.$tag_id.' ' : '')
|
($tag_id !== null ? 'AND idf_tag_id='.$tag_id.' ' : '')
|
||||||
);
|
);
|
||||||
|
if(isset($overdue_status)) {
|
||||||
|
$sql2 = new Pluf_SQL('due_dtime < NOW()');
|
||||||
|
$sql->SAnd($sql2);
|
||||||
|
}
|
||||||
$model = new IDF_Issue();
|
$model = new IDF_Issue();
|
||||||
$issues = $model->getList(array('filter' => $sql->gen(), 'view' => 'join_tags'));
|
$issues = $model->getList(array('filter' => $sql->gen(), 'view' => 'join_tags'));
|
||||||
|
|
||||||
@ -578,6 +605,7 @@ class IDF_Views_Issue
|
|||||||
}
|
}
|
||||||
|
|
||||||
// get stats about the issues
|
// get stats about the issues
|
||||||
|
$overdue = $prj->getIssueCountByDueDate('overdue', 'open', $tag, $issue_ids);
|
||||||
$open = $prj->getIssueCountByStatus('open', $tag, $issue_ids);
|
$open = $prj->getIssueCountByStatus('open', $tag, $issue_ids);
|
||||||
$closed = $prj->getIssueCountByStatus('closed', $tag, $issue_ids);
|
$closed = $prj->getIssueCountByStatus('closed', $tag, $issue_ids);
|
||||||
|
|
||||||
@ -599,6 +627,7 @@ class IDF_Views_Issue
|
|||||||
'status' => $status,
|
'status' => $status,
|
||||||
'open' => $open,
|
'open' => $open,
|
||||||
'closed' => $closed,
|
'closed' => $closed,
|
||||||
|
'overdue' => $overdue,
|
||||||
'tag' => $tag,
|
'tag' => $tag,
|
||||||
'all_tags' => $grouped_tags,
|
'all_tags' => $grouped_tags,
|
||||||
);
|
);
|
||||||
@ -763,6 +792,7 @@ class IDF_Views_Issue
|
|||||||
// Get stats about the issues
|
// Get stats about the issues
|
||||||
$open = $prj->getIssueCountByStatus('open');
|
$open = $prj->getIssueCountByStatus('open');
|
||||||
$closed = $prj->getIssueCountByStatus('closed');
|
$closed = $prj->getIssueCountByStatus('closed');
|
||||||
|
$overdue = $prj->getIssueCountByDueDate('overdue');
|
||||||
// Paginator to paginate the issues
|
// Paginator to paginate the issues
|
||||||
$pag = new Pluf_Paginator(new IDF_Issue());
|
$pag = new Pluf_Paginator(new IDF_Issue());
|
||||||
$pag->class = 'recent-issues';
|
$pag->class = 'recent-issues';
|
||||||
@ -794,6 +824,7 @@ class IDF_Views_Issue
|
|||||||
'page_title' => $title,
|
'page_title' => $title,
|
||||||
'open' => $open,
|
'open' => $open,
|
||||||
'closed' => $closed,
|
'closed' => $closed,
|
||||||
|
'overdue' => $overdue,
|
||||||
'issues' => $pag,
|
'issues' => $pag,
|
||||||
'cloud' => 'closed_issues',
|
'cloud' => 'closed_issues',
|
||||||
),
|
),
|
||||||
@ -813,6 +844,7 @@ class IDF_Views_Issue
|
|||||||
// Get stats about the issues
|
// Get stats about the issues
|
||||||
$open = $prj->getIssueCountByStatus('open');
|
$open = $prj->getIssueCountByStatus('open');
|
||||||
$closed = $prj->getIssueCountByStatus('closed');
|
$closed = $prj->getIssueCountByStatus('closed');
|
||||||
|
$overdue = $prj->getIssueCountByDueDate('overdue');
|
||||||
// Paginator to paginate the issues
|
// Paginator to paginate the issues
|
||||||
$pag = new Pluf_Paginator(new IDF_Issue());
|
$pag = new Pluf_Paginator(new IDF_Issue());
|
||||||
$pag->class = 'recent-issues';
|
$pag->class = 'recent-issues';
|
||||||
@ -849,6 +881,7 @@ class IDF_Views_Issue
|
|||||||
'page_title' => $title,
|
'page_title' => $title,
|
||||||
'open' => $open,
|
'open' => $open,
|
||||||
'closed' => $closed,
|
'closed' => $closed,
|
||||||
|
'overdue' => $overdue,
|
||||||
'issues' => $pag,
|
'issues' => $pag,
|
||||||
'cloud' => 'closed_issues',
|
'cloud' => 'closed_issues',
|
||||||
),
|
),
|
||||||
@ -864,12 +897,17 @@ class IDF_Views_Issue
|
|||||||
$prj = $request->project;
|
$prj = $request->project;
|
||||||
$tag = Pluf_Shortcuts_GetObjectOr404('IDF_Tag', $match[2]);
|
$tag = Pluf_Shortcuts_GetObjectOr404('IDF_Tag', $match[2]);
|
||||||
$status = $match[3];
|
$status = $match[3];
|
||||||
if ($tag->project != $prj->id or !in_array($status, array('open', 'closed'))) {
|
if ($tag->project != $prj->id or !in_array($status, array('open', 'closed', 'overdue'))) {
|
||||||
throw new Pluf_HTTP_Error404();
|
throw new Pluf_HTTP_Error404();
|
||||||
}
|
}
|
||||||
if ($status == 'open') {
|
if ($status == 'open') {
|
||||||
$title = sprintf(__('%1$s Issues with Label %2$s'), (string) $prj,
|
$title = sprintf(__('%1$s Issues with Label %2$s'), (string) $prj,
|
||||||
(string) $tag);
|
(string) $tag);
|
||||||
|
} elseif ($status == 'overdue') {
|
||||||
|
$title = sprintf(__('%1$s Overdue Issues with Label %2$s'), (string) $prj,
|
||||||
|
(string) $tag);
|
||||||
|
$overdue_status = true;
|
||||||
|
$status = 'open';
|
||||||
} else {
|
} else {
|
||||||
$title = sprintf(__('%1$s Closed Issues with Label %2$s'),
|
$title = sprintf(__('%1$s Closed Issues with Label %2$s'),
|
||||||
(string) $prj, (string) $tag);
|
(string) $prj, (string) $tag);
|
||||||
@ -877,6 +915,7 @@ class IDF_Views_Issue
|
|||||||
// Get stats about the open/closed issues having this tag.
|
// Get stats about the open/closed issues having this tag.
|
||||||
$open = $prj->getIssueCountByStatus('open', $tag);
|
$open = $prj->getIssueCountByStatus('open', $tag);
|
||||||
$closed = $prj->getIssueCountByStatus('closed', $tag);
|
$closed = $prj->getIssueCountByStatus('closed', $tag);
|
||||||
|
$overdue = $prj->getIssueCountByDueDate('overdue', 'open', $tag);
|
||||||
// Paginator to paginate the issues
|
// Paginator to paginate the issues
|
||||||
$pag = new Pluf_Paginator(new IDF_Issue());
|
$pag = new Pluf_Paginator(new IDF_Issue());
|
||||||
$pag->model_view = 'join_tags';
|
$pag->model_view = 'join_tags';
|
||||||
@ -888,6 +927,9 @@ class IDF_Views_Issue
|
|||||||
$otags = $prj->getTagIdsByStatus($status);
|
$otags = $prj->getTagIdsByStatus($status);
|
||||||
if (count($otags) == 0) $otags[] = 0;
|
if (count($otags) == 0) $otags[] = 0;
|
||||||
$pag->forced_where = new Pluf_SQL('project=%s AND idf_tag_id=%s AND status IN ('.implode(', ', $otags).')', array($prj->id, $tag->id));
|
$pag->forced_where = new Pluf_SQL('project=%s AND idf_tag_id=%s AND status IN ('.implode(', ', $otags).')', array($prj->id, $tag->id));
|
||||||
|
if(isset($overdue_status)) {
|
||||||
|
$pag->forced_where->SAnd(new Pluf_SQL('due_dtime < NOW()'));
|
||||||
|
}
|
||||||
$pag->action = array('IDF_Views_Issue::listLabel', array($prj->shortname, $tag->id, $status));
|
$pag->action = array('IDF_Views_Issue::listLabel', array($prj->shortname, $tag->id, $status));
|
||||||
$pag->sort_order = array('modif_dtime', 'ASC'); // will be reverted
|
$pag->sort_order = array('modif_dtime', 'ASC'); // will be reverted
|
||||||
$pag->sort_reverse_order = array('modif_dtime');
|
$pag->sort_reverse_order = array('modif_dtime');
|
||||||
@ -916,6 +958,7 @@ class IDF_Views_Issue
|
|||||||
'open' => $open,
|
'open' => $open,
|
||||||
'label' => $tag,
|
'label' => $tag,
|
||||||
'closed' => $closed,
|
'closed' => $closed,
|
||||||
|
'overdue' => $overdue,
|
||||||
'issues' => $pag,
|
'issues' => $pag,
|
||||||
),
|
),
|
||||||
$request);
|
$request);
|
||||||
|
@ -12,6 +12,10 @@
|
|||||||
{aurl 'closed_url', 'IDF_Views_Issue::listLabel', array($project.shortname, $label.id, 'closed')}
|
{aurl 'closed_url', 'IDF_Views_Issue::listLabel', array($project.shortname, $label.id, 'closed')}
|
||||||
{blocktrans}<p><strong>Open issues:</strong> <a href="{$open_url}">{$open}</a></p>
|
{blocktrans}<p><strong>Open issues:</strong> <a href="{$open_url}">{$open}</a></p>
|
||||||
<p><strong>Closed issues:</strong> <a href="{$closed_url}">{$closed}</a></p>
|
<p><strong>Closed issues:</strong> <a href="{$closed_url}">{$closed}</a></p>
|
||||||
|
<p>
|
||||||
|
{aurl 'overdue_url', 'IDF_Views_Issue::listLabel', array($project.shortname, $label.id, 'overdue')}
|
||||||
|
<span>Overdue:</span> <a href="{$overdue_url}">{$overdue}</a>
|
||||||
|
</p>
|
||||||
{/blocktrans}
|
{/blocktrans}
|
||||||
<p><strong>{trans 'Label:'}</strong>
|
<p><strong>{trans 'Label:'}</strong>
|
||||||
{aurl 'url', 'IDF_Views_Issue::listLabel', array($project.shortname, $label.id, 'open')}
|
{aurl 'url', 'IDF_Views_Issue::listLabel', array($project.shortname, $label.id, 'open')}
|
||||||
|
@ -8,5 +8,10 @@
|
|||||||
{aurl 'open_url', 'IDF_Views_Issue::forgeWatchList', array('open')}
|
{aurl 'open_url', 'IDF_Views_Issue::forgeWatchList', array('open')}
|
||||||
{aurl 'closed_url', 'IDF_Views_Issue::forgeWatchList', array('closed')}
|
{aurl 'closed_url', 'IDF_Views_Issue::forgeWatchList', array('closed')}
|
||||||
{blocktrans}<p><strong>Open issues:</strong> <a href="{$open_url}">{$open}</a></p>
|
{blocktrans}<p><strong>Open issues:</strong> <a href="{$open_url}">{$open}</a></p>
|
||||||
<p><strong>Closed issues:</strong> <a href="{$closed_url}">{$closed}</a></p>{/blocktrans}
|
<p><strong>Closed issues:</strong> <a href="{$closed_url}">{$closed}</a></p>
|
||||||
|
<p>
|
||||||
|
{aurl 'overdue_url', 'IDF_Views_Issue::forgeWatchList', array('overdue')}
|
||||||
|
<span>Overdue:</span> <a href="{$overdue_url}">{$overdue}</a>
|
||||||
|
</p>
|
||||||
|
{/blocktrans}
|
||||||
{/block}
|
{/block}
|
||||||
|
@ -11,7 +11,11 @@
|
|||||||
{aurl 'open_url', 'IDF_Views_Issue::index', array($project.shortname)}
|
{aurl 'open_url', 'IDF_Views_Issue::index', array($project.shortname)}
|
||||||
{aurl 'closed_url', 'IDF_Views_Issue::listStatus', array($project.shortname, 'closed')}
|
{aurl 'closed_url', 'IDF_Views_Issue::listStatus', array($project.shortname, 'closed')}
|
||||||
{blocktrans}<p><strong>Open issues:</strong> <a href="{$open_url}">{$open}</a></p>
|
{blocktrans}<p><strong>Open issues:</strong> <a href="{$open_url}">{$open}</a></p>
|
||||||
<p><strong>Closed issues:</strong> <a href="{$closed_url}">{$closed}</a></p>{/blocktrans}
|
<p><strong>Closed issues:</strong> <a href="{$closed_url}">{$closed}</a></p>
|
||||||
|
<p>
|
||||||
|
{aurl 'overdue_url', 'IDF_Views_Issue::listOverdue', array($project.shortname, 'Overdue', 'overdue')}
|
||||||
|
<span>Overdue:</span> <a href="{$overdue_url}">{$overdue}</a>
|
||||||
|
</p>{/blocktrans}
|
||||||
{assign $cloud_url = 'IDF_Views_Issue::listLabel'}
|
{assign $cloud_url = 'IDF_Views_Issue::listLabel'}
|
||||||
{include 'idf/tags-cloud.html'}
|
{include 'idf/tags-cloud.html'}
|
||||||
{/block}
|
{/block}
|
||||||
|
@ -13,5 +13,9 @@
|
|||||||
{aurl 'open_url', 'IDF_Views_Issue::watchList', array($project.shortname, 'open')}
|
{aurl 'open_url', 'IDF_Views_Issue::watchList', array($project.shortname, 'open')}
|
||||||
{aurl 'closed_url', 'IDF_Views_Issue::watchList', array($project.shortname, 'closed')}
|
{aurl 'closed_url', 'IDF_Views_Issue::watchList', array($project.shortname, 'closed')}
|
||||||
{blocktrans}<p><strong>Open issues:</strong> <a href="{$open_url}">{$open}</a></p>
|
{blocktrans}<p><strong>Open issues:</strong> <a href="{$open_url}">{$open}</a></p>
|
||||||
<p><strong>Closed issues:</strong> <a href="{$closed_url}">{$closed}</a></p>{/blocktrans}
|
<p><strong>Closed issues:</strong> <a href="{$closed_url}">{$closed}</a></p>
|
||||||
|
<p>
|
||||||
|
{aurl 'overdue_url', 'IDF_Views_Issue::watchList', array($project.shortname, 'overdue')}
|
||||||
|
<span>Overdue:</span> <a href="{$overdue_url}">{$overdue}</a>
|
||||||
|
</p>{/blocktrans}
|
||||||
{/block}
|
{/block}
|
||||||
|
@ -10,13 +10,16 @@
|
|||||||
{block context}
|
{block context}
|
||||||
{aurl 'open_url', 'IDF_Views_Issue::searchStatus', array($project.shortname, 'open'), array('q' => $query)}
|
{aurl 'open_url', 'IDF_Views_Issue::searchStatus', array($project.shortname, 'open'), array('q' => $query)}
|
||||||
{aurl 'closed_url', 'IDF_Views_Issue::searchStatus', array($project.shortname, 'closed'), array('q' => $query)}
|
{aurl 'closed_url', 'IDF_Views_Issue::searchStatus', array($project.shortname, 'closed'), array('q' => $query)}
|
||||||
|
{aurl 'overdue_url', 'IDF_Views_Issue::searchStatus', array($project.shortname, 'overdue'), array('q' => $query)}
|
||||||
{if $tag != null}
|
{if $tag != null}
|
||||||
{aurl 'open_url', 'IDF_Views_Issue::searchLabel', array($project.shortname, $tag.id, 'open'), array('q' => $query)}
|
{aurl 'open_url', 'IDF_Views_Issue::searchLabel', array($project.shortname, $tag.id, 'open'), array('q' => $query)}
|
||||||
{aurl 'closed_url', 'IDF_Views_Issue::searchLabel', array($project.shortname, $tag.id, 'closed'), array('q' => $query)}
|
{aurl 'closed_url', 'IDF_Views_Issue::searchLabel', array($project.shortname, $tag.id, 'closed'), array('q' => $query)}
|
||||||
|
{aurl 'overdue_url', 'IDF_Views_Issue::searchLabel', array($project.shortname, $tag.id, 'overdue'), array('q' => $query)}
|
||||||
{/if}
|
{/if}
|
||||||
{blocktrans}
|
{blocktrans}
|
||||||
<p><strong>Found open issues:</strong> <a href="{$open_url}">{$open}</a></p>
|
<p><strong>Found open issues:</strong> <a href="{$open_url}">{$open}</a></p>
|
||||||
<p><strong>Found closed issues:</strong> <a href="{$closed_url}">{$closed}</a></p>{/blocktrans}
|
<p><strong>Found closed issues:</strong> <a href="{$closed_url}">{$closed}</a></p>
|
||||||
|
<p>Found overdue issues: <a href="{$overdue_url}">{$overdue}</a></p>{/blocktrans}
|
||||||
{if $tag !== null}
|
{if $tag !== null}
|
||||||
{blocktrans}<p><strong>Label:</strong>
|
{blocktrans}<p><strong>Label:</strong>
|
||||||
<a href="{$open_url}" class="label"><strong>{$tag.class}:</strong>{$tag.name}</a></p>{/blocktrans}
|
<a href="{$open_url}" class="label"><strong>{$tag.class}:</strong>{$tag.name}</a></p>{/blocktrans}
|
||||||
|
Loading…
Reference in New Issue
Block a user