Show folder creation/manipulation errors in UI (#344)

This commit is contained in:
Thomas Bruederli 2011-08-17 14:04:48 +02:00
parent 9d2e9843e2
commit 0c1d0fef75
4 changed files with 22 additions and 5 deletions

View file

@ -494,8 +494,10 @@ class calendar extends rcube_plugin
if ($success)
$this->rc->output->show_message('successfullysaved', 'confirmation');
else
$this->rc->output->show_message('calendar.errorsaving', 'error');
else {
$error_msg = $this->gettext('errorsaving') . ($this->driver->last_error ? ': ' . $this->driver->last_error :'');
$this->rc->output->show_message($error_msg, 'error');
}
// TODO: keep view and date selection
if ($success && $reload)

View file

@ -82,6 +82,7 @@ abstract class calendar_driver
public $undelete = false; // event undelete action
public $categoriesimmutable = false;
public $alarm_types = array('DISPLAY');
public $last_error;
/**
* Get a list of available calendars from this source

View file

@ -221,15 +221,18 @@ class kolab_driver extends calendar_driver
}
// sanity checks (from steps/settings/save_folder.inc)
else if (!strlen($folder)) {
$this->last_error = 'Invalid folder name';
return false;
}
else if (strlen($folder) > 128) {
$this->last_error = 'Folder name too long';
return false;
}
else {
// these characters are problematic e.g. when used in LIST/LSUB
foreach (array($delimiter, '%', '*') as $char) {
if (strpos($folder, $delimiter) !== false) {
$this->last_error = 'Invalid folder name';
return false;
}
}
@ -254,20 +257,24 @@ class kolab_driver extends calendar_driver
if ($parent_opts['namespace'] != 'personal'
&& (empty($parent_opts['rights']) || !preg_match('/[ck]/', implode($parent_opts)))
) {
$this->last_error = 'No permission to create folder';
return false;
}
}
// update the folder name
if (strlen($oldfolder)) {
if ($oldfolder != $folder)
$result = rcube_kolab::folder_rename($oldfolder, $folder);
if ($oldfolder != $folder) {
if (!($result = rcube_kolab::folder_rename($oldfolder, $folder)))
$this->last_error = rcube_kolab::$last_error;
}
else
$result = true;
}
// create new folder
else {
$result = rcube_kolab::folder_create($folder, 'event', false);
if (!($result = rcube_kolab::folder_create($folder, 'event', false)))
$this->last_error = rcube_kolab::$last_error;
}
return $result ? $folder : false;
@ -291,6 +298,8 @@ class kolab_driver extends calendar_driver
$this->rc->user->save_prefs($prefs);
return true;
}
else
$this->last_error = rcube_kolab::$last_error;
}
return false;

View file

@ -26,6 +26,8 @@ require_once 'Horde/Perms.php';
*/
class rcube_kolab
{
public static $last_error;
private static $horde_auth;
private static $config;
private static $ready = false;
@ -254,6 +256,7 @@ class rcube_kolab
$result = $folder->delete();
if (is_a($result, 'PEAR_Error')) {
self::$last_error = $result->getMessage();
return false;
}
@ -283,6 +286,7 @@ class rcube_kolab
));
if (is_a($result, 'PEAR_Error')) {
self::$last_error = $result->getMessage();
return false;
}
@ -306,6 +310,7 @@ class rcube_kolab
$result = $kolab->rename($folder);
if (is_a($result, 'PEAR_Error')) {
self::$last_error = $result->getMessage();
return false;
}