3 commits - plugins/kolab_notes plugins/libcalendaring plugins/tasklist

Thomas Brüderli bruederli at kolabsys.com
Tue Oct 14 09:21:55 CEST 2014


 plugins/kolab_notes/skins/larry/notes.css          |    2 
 plugins/libcalendaring/lib/libcalendaring_itip.php |    6 ++
 plugins/libcalendaring/libvcalendar.php            |    4 -
 plugins/tasklist/localization/en_US.inc            |    4 -
 plugins/tasklist/skins/larry/tasklist.css          |   47 +++++++++++++--------
 plugins/tasklist/tasklist.php                      |   25 ++++++++---
 plugins/tasklist/tasklist_ui.php                   |    1 
 7 files changed, 59 insertions(+), 30 deletions(-)

New commits:
commit 232b458be41440210dec1553965fddd2f6c40589
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date:   Tue Oct 14 09:21:51 2014 +0200

    Parse and display event/task status from iTip messages

diff --git a/plugins/libcalendaring/lib/libcalendaring_itip.php b/plugins/libcalendaring/lib/libcalendaring_itip.php
index 5ce2f09..b2ec3b8 100644
--- a/plugins/libcalendaring/lib/libcalendaring_itip.php
+++ b/plugins/libcalendaring/lib/libcalendaring_itip.php
@@ -625,7 +625,11 @@ class libcalendaring_itip
         }
         if ($event['sensitivity'] && $event['sensitivity'] != 'public') {
             $table->add('label', $this->plugin->gettext('sensitivity'), $this->domain);
-            $table->add('sensitivity', ucfirst($this->plugin->gettext($event['sensitivity'])) . '!');
+            $table->add('sensitivity', ucfirst($this->plugin->gettext($event['sensitivity'], $this->domain)) . '!');
+        }
+        if ($event['status'] == 'COMPLETED' || $event['status'] == 'CANCELLED') {
+            $table->add('label', $this->plugin->gettext('status'), $this->domain);
+            $table->add('status', $this->plugin->gettext('status-' . strtolower($event['status']), $this->domain));
         }
         if ($event['comment']) {
             $table->add('label', $this->plugin->gettext('comment'), $this->domain);
diff --git a/plugins/libcalendaring/libvcalendar.php b/plugins/libcalendaring/libvcalendar.php
index c80565d..1e10ddc 100644
--- a/plugins/libcalendaring/libvcalendar.php
+++ b/plugins/libcalendaring/libvcalendar.php
@@ -415,8 +415,8 @@ class libvcalendar implements Iterator
                     $event['cancelled'] = true;
                 else if ($prop->value == 'COMPLETED')
                     $event['complete'] = 100;
-                else
-                    $event['status'] = strval($prop->value);
+
+                $event['status'] = strval($prop->value);
                 break;
 
             case 'PRIORITY':


commit 738b56cfd8a7c14480a0645cb78a6b03b11229bb
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date:   Tue Oct 14 09:20:50 2014 +0200

    Small fixes and improvements for tasks listing in mail view

diff --git a/plugins/tasklist/localization/en_US.inc b/plugins/tasklist/localization/en_US.inc
index 4fb5926..8593fe5 100644
--- a/plugins/tasklist/localization/en_US.inc
+++ b/plugins/tasklist/localization/en_US.inc
@@ -166,7 +166,7 @@ $labels['itipdeclinetask'] = 'Decline your assignment to this task to the organi
 $labels['declinedeleteconfirm'] = 'Do you also want to delete this declined task from your tasks list?';
 $labels['itipcomment'] = 'Invitation/notification comment';
 $labels['itipcommenttitle'] = 'This comment will be attached to the invitation/notification message sent to assignees';
-$labels['itipsendsuccess'] = 'Invitation sent to assignees';
+$labels['itipsendsuccess'] = 'Notification sent to assignees';
 $labels['errornotifying'] = 'Failed to send notifications to task assignees';
 $labels['removefromcalendar'] = 'Remove from my tasks';
 
diff --git a/plugins/tasklist/tasklist.php b/plugins/tasklist/tasklist.php
index 9da5984..dc01f3c 100644
--- a/plugins/tasklist/tasklist.php
+++ b/plugins/tasklist/tasklist.php
@@ -231,6 +231,7 @@ class tasklist extends rcube_plugin
                 break;
             }
 
