Show folder creation/manipulation errors in UI (#344)
This commit is contained in:
parent
9d2e9843e2
commit
0c1d0fef75
4 changed files with 22 additions and 5 deletions
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue