Merge branch 'master' of ssh://git.kolabsys.com/git/roundcube

This commit is contained in:
Thomas Bruederli 2011-08-01 14:16:25 +02:00
commit 7e3a88996f
4 changed files with 49 additions and 16 deletions

View file

@ -207,8 +207,15 @@ class kolab_driver extends calendar_driver
$parent = $prop['parent']; // UTF7
$delimiter = $_SESSION['imap_delimiter'];
if (strlen($oldfolder)) {
$this->rc->imap_connect();
$options = $this->rc->imap->mailbox_info($oldfolder);
}
if (!empty($options) && ($options['norename'] || $options['protected'])) {
}
// sanity checks (from steps/settings/save_folder.inc)
if (!strlen($folder)) {
else if (!strlen($folder)) {
return false;
}
else if (strlen($folder) > 128) {
@ -223,9 +230,7 @@ class kolab_driver extends calendar_driver
}
}
// @TODO: $options
$options = array();
if ($options['protected'] || $options['norename']) {
if (!empty($options) && ($options['protected'] || $options['norename'])) {
$folder = $oldfolder;
}
else if (strlen($parent)) {
@ -909,6 +914,13 @@ class kolab_driver extends calendar_driver
'name' => $this->rc->gettext('properties'),
);
// Disable folder name input
if (!empty($options) && ($options['norename'] || $options['protected'])) {
$input_name = new html_hiddenfield(array('name' => 'name', 'id' => 'calendar-name'));
$formfields['name']['value'] = Q(str_replace($delimiter, ' » ', rcube_kolab::object_name($folder)))
. $input_name->show($folder);
}
// calendar name (default field)
$form['props']['fieldsets']['location'] = array(
'name' => $this->rc->gettext('location'),
@ -917,7 +929,7 @@ class kolab_driver extends calendar_driver
),
);
if (!empty($options) && ($options['norename'] || $options['namespace'] != 'personal')) {
if (!empty($options) && ($options['norename'] || $options['protected'])) {
// prevent user from moving folder
$hidden_fields[] = array('name' => 'parent', 'value' => $path_imap);
}

View file

@ -420,8 +420,15 @@ class kolab_addressbook extends rcube_plugin
$path = trim(get_input_value('_parent', RCUBE_INPUT_POST, true)); // UTF7-IMAP
$delimiter = $_SESSION['imap_delimiter'];
if (strlen($oldfolder)) {
$this->rc->imap_connect();
$options = $this->rc->imap->mailbox_info($oldfolder);
}
if (!empty($options) && ($options['norename'] || $options['protected'])) {
}
// sanity checks (from steps/settings/save_folder.inc)
if (!strlen($folder)) {
else if (!strlen($folder)) {
$error = rcube_label('cannotbeempty');
}
else if (strlen($folder) > 128) {
@ -438,9 +445,7 @@ class kolab_addressbook extends rcube_plugin
}
if (!$error) {
// @TODO: $options
$options = array();
if ($options['protected'] || $options['norename']) {
if (!empty($options) && ($options['protected'] || $options['norename'])) {
$folder = $oldfolder;
}
else if (strlen($path)) {

View file

@ -144,8 +144,13 @@ class kolab_addressbook_ui
'name' => $this->rc->gettext('properties'),
);
$foldername = new html_inputfield(array('name' => '_name', 'id' => '_name', 'size' => 30));
$foldername = $foldername->show($name);
if (!empty($options) && ($options['norename'] || $options['protected'])) {
$foldername = Q(str_replace($delimiter, ' » ', rcube_kolab::object_name($folder)));
}
else {
$foldername = new html_inputfield(array('name' => '_name', 'id' => '_name', 'size' => 30));
$foldername = $foldername->show($name);
}
$form['props']['fieldsets']['location'] = array(
'name' => $this->rc->gettext('location'),
@ -157,7 +162,7 @@ class kolab_addressbook_ui
),
);
if (!empty($options) && ($options['norename'] || $options['namespace'] != 'personal')) {
if (!empty($options) && ($options['norename'] || $options['protected'])) {
// prevent user from moving folder
$hidden_fields[] = array('name' => '_parent', 'value' => $path_imap);
}

View file

@ -348,8 +348,14 @@ class rcube_kolab
$delim = $ns[1];
// get username
$pos = strpos($folder, $delim);
$prefix = '('.substr($folder, 0, $pos).') ';
$folder = substr($folder, $pos+1);
if ($pos) {
$prefix = '('.substr($folder, 0, $pos).') ';
$folder = substr($folder, $pos+1);
}
else {
$prefix = '('.$folder.')';
$folder = '';
}
$found = true;
$folder_ns = 'other';
break;
@ -427,12 +433,12 @@ class rcube_kolab
// get all folders of specified type
$folders = self::get_folders($type);
$delim = $_SESSION['delimiter'];
$delim = $_SESSION['imap_delimiter'];
$names = array();
$len = strlen($current);
if ($len && ($rpos = strrpos($current, $delim))) {
$parent = substr($current, 0, $rpos-1);
$parent = substr($current, 0, $rpos);
$p_len = strlen($parent);
}
@ -457,6 +463,11 @@ class rcube_kolab
$names[$name] = rcube_charset_convert($name, 'UTF7-IMAP');
}
// Make sure parent folder is listed (might be skipped e.g. if it's namespace root)
if ($p_len && !isset($names[$parent])) {
$names[$parent] = rcube_charset_convert($parent, 'UTF7-IMAP');
}
// Sort folders list
asort($names, SORT_LOCALE_STRING);