Make counters on tasklist filters consistent (#5470)

Summary: This implements my proposition from https://issues.kolab.org/show_bug.cgi?id=5470#c4

Reviewers: petersen, #roundcube_kolab_plugins_developers, vanmeeuwen

Reviewed By: #roundcube_kolab_plugins_developers, vanmeeuwen

Subscribers: petersen, vendel.colja

Differential Revision: https://git.kolab.org/D195
This commit is contained in:
Jeroen van Meeuwen (Kolab Systems) 2016-10-03 15:59:26 +02:00
parent 05cc4f01f5
commit 7cde786c4e
4 changed files with 14 additions and 15 deletions

View file

@ -254,19 +254,19 @@ class tasklist_database_driver extends tasklist_driver
join(',', $list_ids) join(',', $list_ids)
)); ));
$counts = array('all' => 0, 'flagged' => 0, 'today' => 0, 'tomorrow' => 0, 'overdue' => 0, 'nodate' => 0); $counts = array('all' => 0, 'today' => 0, 'tomorrow' => 0, 'overdue' => 0, 'later' => 0);
while ($result && ($rec = $this->rc->db->fetch_assoc($result))) { while ($result && ($rec = $this->rc->db->fetch_assoc($result))) {
$counts['all']++; $counts['all']++;
if ($rec['flagged'])
$counts['flagged']++;
if (empty($rec['date'])) if (empty($rec['date']))
$counts['nodate']++; $counts['later']++;
else if ($rec['date'] == $today) else if ($rec['date'] == $today)
$counts['today']++; $counts['today']++;
else if ($rec['date'] == $tomorrow) else if ($rec['date'] == $tomorrow)
$counts['tomorrow']++; $counts['tomorrow']++;
else if ($rec['date'] < $today) else if ($rec['date'] < $today)
$counts['overdue']++; $counts['overdue']++;
else if ($rec['date'] > $tomorrow)
$counts['later']++;
} }
return $counts; return $counts;

View file

@ -496,7 +496,8 @@ class tasklist_kolab_driver extends tasklist_driver
$tomorrow_date = new DateTime('now + 1 day', $this->plugin->timezone); $tomorrow_date = new DateTime('now + 1 day', $this->plugin->timezone);
$tomorrow = $tomorrow_date->format('Y-m-d'); $tomorrow = $tomorrow_date->format('Y-m-d');
$counts = array('all' => 0, 'flagged' => 0, 'today' => 0, 'tomorrow' => 0, 'overdue' => 0, 'nodate' => 0, 'mytasks' => 0); $counts = array('all' => 0, 'today' => 0, 'tomorrow' => 0, 'later' => 0, 'overdue' => 0);
foreach ($lists as $list_id) { foreach ($lists as $list_id) {
if (!$folder = $this->get_folder($list_id)) { if (!$folder = $this->get_folder($list_id)) {
continue; continue;
@ -508,18 +509,16 @@ class tasklist_kolab_driver extends tasklist_driver
continue; continue;
$counts['all']++; $counts['all']++;
if ($rec['flagged'])
$counts['flagged']++;
if (empty($rec['date'])) if (empty($rec['date']))
$counts['nodate']++; $counts['later']++;
else if ($rec['date'] == $today) else if ($rec['date'] == $today)
$counts['today']++; $counts['today']++;
else if ($rec['date'] == $tomorrow) else if ($rec['date'] == $tomorrow)
$counts['tomorrow']++; $counts['tomorrow']++;
else if ($rec['date'] < $today) else if ($rec['date'] < $today)
$counts['overdue']++; $counts['overdue']++;
if ($this->plugin->is_attendee($rec) !== false) else if ($rec['date'] > $tomorrow)
$counts['mytasks']++; $counts['later']++;
} }
} }

View file

