4 commits - plugins/libkolab plugins/tasklist
Thomas Brüderli
bruederli at kolabsys.com
Fri Jul 13 11:24:21 CEST 2012
plugins/libkolab/lib/kolab_format_task.php | 4 -
plugins/libkolab/lib/kolab_format_xcal.php | 2
plugins/tasklist/drivers/kolab/tasklist_kolab_driver.php | 8 +--
plugins/tasklist/tasklist.js | 31 ++++++++++++++-
plugins/tasklist/tasklist.php | 4 -
5 files changed, 38 insertions(+), 11 deletions(-)
New commits:
commit 58ab2fdc8bc4b4bb6d032a7ffe54d515dd530159
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date: Fri Jul 13 11:24:10 2012 +0200
Fix query to kolab storage
diff --git a/plugins/tasklist/drivers/kolab/tasklist_kolab_driver.php b/plugins/tasklist/drivers/kolab/tasklist_kolab_driver.php
index 0a87595..66e4912 100644
--- a/plugins/tasklist/drivers/kolab/tasklist_kolab_driver.php
+++ b/plugins/tasklist/drivers/kolab/tasklist_kolab_driver.php
@@ -265,9 +265,9 @@ class tasklist_kolab_driver extends tasklist_driver
// query Kolab storage
$query = array();
if ($filter['mask'] & tasklist::FILTER_MASK_COMPLETE)
- $query[] = array('tags','~','complete');
+ $query[] = array('tags','~','x-complete');
else
- $query[] = array('tags','!~','complete');
+ $query[] = array('tags','!~','x-complete');
// full text search (only works with cache enabled)
if ($filter['search']) {
commit cc7e76d2b2bdfb94c478b1b133d263b9fd3295ad
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date: Fri Jul 13 11:22:54 2012 +0200
Refetch tasks when searching; sort tags list alphabetically
diff --git a/plugins/tasklist/tasklist.js b/plugins/tasklist/tasklist.js
index 530f201..0264389 100644
--- a/plugins/tasklist/tasklist.js
+++ b/plugins/tasklist/tasklist.js
@@ -49,7 +49,7 @@ function rcube_tasklist(settings)
var selector = 'all';
var tagsfilter = null;
var filtermask = FILTER_MASK_ALL;
- var loadstate = { filter:-1, lists:'' };
+ var loadstate = { filter:-1, lists:'', search:null };
var idcount = 0;
var saving_lock;
var ui_loading;
@@ -310,7 +310,7 @@ function rcube_tasklist(settings)
var active = active_lists(),
basefilter = filtermask == FILTER_MASK_COMPLETE ? FILTER_MASK_COMPLETE : FILTER_MASK_ALL,
- reload = active.join(',') != loadstate.lists || basefilter != loadstate.filter;
+ reload = active.join(',') != loadstate.lists || basefilter != loadstate.filter || loadstate.search != search_query;
if (active.length && reload) {
ui_loading = rcmail.set_busy(true, 'loading');
@@ -333,6 +333,8 @@ function rcube_tasklist(settings)
listdata = {};
loadstate.lists = response.lists;
loadstate.filter = response.filter;
+ loadstate.search = response.search;
+
for (var i=0; i < response.data.length; i++) {
listdata[response.data[i].id] = response.data[i];
}
@@ -379,6 +381,12 @@ function rcube_tasklist(settings)
$.each(newtags, function(i, tag){
$('<li>').attr('rel', tag).data('value', tag).html(Q(tag)).appendTo(rcmail.gui_objects.tagslist);
});
+
+ // re-sort tags list
+ $(rcmail.gui_objects.tagslist).children('li').sortElements(function(a,b){
+ console.log($.text([a]), $.text([b]))
+ return $.text([a]).toLowerCase() > $.text([b]).toLowerCase() ? 1 : -1;
+ });
}
/**
@@ -1130,6 +1138,25 @@ function rcube_tasklist(settings)
};
})(jQuery);
+// from http://james.padolsey.com/javascript/sorting-elements-with-jquery/
+jQuery.fn.sortElements = (function(){
+ var sort = [].sort;
+
+ return function(comparator, getSortable) {
+ getSortable = getSortable || function(){ return this };
+
+ var last = null;
+ return sort.call(this, comparator).each(function(i){
+ // at this point the array is sorted, so we can just detach each one from wherever it is, and add it after the last
+ var node = $(getSortable.call(this));
+ var parent = node.parent();
+ if (last) last.after(node);
+ else parent.prepend(node);
+ last = node;
+ });
+ };
+})();
+
/* tasklist plugin UI initialization */
var rctasks;
diff --git a/plugins/tasklist/tasklist.php b/plugins/tasklist/tasklist.php
index a8d19f5..00a42d5 100644
--- a/plugins/tasklist/tasklist.php
+++ b/plugins/tasklist/tasklist.php
@@ -313,7 +313,7 @@ class tasklist extends rcube_plugin
*/
public function fetch_counts()
{
- $lists = null;
+ $lists = get_input_value('lists', RCUBE_INPUT_GPC);;
$counts = $this->driver->count_tasks($lists);
$this->rc->output->command('plugin.update_counts', $counts);
}
@@ -389,7 +389,7 @@ class tasklist extends rcube_plugin
// sort tasks according to their hierarchy level and due date
usort($data, array($this, 'task_sort_cmp'));
- $this->rc->output->command('plugin.data_ready', array('filter' => $f, 'lists' => $lists, 'data' => $data, 'tags' => array_values(array_unique($tags))));
+ $this->rc->output->command('plugin.data_ready', array('filter' => $f, 'lists' => $lists, 'search' => $search, 'data' => $data, 'tags' => array_values(array_unique($tags))));
}
/**
commit 6d588e7b70f68fb4370a10274b2345d96b1026b6
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date: Fri Jul 13 11:21:50 2012 +0200
Fix tasks counting
diff --git a/plugins/tasklist/drivers/kolab/tasklist_kolab_driver.php b/plugins/tasklist/drivers/kolab/tasklist_kolab_driver.php
index 897ce18..0a87595 100644
--- a/plugins/tasklist/drivers/kolab/tasklist_kolab_driver.php
+++ b/plugins/tasklist/drivers/kolab/tasklist_kolab_driver.php
@@ -219,10 +219,10 @@ class tasklist_kolab_driver extends tasklist_driver
$counts = array('all' => 0, 'flagged' => 0, 'today' => 0, 'tomorrow' => 0, 'overdue' => 0, 'nodate' => 0);
foreach ($lists as $list_id) {
$folder = $this->folders[$list_id];
- foreach ((array)$folder->select(array(array('tags','!~','complete'))) as $record) {
+ foreach ((array)$folder->select(array(array('tags','!~','x-complete'))) as $record) {
$rec = $this->_to_rcube_task($record);
- if ($rec['complete']) // don't count complete tasks
+ if ($rec['complete'] >= 1.0) // don't count complete tasks
continue;
$counts['all']++;
commit 0790b36a49c1a4731c3b81e5540b2edd5f040b7e
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date: Fri Jul 13 11:21:35 2012 +0200
Add categories to fulltext index; use unique tags for task properties
diff --git a/plugins/libkolab/lib/kolab_format_task.php b/plugins/libkolab/lib/kolab_format_task.php
index 629f9ac..4433cf6 100644
--- a/plugins/libkolab/lib/kolab_format_task.php
+++ b/plugins/libkolab/lib/kolab_format_task.php
@@ -129,10 +129,10 @@ class kolab_format_task extends kolab_format_xcal
$tags = array();
if ($this->data['status'] == 'COMPLETED' || $this->data['complete'] == 100)
- $tags[] = 'complete';
+ $tags[] = 'x-complete';
if ($this->data['priority'] == 1)
- $tags[] = 'flagged';
+ $tags[] = 'x-flagged';
if (!empty($this->data['alarms']))
$tags[] = 'x-has-alarms';
diff --git a/plugins/libkolab/lib/kolab_format_xcal.php b/plugins/libkolab/lib/kolab_format_xcal.php
index f8247e0..e1bfdd7 100644
--- a/plugins/libkolab/lib/kolab_format_xcal.php
+++ b/plugins/libkolab/lib/kolab_format_xcal.php
@@ -28,7 +28,7 @@ abstract class kolab_format_xcal extends kolab_format
{
public $CTYPE = 'application/calendar+xml';
- public static $fulltext_cols = array('title', 'description', 'location', 'attendees:name', 'attendees:email');
+ public static $fulltext_cols = array('title', 'description', 'location', 'attendees:name', 'attendees:email', 'categories');
protected $sensitivity_map = array(
'public' => kolabformat::ClassPublic,
More information about the commits
mailing list