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)
|
if ($success)
|
||||||
$this->rc->output->show_message('successfullysaved', 'confirmation');
|
$this->rc->output->show_message('successfullysaved', 'confirmation');
|
||||||
else
|
else {
|
||||||
$this->rc->output->show_message('calendar.errorsaving', 'error');
|
$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
|
// TODO: keep view and date selection
|
||||||
if ($success && $reload)
|
if ($success && $reload)
|
||||||
|
|
|
@ -82,6 +82,7 @@ abstract class calendar_driver
|
||||||
public $undelete = false; // event undelete action
|
public $undelete = false; // event undelete action
|
||||||
public $categoriesimmutable = false;
|
public $categoriesimmutable = false;
|
||||||
public $alarm_types = array('DISPLAY');
|
public $alarm_types = array('DISPLAY');
|
||||||
|
public $last_error;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a list of available calendars from this source
|
* 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)
|
// sanity checks (from steps/settings/save_folder.inc)
|
||||||
else if (!strlen($folder)) {
|
else if (!strlen($folder)) {
|
||||||
|
$this->last_error = 'Invalid folder name';
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else if (strlen($folder) > 128) {
|
else if (strlen($folder) > 128) {
|
||||||
|
$this->last_error = 'Folder name too long';
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// these characters are problematic e.g. when used in LIST/LSUB
|
// these characters are problematic e.g. when used in LIST/LSUB
|
||||||
foreach (array($delimiter, '%', '*') as $char) {
|
foreach (array($delimiter, '%', '*') as $char) {
|
||||||
if (strpos($folder, $delimiter) !== false) {
|
if (strpos($folder, $delimiter) !== false) {
|
||||||
|
$this->last_error = 'Invalid folder name';
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -254,20 +257,24 @@ class kolab_driver extends calendar_driver
|
||||||
if ($parent_opts['namespace'] != 'personal'
|
if ($parent_opts['namespace'] != 'personal'
|
||||||
&& (empty($parent_opts['rights']) || !preg_match('/[ck]/', implode($parent_opts)))
|
&& (empty($parent_opts['rights']) || !preg_match('/[ck]/', implode($parent_opts)))
|
||||||
) {
|
) {
|
||||||
|
$this->last_error = 'No permission to create folder';
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// update the folder name
|
// update the folder name
|
||||||
if (strlen($oldfolder)) {
|
if (strlen($oldfolder)) {
|
||||||
if ($oldfolder != $folder)
|
if ($oldfolder != $folder) {
|
||||||
$result = rcube_kolab::folder_rename($oldfolder, $folder);
|
if (!($result = rcube_kolab::folder_rename($oldfolder, $folder)))
|
||||||
|
$this->last_error = rcube_kolab::$last_error;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
$result = true;
|
$result = true;
|
||||||
}
|
}
|
||||||
// create new folder
|
// create new folder
|
||||||
else {
|
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;
|
return $result ? $folder : false;
|
||||||
|
@ -291,6 +298,8 @@ class kolab_driver extends calendar_driver
|
||||||
$this->rc->user->save_prefs($prefs);
|
$this->rc->user->save_prefs($prefs);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
$this->last_error = rcube_kolab::$last_error;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -26,6 +26,8 @@ require_once 'Horde/Perms.php';
|
||||||
*/
|
*/
|
||||||
class rcube_kolab
|
class rcube_kolab
|
||||||
{
|
{
|
||||||
|
public static $last_error;
|
||||||
|
|
||||||
private static $horde_auth;
|
private static $horde_auth;
|
||||||
private static $config;
|
private static $config;
|
||||||
private static $ready = false;
|
private static $ready = false;
|
||||||
|
@ -254,6 +256,7 @@ class rcube_kolab
|
||||||
$result = $folder->delete();
|
$result = $folder->delete();
|
||||||
|
|
||||||
if (is_a($result, 'PEAR_Error')) {
|
if (is_a($result, 'PEAR_Error')) {
|
||||||
|
self::$last_error = $result->getMessage();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -283,6 +286,7 @@ class rcube_kolab
|
||||||
));
|
));
|
||||||
|
|
||||||
if (is_a($result, 'PEAR_Error')) {
|
if (is_a($result, 'PEAR_Error')) {
|
||||||
|
self::$last_error = $result->getMessage();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -306,6 +310,7 @@ class rcube_kolab
|
||||||
|
|
||||||
$result = $kolab->rename($folder);
|
$result = $kolab->rename($folder);
|
||||||
if (is_a($result, 'PEAR_Error')) {
|
if (is_a($result, 'PEAR_Error')) {
|
||||||
|
self::$last_error = $result->getMessage();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue