2 commits - plugins/calendar plugins/tasklist

Thomas Brüderli bruederli at kolabsys.com
Tue Oct 29 17:16:25 CET 2013


 plugins/calendar/calendar.php |   31 ++++++++++++++++++++-----------
 plugins/tasklist/tasklist.js  |    9 ++++++---
 plugins/tasklist/tasklist.php |    6 ++++++
 3 files changed, 32 insertions(+), 14 deletions(-)

New commits:
commit 80beedc50dae5e5e8fc023eb2721e18825b2e83a
Merge: 9c24838 dfd761f
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date:   Tue Oct 29 17:15:49 2013 +0100

    Merge branch 'master' of ssh://git.kolab.org/git/roundcubemail-plugins-kolab



commit 9c248384ddffdafe46a096135e9a4f95e8579508
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date:   Tue Oct 29 17:11:45 2013 +0100

    Refresh the entire tasks list/calendar on every 10th request to sync deleted items (#2369)

diff --git a/plugins/calendar/calendar.php b/plugins/calendar/calendar.php
index 813d5ed..cfbe94c 100644
--- a/plugins/calendar/calendar.php
+++ b/plugins/calendar/calendar.php
@@ -924,19 +924,28 @@ class calendar extends rcube_plugin
    */
   public function refresh($attr)
   {
+     // refresh the entire calendar every 10th time to also sync deleted events
+    $refetch =  rand(0,10) == 10;
+
     foreach ($this->driver->list_calendars(true) as $cal) {
-      $events = $this->driver->load_events(
-        get_input_value('start', RCUBE_INPUT_GET),
-        get_input_value('end', RCUBE_INPUT_GET),
-        get_input_value('q', RCUBE_INPUT_GET),
-        $cal['id'],
-        1,
-        $attr['last']
-      );
+      if ($refetch) {
+        $this->rc->output->command('plugin.refresh_calendar',
+          array('source' => $cal['id'], 'refetch' => true));
+      }
+      else {
+        $events = $this->driver->load_events(
+          get_input_value('start', RCUBE_INPUT_GET),
+          get_input_value('end', RCUBE_INPUT_GET),
+          get_input_value('q', RCUBE_INPUT_GET),
+          $cal['id'],
+          1,
+          $attr['last']
+        );
 
-      foreach ($events as $event) {
-        $args = array('source' => $cal['id'], 'update' => $this->_client_event($event));
-        $this->rc->output->command('plugin.refresh_calendar', $args);
+        foreach ($events as $event) {
+          $this->rc->output->command('plugin.refresh_calendar',
+            array('source' => $cal['id'], 'update' => $this->_client_event($event)));
+        }
       }
     }
   }
diff --git a/plugins/tasklist/tasklist.js b/plugins/tasklist/tasklist.js
index 8fd1889..5035f77 100644
--- a/plugins/tasklist/tasklist.js
+++ b/plugins/tasklist/tasklist.js
@@ -135,9 +135,12 @@ function rcube_tasklist_ui(settings)
         rcmail.addEventListener('plugin.insert_tasklist', insert_list);
         rcmail.addEventListener('plugin.update_tasklist', update_list);
         rcmail.addEventListener('plugin.destroy_tasklist', destroy_list);
-        rcmail.addEventListener('plugin.reload_data', function(){ list_tasks(null); });
         rcmail.addEventListener('plugin.unlock_saving', unlock_saving);
         rcmail.addEventListener('requestrefresh', before_refresh);
+        rcmail.addEventListener('plugin.reload_data', function(){
+            list_tasks(null, true);
+            setTimeout(fetch_counts, 200);
+        });
 
         // start loading tasks
         fetch_counts();
@@ -400,7 +403,7 @@ function rcube_tasklist_ui(settings)
     /**
      * List tasks matching the given selector
      */
-    function list_tasks(sel)
+    function list_tasks(sel, force)
     {
         if (rcmail.busy)
             return;
@@ -412,7 +415,7 @@ function rcube_tasklist_ui(settings)
 
         var active = active_lists(),
             basefilter = filtermask == FILTER_MASK_COMPLETE ? FILTER_MASK_COMPLETE : FILTER_MASK_ALL,
-            reload = active.join(',') != loadstate.lists || basefilter != loadstate.filter || loadstate.search != search_query;
+            reload = force || active.join(',') != loadstate.lists || basefilter != loadstate.filter || loadstate.search != search_query;
 
         if (active.length && reload) {
             ui_loading = rcmail.set_busy(true, 'loading');
diff --git a/plugins/tasklist/tasklist.php b/plugins/tasklist/tasklist.php
index aaeea95..619a652 100644
--- a/plugins/tasklist/tasklist.php
+++ b/plugins/tasklist/tasklist.php
@@ -742,6 +742,12 @@ class tasklist extends rcube_plugin
      */
     public function refresh($attr)
     {
+        // refresh the entire list every 10th time to also sync deleted items
+        if (rand(0,10) == 10) {
+            $this->rc->output->command('plugin.reload_data');
+            return;
+        }
+
         $filter = array(
             'since'  => $attr['last'],
             'search' => get_input_value('q', RCUBE_INPUT_GPC),




More information about the commits mailing list