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