@ -87,18 +87,18 @@
<div class="boxtitle buttonbar"> <div class="boxtitle buttonbar">
<h2 id="aria-label-taskselector" class="voice"><roundcube:label name="tasklist.arialabeltaskselector" /></h2> <h2 id="aria-label-taskselector" class="voice"><roundcube:label name="tasklist.arialabeltaskselector" /></h2>
<ul id="taskselector" role="radiogroup" aria-labelledby="aria-label-taskselector" aria-controls="thelist"> <ul id="taskselector" role="radiogroup" aria-labelledby="aria-label-taskselector" aria-controls="thelist">
<li class="all selected" role="radio" aria-checked="true" aria-labelledby="aria-radio-all"><a href="#all" id="aria-radio-all"><roundcube:label name="tasklist.all" /><span class="count"></span></a></li> <li class="all selected" role="radio" aria-checked="true" aria-labelledby="aria-radio-all"><a href="#all" id="aria-radio-all"><roundcube:label name="tasklist.all" /></a></li>
<li class="overdue inactive" role="radio" aria-checked="false" aria-labelledby="aria-radio-overdue"><a href="#overdue" id="aria-radio-overdue"><roundcube:label name="tasklist.overdue" /><span class="count"></span></a></li> <li class="overdue inactive" role="radio" aria-checked="false" aria-labelledby="aria-radio-overdue"><a href="#overdue" id="aria-radio-overdue"><roundcube:label name="tasklist.overdue" /><span class="count"></span></a></li>
<li class="flagged" role="radio" aria-checked="false" aria-labelledby="aria-radio-flagged"><a href="#flagged" id="aria-radio-flagged"><roundcube:label name="tasklist.flagged" /><span class="count"></span></a></li>
<li class="today" role="radio" aria-checked="false" aria-labelledby="aria-radio-today"><a href="#today" id="aria-radio-today"><roundcube:label name="tasklist.today" /><span class="count"></span></a></li> <li class="today" role="radio" aria-checked="false" aria-labelledby="aria-radio-today"><a href="#today" id="aria-radio-today"><roundcube:label name="tasklist.today" /><span class="count"></span></a></li>
<li class="tomorrow" role="radio" aria-checked="false" aria-labelledby="aria-radio-tomorrow"><a href="#tomorrow" id="aria-radio-tomorrow"><roundcube:label name="tasklist.tomorrow" /><span class="count"></span></a></li> <li class="tomorrow" role="radio" aria-checked="false" aria-labelledby="aria-radio-tomorrow"><a href="#tomorrow" id="aria-radio-tomorrow"><roundcube:label name="tasklist.tomorrow" /><span class="count"></span></a></li>
<roundcube:if condition="env:tasklist_driver != 'kolab'" /> <roundcube:if condition="env:tasklist_driver != 'kolab'" />
<li class="week" role="radio" aria-checked="false" aria-labelledby="aria-radio-week"><a href="#week" id="aria-radio-week"><roundcube:label name="tasklist.next7days" /></a></li> <li class="week" role="radio" aria-checked="false" aria-labelledby="aria-radio-week"><a href="#week" id="aria-radio-week"><roundcube:label name="tasklist.next7days" /></a></li>
<roundcube:endif /> <roundcube:endif />
<li class="later" role="radio" aria-checked="false" aria-labelledby="aria-radio-later"><a href="#later" id="aria-radio-later"><roundcube:label name="tasklist.later" /></a></li> <li class="later" role="radio" aria-checked="false" aria-labelledby="aria-radio-later"><a href="#later" id="aria-radio-later"><roundcube:label name="tasklist.later" /><span class="count"></span></a></li>
<li class="nodate" role="radio" aria-checked="false" aria-labelledby="aria-radio-nodate"><a href="#nodate" id="aria-radio-nodate"><roundcube:label name="tasklist.nodate" ucfirst="true" /></a></li> <li class="nodate" role="radio" aria-checked="false" aria-labelledby="aria-radio-nodate"><a href="#nodate" id="aria-radio-nodate"><roundcube:label name="tasklist.nodate" ucfirst="true" /></a></li>
<li class="flagged" role="radio" aria-checked="false" aria-labelledby="aria-radio-flagged"><a href="#flagged" id="aria-radio-flagged"><roundcube:label name="tasklist.flagged" /></a></li>
<roundcube:if condition="env:tasklist_driver == 'kolab'" /> <roundcube:if condition="env:tasklist_driver == 'kolab'" />
<li class="mytasks" role="radio" aria-checked="false" aria-labelledby="aria-radio-mytasks"><a href="#mytasks" id="aria-radio-mytasks" title="<roundcube:label name='tasklist.mytaskstitle'/>"><roundcube:label name="tasklist.mytasks" /><span class="count"></span></a></li> <li class="mytasks" role="radio" aria-checked="false" aria-labelledby="aria-radio-mytasks"><a href="#mytasks" id="aria-radio-mytasks" title="<roundcube:label name='tasklist.mytaskstitle'/>"><roundcube:label name="tasklist.mytasks" /></a></li>
<li class="assigned" role="radio" aria-checked="false" aria-labelledby="aria-radio-assigned"><a href="#assigned" id="aria-radio-assigned" title="<roundcube:label name='tasklist.assignedtitle'/>"><roundcube:label name="tasklist.assigned" /></a></li> <li class="assigned" role="radio" aria-checked="false" aria-labelledby="aria-radio-assigned"><a href="#assigned" id="aria-radio-assigned" title="<roundcube:label name='tasklist.assignedtitle'/>"><roundcube:label name="tasklist.assigned" /></a></li>
<roundcube:endif /> <roundcube:endif />
<li class="complete" role="radio" aria-checked="false" aria-labelledby="aria-radio-complete"><a href="#complete" id="aria-radio-complete"><roundcube:label name="tasklist.complete" /><span class="count"></span></a></li> <li class="complete" role="radio" aria-checked="false" aria-labelledby="aria-radio-complete"><a href="#complete" id="aria-radio-complete"><roundcube:label name="tasklist.complete" /><span class="count"></span></a></li>

View file

@ -1190,7 +1190,7 @@ function rcube_tasklist_ui(settings)
var link = $(elem), var link = $(elem),
f = link.parent().attr('class').replace(/\s\w+/g, ''); f = link.parent().attr('class').replace(/\s\w+/g, '');
if (f != 'all') if (f != 'all')
link.children('span').html(taskcounts[f] || '')[(taskcounts[f] ? 'show' : 'hide')](); link.children('span').html('+' + (taskcounts[f] || ''))[(taskcounts[f] ? 'show' : 'hide')]();
}); });
// spacial case: overdue // spacial case: overdue