Merge branch 'dev/kolab3' of ssh://git.kolabsys.com/git/roundcube into dev/kolab3
This commit is contained in:
commit
6fe30d09c6
5 changed files with 22 additions and 79 deletions
|
@ -25,13 +25,13 @@
|
|||
+ View: 3.9: Alter event with drag/drop
|
||||
+ Option: 4.12: Set default reminder time
|
||||
+ Option: 3.23: Specify folder for new event (prefs)
|
||||
- Option: Set date/time format in prefs
|
||||
+ Option: Set date/time format in prefs
|
||||
+ Receive: 1.20: Invitation handling
|
||||
- Jump to calendar view from mail ("Show event")
|
||||
- Allow to re-send invitations
|
||||
- Implement iTIP delegation
|
||||
|
||||
- View: 3.4: Fish-Eye View For Busy Days
|
||||
+ View: 3.4: Fish-Eye View For Busy Days
|
||||
+ View: 3.8: Color according to calendar and category (similar to Kontact)
|
||||
|
||||
+ Support for multiple calendars (replace categories)
|
||||
|
@ -40,8 +40,8 @@
|
|||
+ ICS parser/generator (http://code.google.com/p/qcal/)
|
||||
|
||||
- Export *with* attachments
|
||||
- Importing ICS files (upload, drag & drop)
|
||||
- Remember last visited view
|
||||
- Create/manage invdividual views
|
||||
- Support for tasks/todos with task list view (ordered by date/time)
|
||||
+ Importing ICS files (upload, drag & drop)
|
||||
|
||||
|
||||
|
|
|
@ -2349,7 +2349,7 @@ function rcube_calendar_ui(settings)
|
|||
event.end = new Date(event.start.getTime() + (allDay ? DAY_MS : HOUR_MS));
|
||||
}
|
||||
// moved to all-day section: set times to 12:00 - 13:00
|
||||
if (allDay && !event.allday) {
|
||||
if (allDay && !event.allDay) {
|
||||
event.start.setHours(12);
|
||||
event.start.setMinutes(0);
|
||||
event.start.setSeconds(0);
|
||||
|
@ -2358,7 +2358,7 @@ function rcube_calendar_ui(settings)
|
|||
event.end.setSeconds(0);
|
||||
}
|
||||
// moved from all-day section: set times to working hours
|
||||
else if (event.allday && !allDay) {
|
||||
else if (event.allDay && !allDay) {
|
||||
var newstart = event.start.getTime();
|
||||
revertFunc(); // revert to get original duration
|
||||
var numdays = Math.max(1, Math.round((event.end.getTime() - event.start.getTime()) / DAY_MS)) - 1;
|
||||
|
|
|
@ -60,7 +60,7 @@ class kolab_calendar
|
|||
|
||||
// fetch objects from the given IMAP folder
|
||||
$this->storage = kolab_storage::get_folder($this->imap_folder);
|
||||
$this->ready = !PEAR::isError($this->storage);
|
||||
$this->ready = $this->storage && !PEAR::isError($this->storage);
|
||||
|
||||
// Set readonly and alarms flags according to folder permissions
|
||||
if ($this->ready) {
|
||||
|
@ -70,7 +70,7 @@ class kolab_calendar
|
|||
}
|
||||
else {
|
||||
$rights = $this->storage->get_acl();
|
||||
if (!PEAR::isError($rights)) {
|
||||
if ($rights && !PEAR::isError($rights)) {
|
||||
if (strpos($rights, 'i') !== false)
|
||||
$this->readonly = false;
|
||||
}
|
||||
|
@ -271,7 +271,7 @@ class kolab_calendar
|
|||
$object = $this->_from_rcube_event($event);
|
||||
$saved = $this->storage->save($object, 'event');
|
||||
|
||||
if (PEAR::isError($saved)) {
|
||||
if (!$saved || PEAR::isError($saved)) {
|
||||
raise_error(array(
|
||||
'code' => 600, 'type' => 'php',
|
||||
'file' => __FILE__, 'line' => __LINE__,
|
||||
|
@ -297,15 +297,15 @@ class kolab_calendar
|
|||
public function update_event($event)
|
||||
{
|
||||
$updated = false;
|
||||
$old = $this->storage->getObject($event['id']);
|
||||
if (PEAR::isError($old))
|
||||
$old = $this->storage->get_object($event['id']);
|
||||
if (!$old || PEAR::isError($old))
|
||||
return false;
|
||||
|
||||
$old['recurrence'] = ''; # clear old field, could have been removed in new, too
|
||||
$object = $this->_from_rcube_event($event, $old);
|
||||
$saved = $this->storage->save($object, 'event', $event['id']);
|
||||
|
||||
if (PEAR::isError($saved)) {
|
||||
if (!$saved || PEAR::isError($saved)) {
|
||||
raise_error(array(
|
||||
'code' => 600, 'type' => 'php',
|
||||
'file' => __FILE__, 'line' => __LINE__,
|
||||
|
@ -328,29 +328,15 @@ class kolab_calendar
|
|||
*/
|
||||
public function delete_event($event, $force = true)
|
||||
{
|
||||
$deleted = false;
|
||||
$deleted = $this->storage->delete($event['id'], $force);
|
||||
|
||||
if (!$force) {
|
||||
// Get IMAP object ID
|
||||
$imap_uid = $this->storage->_getStorageId($event['id']);
|
||||
}
|
||||
|
||||
$deleteme = $this->storage->delete($event['id'], $force);
|
||||
|
||||
if (PEAR::isError($deleteme)) {
|
||||
if (!$deleted || PEAR::isError($deleted)) {
|
||||
raise_error(array(
|
||||
'code' => 600, 'type' => 'php',
|
||||
'file' => __FILE__, 'line' => __LINE__,
|
||||
'message' => "Error deleting event object from Kolab server:" . $deleteme->getMessage()),
|
||||
'message' => "Error deleting event object from Kolab server"),
|
||||
true, false);
|
||||
}
|
||||
else {
|
||||
// Save IMAP object ID in session, will be used for restore action
|
||||
if ($imap_uid)
|
||||
$_SESSION['kolab_delete_uids'][$event['id']] = $imap_uid;
|
||||
|
||||
$deleted = true;
|
||||
}
|
||||
|
||||
return $deleted;
|
||||
}
|
||||
|
@ -363,48 +349,8 @@ class kolab_calendar
|
|||
*/
|
||||
public function restore_event($event)
|
||||
{
|
||||
$imap_uid = $_SESSION['kolab_delete_uids'][$event['id']];
|
||||
|
||||
if (!$imap_uid)
|
||||
return false;
|
||||
|
||||
$session = &Horde_Kolab_Session::singleton();
|
||||
$imap = &$session->getImap();
|
||||
|
||||
if (is_object($imap) && is_a($imap, 'PEAR_Error')) {
|
||||
$error = $imap;
|
||||
}
|
||||
else {
|
||||
$result = $imap->select($this->imap_folder);
|
||||
if (is_object($result) && is_a($result, 'PEAR_Error')) {
|
||||
$error = $result;
|
||||
}
|
||||
else {
|
||||
$result = $imap->undeleteMessages($imap_uid);
|
||||
if (is_object($result) && is_a($result, 'PEAR_Error')) {
|
||||
$error = $result;
|
||||
}
|
||||
else {
|
||||
// re-sync the cache
|
||||
$this->storage->synchronize();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($error) {
|
||||
raise_error(array(
|
||||
'code' => 600, 'type' => 'php',
|
||||
'file' => __FILE__, 'line' => __LINE__,
|
||||
'message' => "Error undeleting an event object(s) from the Kolab server:" . $error->getMessage()),
|
||||
true, false);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
$rcmail = rcmail::get_instance();
|
||||
$rcmail->session->remove('kolab_delete_uids');
|
||||
|
||||
return true;
|
||||
// TODO: re-implement this with new kolab_storege backend
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -161,8 +161,8 @@ class kolab_driver extends calendar_driver
|
|||
}
|
||||
|
||||
// subscribe to new calendar by default
|
||||
$storage = $this->rc->get_storage();
|
||||
$storage->subscribe($folder);
|
||||
$storage = kolab_storage::get_folder($folder);
|
||||
$storage->subscribe($prop['active'], kolab_storage::SERVERSIDE_SUBSCRIPTION);
|
||||
|
||||
// create ID
|
||||
$id = kolab_storage::folder_id($folder);
|
||||
|
@ -227,13 +227,9 @@ class kolab_driver extends calendar_driver
|
|||
public function subscribe_calendar($prop)
|
||||
{
|
||||
if ($prop['id'] && ($cal = $this->calendars[$prop['id']])) {
|
||||
$storage = $this->rc->get_storage();
|
||||
if ($prop['active'])
|
||||
return $storage->subscribe($cal->get_realname());
|
||||
else
|
||||
return $storage->unsubscribe($cal->get_realname());
|
||||
return $cal->storage->subscribe($prop['active'], kolab_storage::SERVERSIDE_SUBSCRIPTION);
|
||||
}
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -157,6 +157,7 @@
|
|||
|
||||
<file name="config.inc.php.dist" role="data"></file>
|
||||
<file name="LICENSE" role="data"></file>
|
||||
<file name="README" role="data"></file>
|
||||
<file name="TODO" role="data"></file>
|
||||
|
||||
<file name="localization/bg_BG.inc" role="data"></file>
|
||||
|
|
Loading…
Add table
Reference in a new issue