diff --git a/plugins/tasklist/drivers/kolab/tasklist_kolab_driver.php b/plugins/tasklist/drivers/kolab/tasklist_kolab_driver.php index 1999a8e5..624bdd56 100644 --- a/plugins/tasklist/drivers/kolab/tasklist_kolab_driver.php +++ b/plugins/tasklist/drivers/kolab/tasklist_kolab_driver.php @@ -25,16 +25,17 @@ class tasklist_kolab_driver extends tasklist_driver { // features supported by the backend - public $alarms = false; + public $alarms = false; public $attachments = true; - public $undelete = false; // task undelete action + public $attendees = true; + public $undelete = false; // task undelete action public $alarm_types = array('DISPLAY','AUDIO'); private $rc; private $plugin; private $lists; private $folders = array(); - private $tasks = array(); + private $tasks = array(); /** @@ -772,6 +773,7 @@ class tasklist_kolab_driver extends tasklist_driver 'status' => $record['status'], 'parent_id' => $record['parent_id'], 'recurrence' => $record['recurrence'], + 'attendees' => $record['attendees'], ); // convert from DateTime to internal date format @@ -898,6 +900,14 @@ class tasklist_kolab_driver extends tasklist_driver unset($object['attachments']); } + // set current user as ORGANIZER + $identity = $this->rc->user->get_identity(); + if (empty($object['attendees']) && $identity['email']) { + $object['attendees'] = array(array('role' => 'ORGANIZER', 'name' => $identity['name'], 'email' => $identity['email'])); + } + + $object['_owner'] = $identity['email']; + unset($object['tempid'], $object['raw'], $object['list'], $object['flagged'], $object['tags']); return $object; } diff --git a/plugins/tasklist/drivers/tasklist_driver.php b/plugins/tasklist/drivers/tasklist_driver.php index eb7663e5..dd2e415f 100644 --- a/plugins/tasklist/drivers/tasklist_driver.php +++ b/plugins/tasklist/drivers/tasklist_driver.php @@ -72,6 +72,7 @@ abstract class tasklist_driver // features supported by the backend public $alarms = false; public $attachments = false; + public $attendees = false; public $undelete = false; // task undelete action public $sortable = false; public $alarm_types = array('DISPLAY'); diff --git a/plugins/tasklist/localization/en_US.inc b/plugins/tasklist/localization/en_US.inc index 7920c940..0b713774 100644 --- a/plugins/tasklist/localization/en_US.inc +++ b/plugins/tasklist/localization/en_US.inc @@ -132,3 +132,9 @@ $labels['itipdeclineevent'] = 'Do you want to decline your assignment to this ta $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 participants'; +$labels['itipsendsuccess'] = 'Invitation sent to participants.'; +$labels['errornotifying'] = 'Failed to send notifications to task participants'; + +$labels['andnmore'] = '$nr more...'; +$labels['delegatedto'] = 'Delegated to: '; +$labels['delegatedfrom'] = 'Delegated from: '; diff --git a/plugins/tasklist/skins/larry/images/attendee-status.png b/plugins/tasklist/skins/larry/images/attendee-status.png new file mode 100644 index 00000000..59b44930 Binary files /dev/null and b/plugins/tasklist/skins/larry/images/attendee-status.png differ diff --git a/plugins/tasklist/skins/larry/images/sendinvitation.png b/plugins/tasklist/skins/larry/images/sendinvitation.png new file mode 100644 index 00000000..ecdaa091 Binary files /dev/null and b/plugins/tasklist/skins/larry/images/sendinvitation.png differ diff --git a/plugins/tasklist/skins/larry/tasklist.css b/plugins/tasklist/skins/larry/tasklist.css index 1e847b35..7bdfe570 100644 --- a/plugins/tasklist/skins/larry/tasklist.css +++ b/plugins/tasklist/skins/larry/tasklist.css @@ -1013,6 +1013,49 @@ label.block { outline: none; } +.task-attendees span.attendee { + padding-right: 18px; + margin-right: 0.5em; + background: url(images/attendee-status.png) right 0 no-repeat; +} + +.task-attendees span.attendee a.mailtolink { + text-decoration: none; + white-space: nowrap; + outline: none; +} + +.task-attendees span.attendee a.mailtolink:hover { + text-decoration: underline; +} + +.task-attendees span.accepted { + background-position: right -20px; +} + +.task-attendees span.declined { + background-position: right -40px; +} + +.task-attendees span.tentative { + background-position: right -60px; +} + +.task-attendees span.delegated { + background-position: right -180px; +} + +.task-attendees span.organizer { + background-position: right -80px; +} + +#all-task-attendees span.attendee { + display: block; + margin-bottom: 0.4em; + padding-bottom: 0.3em; + border-bottom: 1px solid #ddd; +} + .tasklistview .uidialog .tabbed { min-width: 600px; } @@ -1025,6 +1068,22 @@ label.block { width: 20em; } +.ui-dialog .task-update-confirm { + padding: 0 0.5em 0.5em 0.5em; +} + +.task-dialog-message, +.task-update-confirm .message { + margin-top: 0.5em; + padding: 0.8em; + border: 1px solid #ffdf0e; + background-color: #fef893; +} + +.task-dialog-message .message, +.task-update-confirm .message { + margin-bottom: 0.5em; +} /** Special hacks for IE7 **/ /** They need to be in this file to also affect the task-create dialog embedded in mail view **/ diff --git a/plugins/tasklist/skins/larry/templates/mainview.html b/plugins/tasklist/skins/larry/templates/mainview.html index 3003067a..1881c762 100644 --- a/plugins/tasklist/skins/larry/templates/mainview.html +++ b/plugins/tasklist/skins/larry/templates/mainview.html @@ -156,6 +156,19 @@ +
+
+
+
+
diff --git a/plugins/tasklist/skins/larry/templates/taskedit.html b/plugins/tasklist/skins/larry/templates/taskedit.html index 599974e3..554028b3 100644 --- a/plugins/tasklist/skins/larry/templates/taskedit.html +++ b/plugins/tasklist/skins/larry/templates/taskedit.html @@ -98,5 +98,5 @@
-