+            $oldrec = $rec;
             $rec['status'] = $complete ? 'COMPLETED' : ($rec['complete'] > 0 ? 'IN-PROCESS' : 'NEEDS-ACTION');
 
             // sent itip notifications if enabled (no user interaction here)
@@ -762,7 +763,6 @@ class tasklist extends rcube_plugin
             if ($attendee['noreply'] && $itip_notify & 2) {
                 continue;
             }
-
             // which template to use for mail text
             $is_new   = !in_array($attendee['email'], $old_attendees);
             $is_rsvp  = $is_new || $task['sequence'] > $old['sequence'];
@@ -1524,6 +1524,18 @@ class tasklist extends rcube_plugin
         if (!$p['object']->headers->others['x-kolab-type']) {
             $this->load_driver();
             $this->message_tasks = $this->driver->get_message_related_tasks($p['object']->headers, $p['object']->folder);
+
+            // sort message tasks by completeness and due date
+            $driver = $this->driver;
+            array_walk($this->message_tasks, array($this, 'encode_task'));
+            usort($this->message_tasks, function($a, $b) use ($driver) {
+                $a_complete = intval($driver->is_complete($a));
+                $b_complete = intval($driver->is_complete($b));
+                $d = $a_complete - $b_complete;
+                if (!$d) $d = $b['_hasdate'] - $a['_hasdate'];
+                if (!$d) $d = $a['datetime'] - $b['datetime'];
+                return $d;
+            });
         }
     }
 


commit 256ad459d3a5d33c23010a29eb3352d9f34795db
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date:   Tue Oct 14 08:49:47 2014 +0200

    Improve listing of linked tasks in mail view (#3439)

diff --git a/plugins/kolab_notes/skins/larry/notes.css b/plugins/kolab_notes/skins/larry/notes.css
index 1937da6..83569d6 100644
--- a/plugins/kolab_notes/skins/larry/notes.css
+++ b/plugins/kolab_notes/skins/larry/notes.css
@@ -575,6 +575,6 @@ div.kolabmessagenotes a.kolabnotesref {
 	white-space: nowrap;
 	overflow: hidden;
 	text-overflow: ellipsis;
-	max-width: 12em;
+	max-width: 16em;
 	background: url(sprites.png) -6px -151px no-repeat;
 }
\ No newline at end of file
diff --git a/plugins/tasklist/localization/en_US.inc b/plugins/tasklist/localization/en_US.inc
index 4563999..4fb5926 100644
--- a/plugins/tasklist/localization/en_US.inc
+++ b/plugins/tasklist/localization/en_US.inc
@@ -37,7 +37,7 @@ $labels['start'] = 'Start';
 $labels['starttime'] = 'Start time';
 $labels['alarms'] = 'Reminder';
 $labels['repeat'] = 'Repeat';
-$labels['links'] = 'References';
+$labels['links'] = 'Reference';
 $labels['status'] = 'Status';
 $labels['status-needs-action'] = 'Needs action';
 $labels['status-in-process'] = 'In process';
diff --git a/plugins/tasklist/skins/larry/tasklist.css b/plugins/tasklist/skins/larry/tasklist.css
index 832197d..2aaf44b 100644
--- a/plugins/tasklist/skins/larry/tasklist.css
+++ b/plugins/tasklist/skins/larry/tasklist.css
@@ -1338,18 +1338,36 @@ div.tasklist-invitebox .rsvp-status.accepted,
 }
 
 div.messagetasklinks {
+	position: relative;
 	margin: 8px 8px;
-	padding: 4px 8px;
+	padding: 4px 8px 4px 30px;
 	border: 1px solid #dfdfdf;
 	background: #fafafa;
 	border-radius: 4px;
 }
 
-div.messagetasklinks span.messagetaskref {
-	position: relative;
-	display: inline-block;
-	margin-right: 1em;
-	padding-right: 24px;
+div.messagetasklinks::before {
+	content: " ";
+	position: absolute;
+	top: 4px;
+	left: 8px;
+	width: 18px;
+	height: 18px;
+	background: url(buttons.png) -6px -115px no-repeat;
+}
+
+div.messagetasklinks ul.tasklist {
+	margin: 0;
+	padding: 0;
+	list-style: none;
+}
+
+div.messagetasklinks .messagetaskref {
+	display: block;
+	margin-bottom: 2px;
+	white-space: nowrap;
+	overflow: hidden;
+	text-overflow: ellipsis;
 }
 
 div.messagetasklinks a.messagetasklink {
@@ -1357,24 +1375,21 @@ div.messagetasklinks a.messagetasklink {
 	display: inline-block;
 	color: #333;
 	font-weight: bold;
-	padding: 3px 0 2px 22px;
+	padding: 3px 0 2px 2px;
 	text-shadow: 0px 1px 1px #fff;
 	text-decoration: none;
 	white-space: nowrap;
-	overflow: hidden;
-	text-overflow: ellipsis;
-	max-width: 16em;
-	background: url(buttons.png) -6px -115px no-repeat;
+	vertical-align: middle;
 }
 
-div.messagetasklinks span.messagetaskref.complete a.messagetasklink {
+div.messagetasklinks .messagetaskref.complete a.messagetasklink {
 	text-decoration: line-through;
+	text-shadow: none;
+	color: #666;
 }
 
-div.messagetasklinks span.messagetaskref input.complete {
-	position: absolute;
-	top: 1px;
-	right: 2px;
+div.messagetasklinks .messagetaskref input.complete {
+	vertical-align: middle;
 }
 
 
diff --git a/plugins/tasklist/tasklist.php b/plugins/tasklist/tasklist.php
index 82b3634..9da5984 100644
--- a/plugins/tasklist/tasklist.php
+++ b/plugins/tasklist/tasklist.php
@@ -1470,23 +1470,22 @@ class tasklist extends rcube_plugin
                 'data-list' => $task['list'],
             ));
             $complete = $this->driver->is_complete($task);
-            $links[] = html::span('messagetaskref' . ($complete ? ' complete' : ''),
-                $checkbox->show($complete ? $task['uid'] : null, array('value' => $task['uid'])) . ' ' .
+            $links[] = html::tag('li', 'messagetaskref' . ($complete ? ' complete' : ''),
+                $checkbox->show($complete ? $task['id'] : null, array('value' => $task['id'])) . ' ' .
                 html::a(array(
                     'href' => $this->rc->url(array(
                         'task' => 'tasks',
                         'list' => $task['list'],
-                        'id' => $task['uid'],
-                        'complete' => $complete?1:null,
+                        'id' => $task['id'],
                     )),
                     'class' => 'messagetasklink',
-                    'rel' => $task['uid'] . '@' . $task['list'],
+                    'rel' => $task['id'] . '@' . $task['list'],
                     'target' => '_blank',
                 ), Q($task['title']))
             );
         }
         if (count($links)) {
-            $html .= html::div('messagetasklinks', join("\n", $links));
+            $html .= html::div('messagetasklinks', html::tag('ul', 'tasklist', join("\n", $links)));
         }
 
         // prepend iTip/relation boxes to message body
diff --git a/plugins/tasklist/tasklist_ui.php b/plugins/tasklist/tasklist_ui.php
index 5451e2c..912514e 100644
--- a/plugins/tasklist/tasklist_ui.php
+++ b/plugins/tasklist/tasklist_ui.php
@@ -100,7 +100,6 @@ class tasklist_ui
 
             // check if the referenced task is completed
             $task = $this->plugin->driver->get_task(array('id' => $id, 'list' => $list));
-            console($id, $task);
             if ($task && $this->plugin->driver->is_complete($task)) {
                 $settings['selected_filter'] = 'complete';
             }




More information about the commits mailing list