2 commits - plugins/calendar plugins/tasklist

Thomas Brüderli bruederli at kolabsys.com
Wed Aug 1 17:00:39 CEST 2012


 plugins/calendar/calendar.php |    2 -
 plugins/tasklist/tasklist.js  |   18 ++++++----
 plugins/tasklist/tasklist.php |   70 +++++++++++++++++++++---------------------
 3 files changed, 48 insertions(+), 42 deletions(-)

New commits:
commit bea77257251c31ebb0406eb53a6612315810d26b
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date:   Wed Aug 1 17:00:27 2012 +0200

    Copy message attachments when creating a task from mail

diff --git a/plugins/tasklist/tasklist.js b/plugins/tasklist/tasklist.js
index 55f25a5..2457b44 100644
--- a/plugins/tasklist/tasklist.js
+++ b/plugins/tasklist/tasklist.js
@@ -844,7 +844,7 @@ function rcube_tasklist_ui(settings)
         }
 
         // show/hide tabs according to calendar's feature support
-        $('#taskedit-tab-attachments')[(list.attachments?'show':'hide')]();
+        $('#taskedit-tab-attachments')[(list.attachments||rec.attachments?'show':'hide')]();
 
         // activate the first tab
         $('#taskedit').tabs('select', 0);
@@ -894,15 +894,15 @@ function rcube_tasklist_ui(settings)
                 $dialog.dialog('close');
         };
 
