Closes issue 3: Issues list left hand navigation - controls for issue due date
This commit is contained in:
		| @@ -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} | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user