plugins/calendar plugins/libcalendaring
Thomas Brüderli
bruederli at kolabsys.com
Tue Jul 8 20:13:03 CEST 2014
plugins/calendar/calendar.php | 11 ++++++++---
plugins/calendar/calendar_ui.js | 4 +++-
plugins/calendar/drivers/kolab/kolab_invitation_calendar.php | 3 +++
plugins/calendar/skins/larry/calendar.css | 1 +
plugins/libcalendaring/lib/libcalendaring_itip.php | 1 +
5 files changed, 16 insertions(+), 4 deletions(-)
New commits:
commit ca5cb4ac012898374bb1f32d5e774633f4602645
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date: Tue Jul 8 20:12:53 2014 +0200
Unset RSVP flag after replying; skip other user's namespace for invitations listing
diff --git a/plugins/calendar/calendar.php b/plugins/calendar/calendar.php
index 2667c6d..c9e9f67 100644
--- a/plugins/calendar/calendar.php
+++ b/plugins/calendar/calendar.php
@@ -896,14 +896,18 @@ class calendar extends rcube_plugin
$noreply = intval(get_input_value('noreply', RCUBE_INPUT_GPC)) || $status == 'needs-action';
$reload = $event['calendar'] != $ev['calendar'] ? 2 : 1;
$organizer = null;
+ $emails = $this->get_user_emails();
foreach ($event['attendees'] as $i => $attendee) {
if ($attendee['role'] == 'ORGANIZER') {
$organizer = $attendee;
- break;
+ }
+ else if ($attendee['email'] && in_array(strtolower($attendee['email']), $emails)) {
+ $reply_sender = $attendee['email'];
}
}
if (!$noreply) {
$itip = $this->load_itip();
+ $itip->set_sender_email($reply_sender);
$event['comment'] = $reply_comment;
if ($organizer && $itip->send_itip_message($event, 'REPLY', $organizer, 'itipsubject' . $status, 'itipmailbody' . $status))
$this->rc->output->command('display_message', $this->gettext(array('name' => 'sentresponseto', 'vars' => array('mailto' => $organizer['name'] ? $organizer['name'] : $organizer['email']))), 'confirmation');
@@ -2318,8 +2322,10 @@ class calendar extends rcube_plugin
}
else if ($attendee['email'] && in_array(strtolower($attendee['email']), $emails)) {
$event['attendees'][$i]['status'] = strtoupper($status);
+ if ($event['attendees'][$i]['status'] != 'NEEDS-ACTION')
+ unset($event['attendees'][$i]['rsvp']); // remove RSVP attribute
$metadata['attendee'] = $attendee['email'];
- $metadata['rsvp'] = $attendee['rsvp'] || $attendee['role'] != 'NON-PARTICIPANT';
+ $metadata['rsvp'] = $attendee['role'] != 'NON-PARTICIPANT';
$reply_sender = $attendee['email'];
}
}
@@ -2332,7 +2338,6 @@ class calendar extends rcube_plugin
'email' => $sender_identity['email'],
'role' => 'OPT-PARTICIPANT',
'status' => strtoupper($status),
- 'rsvp' => true,
);
$metadata['attendee'] = $sender_identity['email'];
}
diff --git a/plugins/calendar/calendar_ui.js b/plugins/calendar/calendar_ui.js
index 2e63eb7..cc07474 100644
--- a/plugins/calendar/calendar_ui.js
+++ b/plugins/calendar/calendar_ui.js
@@ -1928,8 +1928,10 @@ function rcube_calendar_ui(settings)
// update attendee status
for (var data, i=0; i < me.selected_event.attendees.length; i++) {
data = me.selected_event.attendees[i];
- if (settings.identity.emails.indexOf(';'+String(data.email).toLowerCase()) >= 0)
+ if (settings.identity.emails.indexOf(';'+String(data.email).toLowerCase()) >= 0) {
data.status = response.toUpperCase();
+ delete data.rsvp; // unset RSVP flag
+ }
}
event_show_dialog(me.selected_event);
diff --git a/plugins/calendar/drivers/kolab/kolab_invitation_calendar.php b/plugins/calendar/drivers/kolab/kolab_invitation_calendar.php
index ab5fe4b..ac3740a 100644
--- a/plugins/calendar/drivers/kolab/kolab_invitation_calendar.php
+++ b/plugins/calendar/drivers/kolab/kolab_invitation_calendar.php
@@ -215,6 +215,9 @@ class kolab_invitation_calendar
$events = array();
foreach (kolab_storage::list_folders('', '*', 'event', null) as $foldername) {
$cal = new kolab_calendar($foldername, $this->cal);
+ if ($cal->get_namespace() == 'other')
+ continue;
+
foreach ($cal->list_events($start, $end, $search, 1, $query, array(array($subquery, 'OR'))) as $event) {
$match = false;
diff --git a/plugins/calendar/skins/larry/calendar.css b/plugins/calendar/skins/larry/calendar.css
index ddb1a2f..43c7a35 100644
--- a/plugins/calendar/skins/larry/calendar.css
+++ b/plugins/calendar/skins/larry/calendar.css
@@ -277,6 +277,7 @@ pre {
cursor: pointer;
}
+#calendars .treelist div > a.quickview:focus,
#calendars .treelist div > a.subscribed:focus {
border-radius: 3px;
outline: 2px solid rgba(30,150,192, 0.5);
diff --git a/plugins/libcalendaring/lib/libcalendaring_itip.php b/plugins/libcalendaring/lib/libcalendaring_itip.php
index 93e33a6..074f87f 100644
--- a/plugins/libcalendaring/lib/libcalendaring_itip.php
+++ b/plugins/libcalendaring/lib/libcalendaring_itip.php
@@ -205,6 +205,7 @@ class libcalendaring_itip
}
else if (strcasecmp($attedee['email'], $from) == 0 || strcasecmp($attendee['email'], $from_utf) == 0) {
$replying_attendee = $attendee;
+ unset($replying_attendee['rsvp']); // unset the RSVP attribute
}
}
if ($replying_attendee) {
More information about the commits
mailing list