diff --git a/plugins/calendar/calendar.php b/plugins/calendar/calendar.php index c4a6656f..5f27d74b 100644 --- a/plugins/calendar/calendar.php +++ b/plugins/calendar/calendar.php @@ -1074,7 +1074,7 @@ class calendar extends rcube_plugin break; case "diff": - $data = $this->driver->get_event_diff($event, $event['rev']); + $data = $this->driver->get_event_diff($event, $event['rev1'], $event['rev2']); if (is_array($data)) { // convert some properties, similar to self::_client_event() $lib = $this->lib; diff --git a/plugins/calendar/calendar_ui.js b/plugins/calendar/calendar_ui.js index 9d0c9196..b3bfbe0c 100644 --- a/plugins/calendar/calendar_ui.js +++ b/plugins/calendar/calendar_ui.js @@ -1086,7 +1086,7 @@ function rcube_calendar_ui(settings) } me.loading_lock = rcmail.set_busy(true, 'loading', me.loading_lock); - rcmail.http_post('event', { action:'diff', e:{ id:event.id, calendar:event.calendar, rev: rev1+':'+rev2 } }, me.loading_lock); + rcmail.http_post('event', { action:'diff', e:{ id:event.id, calendar:event.calendar, rev1: rev1, rev2: rev2 } }, me.loading_lock); } else { alert('Invalid selection!') @@ -1122,7 +1122,8 @@ function rcube_calendar_ui(settings) // callback from server with changelog data var render_event_changelog = function(data) { - var $dialog = $('#eventhistory'); + var $dialog = $('#eventhistory'), + event = $dialog.data('event'); if (data === false || !data.length) { // display 'unavailable' message @@ -1133,8 +1134,9 @@ function rcube_calendar_ui(settings) var i, change, accessible, op_append, first = data.length -1, last = 0, op_labels = { APPEND: 'actionappend', MOVE: 'actionmove', DELETE: 'actiondelete' }, + is_writeable = !!me.calendars[event.calendar].editable, actions = ' ' + - '', + (is_writeable ? '' : ''), tbody = $('#event-changelog-table tbody').html(''); for (i=first; i >= 0; i--) { @@ -1153,7 +1155,7 @@ function rcube_calendar_ui(settings) ' '+ '' : '')) - .append('' + Q(change.rev) + '') + .append('' + Q(i+1) + '') .append('' + Q(change.date ? format_datetime(parseISO8601(change.date)) : '') + '') .append('' + Q(change.user || 'undisclosed') + '') .append('' + Q(rcmail.gettext(op_labels[change.op] || '', 'calendar') + (op_append ? ' ...' : '')) + '') @@ -1279,7 +1281,7 @@ function rcube_calendar_ui(settings) modal: false, resizable: true, closeOnEscape: true, - title: rcmail.gettext('eventdiff','calendar').replace('$rev', data.rev) + ' - ' + event.title, + title: rcmail.gettext('eventdiff','calendar').replace('$rev1', data.rev1).replace('$rev2', data.rev2) + ' - ' + event.title, open: function() { $dialog.attr('aria-hidden', 'false'); setTimeout(function(){ diff --git a/plugins/calendar/drivers/kolab/kolab_driver.php b/plugins/calendar/drivers/kolab/kolab_driver.php index 2d5958aa..8671b108 100644 --- a/plugins/calendar/drivers/kolab/kolab_driver.php +++ b/plugins/calendar/drivers/kolab/kolab_driver.php @@ -2016,12 +2016,13 @@ class kolab_driver extends calendar_driver * Get a list of property changes beteen two revisions of an event * * @param array $event Hash array with event properties - * @param mixed $rev Revisions: "from:to" + * @param mixed $rev1 Old Revision + * @param mixed $rev2 New Revision * * @return array List of property changes, each as a hash array * @see calendar_driver::get_event_diff() */ - public function get_event_diff($event, $rev) + public function get_event_diff($event, $rev1, $rev2) { if (empty($this->bonnie_api)) { return false; @@ -2030,9 +2031,10 @@ class kolab_driver extends calendar_driver list($uid, $mailbox) = $this->_resolve_event_identity($event); // call Bonnie API - $result = $this->bonnie_api->diff('event', $uid, $rev, $mailbox); + $result = $this->bonnie_api->diff('event', $uid, $rev1, $rev2, $mailbox); if (is_array($result) && $result['uid'] == $uid) { - $result['rev'] = $rev; + $result['rev1'] = $rev1; + $result['rev2'] = $rev2; $keymap = array( 'dtstart' => 'start', diff --git a/plugins/calendar/drivers/kolab/kolab_invitation_calendar.php b/plugins/calendar/drivers/kolab/kolab_invitation_calendar.php index a7ea9c10..3ec82ac1 100644 --- a/plugins/calendar/drivers/kolab/kolab_invitation_calendar.php +++ b/plugins/calendar/drivers/kolab/kolab_invitation_calendar.php @@ -197,7 +197,7 @@ class kolab_invitation_calendar { // find the actual folder this event resides in if (!empty($event['_folder_id'])) { - $cal = $this->cal->get_calendar($event['_folder_id']); + $cal = $this->cal->driver->get_calendar($event['_folder_id']); } else { $cal = null; diff --git a/plugins/calendar/localization/ca_ES.inc b/plugins/calendar/localization/ca_ES.inc index e3d92ed5..4318eba6 100644 --- a/plugins/calendar/localization/ca_ES.inc +++ b/plugins/calendar/localization/ca_ES.inc @@ -240,7 +240,6 @@ $labels['birthdayscalendarsources'] = 'D\'aquestes llibretes d\'adreces'; $labels['birthdayeventtitle'] = 'Aniversari de $name'; $labels['birthdayage'] = 'Edat $age'; $labels['eventchangelog'] = 'Canvia historial'; -$labels['eventdiff'] = 'Canvis de revisions $rev'; $labels['revision'] = 'Revisió'; $labels['user'] = 'Usuari'; $labels['operation'] = 'Acció'; diff --git a/plugins/calendar/localization/cs_CZ.inc b/plugins/calendar/localization/cs_CZ.inc index 48c95e93..9b03cd92 100644 --- a/plugins/calendar/localization/cs_CZ.inc +++ b/plugins/calendar/localization/cs_CZ.inc @@ -247,7 +247,6 @@ $labels['birthdayscalendarsources'] = 'Z těchto adresářů'; $labels['birthdayeventtitle'] = 'Narozeniny $name'; $labels['birthdayage'] = 'Věk $age'; $labels['eventchangelog'] = 'Historie změn'; -$labels['eventdiff'] = 'Změny od verze $rev'; $labels['revision'] = 'Verze'; $labels['user'] = 'Uživatel'; $labels['operation'] = 'Činnost'; diff --git a/plugins/calendar/localization/da_DK.inc b/plugins/calendar/localization/da_DK.inc index 8f344989..fcfe5ccf 100644 --- a/plugins/calendar/localization/da_DK.inc +++ b/plugins/calendar/localization/da_DK.inc @@ -248,7 +248,6 @@ $labels['birthdayscalendarsources'] = 'Fra disse adressebøger'; $labels['birthdayeventtitle'] = '$name har fødselsdag'; $labels['birthdayage'] = '$age år'; $labels['eventchangelog'] = 'Ændringshistorik'; -$labels['eventdiff'] = 'Ændringer fra revisionerne $rev'; $labels['revision'] = 'Revision'; $labels['user'] = 'Bruger'; $labels['operation'] = 'Handling'; diff --git a/plugins/calendar/localization/de_DE.inc b/plugins/calendar/localization/de_DE.inc index 57bd0a2c..1a11052d 100644 --- a/plugins/calendar/localization/de_DE.inc +++ b/plugins/calendar/localization/de_DE.inc @@ -248,7 +248,7 @@ $labels['birthdayscalendarsources'] = 'Für diese Adressbücher'; $labels['birthdayeventtitle'] = '$names Geburtstag'; $labels['birthdayage'] = 'Alter $age'; $labels['eventchangelog'] = 'Änderungshistorie'; -$labels['eventdiff'] = 'Änderungen aus den Versionen $rev'; +$labels['eventdiff'] = 'Änderungen zwischen $rev1 und $rev2'; $labels['revision'] = 'Version'; $labels['user'] = 'Benutzer'; $labels['operation'] = 'Aktion'; diff --git a/plugins/calendar/localization/en_US.inc b/plugins/calendar/localization/en_US.inc index 85e7e7c2..2c79e341 100644 --- a/plugins/calendar/localization/en_US.inc +++ b/plugins/calendar/localization/en_US.inc @@ -277,7 +277,7 @@ $labels['birthdayage'] = 'Age $age'; // history dialog $labels['eventchangelog'] = 'Change History'; -$labels['eventdiff'] = 'Changes from revisions $rev'; +$labels['eventdiff'] = 'Changes from $rev1 to $rev2'; $labels['revision'] = 'Revision'; $labels['user'] = 'User'; $labels['operation'] = 'Action'; diff --git a/plugins/calendar/localization/es_AR.inc b/plugins/calendar/localization/es_AR.inc index 176b9b2d..a22ea039 100644 --- a/plugins/calendar/localization/es_AR.inc +++ b/plugins/calendar/localization/es_AR.inc @@ -243,7 +243,6 @@ $labels['birthdayscalendarsources'] = 'De estas libretas de direcciones'; $labels['birthdayeventtitle'] = 'Cumpleaños de $name'; $labels['birthdayage'] = 'Edad $age'; $labels['eventchangelog'] = 'Cambiar Historial'; -$labels['eventdiff'] = 'Cambios de revisiones $rev'; $labels['revision'] = 'Revisión'; $labels['user'] = 'Usuario'; $labels['operation'] = 'Acción'; diff --git a/plugins/calendar/localization/fi_FI.inc b/plugins/calendar/localization/fi_FI.inc index 743d851e..2543934a 100644 --- a/plugins/calendar/localization/fi_FI.inc +++ b/plugins/calendar/localization/fi_FI.inc @@ -244,7 +244,6 @@ $labels['birthdayscalendarsources'] = 'Näistä osoitekirjoista'; $labels['birthdayeventtitle'] = 'Syntymäpäivä: $name'; $labels['birthdayage'] = 'Ikä $age'; $labels['eventchangelog'] = 'Muuta historiaa'; -$labels['eventdiff'] = 'Muutokset versiosta $rev'; $labels['revision'] = 'Versio'; $labels['user'] = 'Käyttäjä'; $labels['operation'] = 'Toiminto'; diff --git a/plugins/calendar/localization/fr_FR.inc b/plugins/calendar/localization/fr_FR.inc index 9ec3ee4e..871a9ab9 100644 --- a/plugins/calendar/localization/fr_FR.inc +++ b/plugins/calendar/localization/fr_FR.inc @@ -245,7 +245,6 @@ $labels['birthdayscalendarsources'] = 'Depuis ces carnets d\'adresses'; $labels['birthdayeventtitle'] = 'Anniversaire de $name'; $labels['birthdayage'] = 'Age $age'; $labels['eventchangelog'] = 'Historique des modifications'; -$labels['eventdiff'] = 'Modifications pour le version $rev'; $labels['revision'] = 'Version'; $labels['user'] = 'Utilisateur'; $labels['operation'] = 'Action'; diff --git a/plugins/calendar/localization/he.inc b/plugins/calendar/localization/he.inc index 036f1843..6a5284a5 100644 --- a/plugins/calendar/localization/he.inc +++ b/plugins/calendar/localization/he.inc @@ -245,7 +245,6 @@ $labels['birthdayscalendarsources'] = 'From these address books'; $labels['birthdayeventtitle'] = '$name\'s Birthday'; $labels['birthdayage'] = 'Age $age'; $labels['eventchangelog'] = 'Change History'; -$labels['eventdiff'] = 'Changes from revisions $rev'; $labels['revision'] = 'Revision'; $labels['user'] = 'User'; $labels['operation'] = 'Action'; diff --git a/plugins/calendar/localization/hr.inc b/plugins/calendar/localization/hr.inc index 67948044..d622f75d 100644 --- a/plugins/calendar/localization/hr.inc +++ b/plugins/calendar/localization/hr.inc @@ -245,7 +245,6 @@ $labels['birthdayscalendarsources'] = 'From these address books'; $labels['birthdayeventtitle'] = '$name\'s Birthday'; $labels['birthdayage'] = 'Age $age'; $labels['eventchangelog'] = 'Change History'; -$labels['eventdiff'] = 'Changes from revisions $rev'; $labels['revision'] = 'Revision'; $labels['user'] = 'User'; $labels['operation'] = 'Action'; diff --git a/plugins/calendar/localization/it_IT.inc b/plugins/calendar/localization/it_IT.inc index cf590660..64a22cbe 100644 --- a/plugins/calendar/localization/it_IT.inc +++ b/plugins/calendar/localization/it_IT.inc @@ -247,7 +247,6 @@ $labels['birthdayscalendarsources'] = 'Da queste rubriche'; $labels['birthdayeventtitle'] = 'Compleanno di $name'; $labels['birthdayage'] = 'Età: $age anni'; $labels['eventchangelog'] = 'Storico modifiche'; -$labels['eventdiff'] = 'Cambiamenti dalle revisioni $rev'; $labels['revision'] = 'Revisione'; $labels['user'] = 'Utente'; $labels['operation'] = 'Azione'; diff --git a/plugins/calendar/localization/pl_PL.inc b/plugins/calendar/localization/pl_PL.inc index 9eb8ecbc..8a0db8aa 100644 --- a/plugins/calendar/localization/pl_PL.inc +++ b/plugins/calendar/localization/pl_PL.inc @@ -246,7 +246,6 @@ $labels['birthdayscalendarsources'] = 'Z tych książek adresowych'; $labels['birthdayeventtitle'] = 'Urodziny $name\'s'; $labels['birthdayage'] = 'Wiek $age'; $labels['eventchangelog'] = 'Historia zmian'; -$labels['eventdiff'] = 'Zmiany od wersji $rev'; $labels['revision'] = 'Wersja'; $labels['user'] = 'Użytkownik'; $labels['operation'] = 'Akcja'; diff --git a/plugins/calendar/localization/pt_PT.inc b/plugins/calendar/localization/pt_PT.inc index 0d62a262..75ab3073 100644 --- a/plugins/calendar/localization/pt_PT.inc +++ b/plugins/calendar/localization/pt_PT.inc @@ -248,7 +248,6 @@ $labels['birthdayscalendarsources'] = 'From these address books'; $labels['birthdayeventtitle'] = 'Aniversário de $name'; $labels['birthdayage'] = 'Idade $age'; $labels['eventchangelog'] = 'Alterar histórico'; -$labels['eventdiff'] = 'Changes from revisions $rev'; $labels['revision'] = 'Revisão'; $labels['user'] = 'Utilizador'; $labels['operation'] = 'Ação'; diff --git a/plugins/calendar/localization/ru_RU.inc b/plugins/calendar/localization/ru_RU.inc index 58bcf81d..0ef726bf 100644 --- a/plugins/calendar/localization/ru_RU.inc +++ b/plugins/calendar/localization/ru_RU.inc @@ -248,7 +248,6 @@ $labels['birthdayscalendarsources'] = 'Из этих адресных книг'; $labels['birthdayeventtitle'] = 'День рождения $name'; $labels['birthdayage'] = 'Возраст $age'; $labels['eventchangelog'] = 'История изменений'; -$labels['eventdiff'] = 'Изменения с ревизии $rev'; $labels['revision'] = 'Ревизия'; $labels['user'] = 'Пользователь'; $labels['operation'] = 'Действие'; diff --git a/plugins/calendar/localization/sl.inc b/plugins/calendar/localization/sl.inc index 2e666b16..747dfe35 100644 --- a/plugins/calendar/localization/sl.inc +++ b/plugins/calendar/localization/sl.inc @@ -247,7 +247,6 @@ $labels['birthdayscalendarsources'] = 'Iz teh imenikov'; $labels['birthdayeventtitle'] = 'Rojstni dan osebe $name'; $labels['birthdayage'] = 'Starost $age'; $labels['eventchangelog'] = 'Spremeni Zgodovino'; -$labels['eventdiff'] = 'Spremembe iz verzij $rev'; $labels['revision'] = 'Verzija'; $labels['user'] = 'Uporabnik'; $labels['operation'] = 'Dejanje'; diff --git a/plugins/calendar/localization/sv_SE.inc b/plugins/calendar/localization/sv_SE.inc index d0487292..19479448 100644 --- a/plugins/calendar/localization/sv_SE.inc +++ b/plugins/calendar/localization/sv_SE.inc @@ -247,7 +247,6 @@ $labels['birthdayscalendarsources'] = 'Från dessa adressböcker'; $labels['birthdayeventtitle'] = '$name\s födelsedag'; $labels['birthdayage'] = '$age år'; $labels['eventchangelog'] = 'Ändringshistorik'; -$labels['eventdiff'] = 'Ändringar från revisioner $rev'; $labels['revision'] = 'Revision'; $labels['user'] = 'Användare'; $labels['operation'] = 'Åtgärd'; diff --git a/plugins/libkolab/lib/kolab_bonnie_api.php b/plugins/libkolab/lib/kolab_bonnie_api.php index e8ac131d..11d4845f 100644 --- a/plugins/libkolab/lib/kolab_bonnie_api.php +++ b/plugins/libkolab/lib/kolab_bonnie_api.php @@ -50,25 +50,33 @@ class kolab_bonnie_api /** * Wrapper function for .changelog() API call */ - public function changelog($type, $uid, $mailbox=null) + public function changelog($type, $uid, $mailbox, $msguid=null) { - return $this->client->execute($type.'.changelog', array('uid' => $uid, 'mailbox' => $mailbox)); + return $this->client->execute($type.'.changelog', array('uid' => $uid, 'mailbox' => $mailbox, 'msguid' => $msguid)); } /** * Wrapper function for .diff() API call */ - public function diff($type, $uid, $rev, $mailbox=null) + public function diff($type, $uid, $rev1, $rev2, $mailbox, $msguid=null) { - return $this->client->execute($type.'.diff', array('uid' => $uid, 'rev' => $rev, 'mailbox' => $mailbox)); + return $this->client->execute($type.'.diff', array('uid' => $uid, 'rev1' => $rev1, 'rev2' => $rev2, 'mailbox' => $mailbox, 'msguid' => $msguid)); } /** * Wrapper function for .get() API call */ - public function get($type, $uid, $rev, $mailbox=null) + public function get($type, $uid, $rev, $mailbox, $msguid=null) { - return $this->client->execute($type.'.get', array('uid' => $uid, 'rev' => intval($rev), 'mailbox' => $mailbox)); + return $this->client->execute($type.'.get', array('uid' => $uid, 'rev' => $rev, 'mailbox' => $mailbox, 'msguid' => $msguid)); + } + + /** + * Wrapper function for .rawdata() API call + */ + public function rawdata($type, $uid, $rev, $mailbox, $msguid=null) + { + return $this->client->execute($type.'.rawdata', array('uid' => $uid, 'rev' => $rev, 'mailbox' => $mailbox, 'msguid' => $msguid)); } /**