-        if (rec.id) {
-          buttons[rcmail.gettext('delete', 'tasklist')] = function() {
-            if (delete_task(rec.id))
-                $dialog.dialog('close');
-          };
+        if (action != 'new') {
+            buttons[rcmail.gettext('delete', 'tasklist')] = function() {
+                if (delete_task(rec.id))
+                    $dialog.dialog('close');
+            };
         }
 
         buttons[rcmail.gettext('cancel', 'tasklist')] = function() {
-          $dialog.dialog('close');
+            $dialog.dialog('close');
         };
 
         // open jquery UI dialog
@@ -930,6 +930,10 @@ function rcube_tasklist_ui(settings)
      */
     function load_attachment(rec, att)
     {
+        // can't open temp attachments
+        if (!rec.id || rec.id < 0)
+            return false;
+
         var qstring = '_id='+urlencode(att.id)+'&_t='+urlencode(rec.recurrence_id||rec.id)+'&_list='+urlencode(rec.list);
 
         // open attachment in frame if it's of a supported mimetype
diff --git a/plugins/tasklist/tasklist.php b/plugins/tasklist/tasklist.php
index ff99f2e..e1559d6 100644
--- a/plugins/tasklist/tasklist.php
+++ b/plugins/tasklist/tasklist.php
@@ -329,7 +329,6 @@ class tasklist extends rcube_plugin
     private function cleanup_task(&$rec)
     {
         // remove temp. attachment files
-        $taskid = $rec['id'];
         if (!empty($_SESSION['tasklist_session']) && ($taskid = $_SESSION['tasklist_session']['id'])) {
             $this->rc->plugins->exec_hook('attachments_cleanup', array('group' => $taskid));
             $this->rc->session->remove('tasklist_session');
@@ -650,7 +649,7 @@ class tasklist extends rcube_plugin
                         'size' => $_FILES['_attachments']['size'][$i],
                         'name' => $_FILES['_attachments']['name'][$i],
                         'mimetype' => rc_mime_content_type($filepath, $_FILES['_attachments']['name'][$i], $_FILES['_attachments']['type'][$i]),
-                        'group' => $eventid,
+                        'group' => $taskid,
                     );
 
                     $attachment = $this->rc->plugins->exec_hook('attachment_upload', $attachment);
@@ -852,40 +851,43 @@ class tasklist extends rcube_plugin
         if ($message->headers) {
             $task['title'] = trim($message->subject);
             $task['description'] = trim($message->first_text_part());
-/*
-            // copy mail attachments to event
-            if ($message->attachments) {
-              $eventid = 'cal:';
-              if (!is_array($_SESSION['event_session']) || $_SESSION['event_session']['id'] != $eventid) {
-                $_SESSION['event_session'] = array();
-                $_SESSION['event_session']['id'] = $eventid;
-                $_SESSION['event_session']['attachments'] = array();
-              }
-
-              foreach ((array)$message->attachments as $part) {
-                $attachment = array(
-                  'data' => $imap->get_message_part($uid, $part->mime_id, $part),
-                  'size' => $part->size,
-                  'name' => $part->filename,
-                  'mimetype' => $part->mimetype,
-                  'group' => $eventid,
-                );
-
-                $attachment = $this->rc->plugins->exec_hook('attachment_save', $attachment);
-
-                if ($attachment['status'] && !$attachment['abort']) {
-                  $id = $attachment['id'];
-
-                  // store new attachment in session
-                  unset($attachment['status'], $attachment['abort'], $attachment['data']);
-                  $_SESSION['event_session']['attachments'][$id] = $attachment;
-
-                  $attachment['id'] = 'rcmfile' . $attachment['id'];  # add prefix to consider it 'new'
-                  $event['attachments'][] = $attachment;
+            $task['id'] = -$uid;
+
+            $this->load_driver();
+
+            // copy mail attachments to task
+            if ($message->attachments && $this->driver->attachments) {
+                if (!is_array($_SESSION['tasklist_session']) || $_SESSION['tasklist_session']['id'] != $task['id']) {
+                    $_SESSION['tasklist_session'] = array();
+                    $_SESSION['tasklist_session']['id'] = $task['id'];
+                    $_SESSION['tasklist_session']['attachments'] = array();
+                }
+
+                foreach ((array)$message->attachments as $part) {
+                    $attachment = array(
+                        'data' => $imap->get_message_part($uid, $part->mime_id, $part),
+                        'size' => $part->size,
+                        'name' => $part->filename,
+                        'mimetype' => $part->mimetype,
+                        'group' => $task['id'],
+                    );
+
+                    $attachment = $this->rc->plugins->exec_hook('attachment_save', $attachment);
+
+                    if ($attachment['status'] && !$attachment['abort']) {
+                        $id = $attachment['id'];
+                        $attachment['classname'] = rcmail_filetype2classname($attachment['mimetype'], $attachment['name']);
+
+                        // store new attachment in session
+                        unset($attachment['status'], $attachment['abort'], $attachment['data']);
+                        $_SESSION['tasklist_session']['attachments'][$id] = $attachment;
+
+                        $attachment['id'] = 'rcmfile' . $attachment['id'];  # add prefix to consider it 'new'
+                        $task['attachments'][] = $attachment;
+                    }
                 }
-              }
             }
-*/
+
             $this->rc->output->command('plugin.mail2taskdialog', $task);
         }
         else {


commit 754aa2a2995f96b5737d68d5894289daf9db42cd
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date:   Wed Aug 1 16:53:44 2012 +0200

    Add attachment css classes; remove unused var

diff --git a/plugins/calendar/calendar.php b/plugins/calendar/calendar.php
index 2378417..d1aea13 100644
--- a/plugins/calendar/calendar.php
+++ b/plugins/calendar/calendar.php
@@ -1744,7 +1744,6 @@ class calendar extends rcube_plugin
   private function cleanup_event(&$event)
   {
     // remove temp. attachment files
-    $eventid = 'cal:'.$event['id'];
     if (!empty($_SESSION['event_session']) && ($eventid = $_SESSION['event_session']['id'])) {
       $this->rc->plugins->exec_hook('attachments_cleanup', array('group' => $eventid));
       $this->rc->session->remove('event_session');
@@ -2413,6 +2412,7 @@ class calendar extends rcube_plugin
 
           if ($attachment['status'] && !$attachment['abort']) {
             $id = $attachment['id'];
+            $attachment['classname'] = rcmail_filetype2classname($attachment['mimetype'], $attachment['name']);
 
             // store new attachment in session
             unset($attachment['status'], $attachment['abort'], $attachment['data']);





More information about the commits mailing list