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 $parent = $prop['parent']; // UTF7
$delimiter = $_SESSION['imap_delimiter']; $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) // sanity checks (from steps/settings/save_folder.inc)
if (!strlen($folder)) { else if (!strlen($folder)) {
return false; return false;
} }
else if (strlen($folder) > 128) { else if (strlen($folder) > 128) {
@ -223,9 +230,7 @@ class kolab_driver extends calendar_driver
} }
} }
// @TODO: $options if (!empty($options) && ($options['protected'] || $options['norename'])) {
$options = array();
if ($options['protected'] || $options['norename']) {
$folder = $oldfolder; $folder = $oldfolder;
} }
else if (strlen($parent)) { else if (strlen($parent)) {
@ -909,6 +914,13 @@ class kolab_driver extends calendar_driver
'name' => $this->rc->gettext('properties'), '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) // calendar name (default field)
$form['props']['fieldsets']['location'] = array( $form['props']['fieldsets']['location'] = array(
'name' => $this->rc->gettext('location'), '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 // prevent user from moving folder
$hidden_fields[] = array('name' => 'parent', 'value' => $path_imap); $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 $path = trim(get_input_value('_parent', RCUBE_INPUT_POST, true)); // UTF7-IMAP
$delimiter = $_SESSION['imap_delimiter']; $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) // sanity checks (from steps/settings/save_folder.inc)
if (!strlen($folder)) { else if (!strlen($folder)) {
$error = rcube_label('cannotbeempty'); $error = rcube_label('cannotbeempty');
} }
else if (strlen($folder) > 128) { else if (strlen($folder) > 128) {
@ -438,9 +445,7 @@ class kolab_addressbook extends rcube_plugin
} }
if (!$error) { if (!$error) {
// @TODO: $options if (!empty($options) && ($options['protected'] || $options['norename'])) {
$options = array();
if ($options['protected'] || $options['norename']) {
$folder = $oldfolder; $folder = $oldfolder;
} }
else if (strlen($path)) { else if (strlen($path)) {

View file

@ -144,8 +144,13 @@ class kolab_addressbook_ui
'name' => $this->rc->gettext('properties'), 'name' => $this->rc->gettext('properties'),
); );
$foldername = new html_inputfield(array('name' => '_name', 'id' => '_name', 'size' => 30)); if (!empty($options) && ($options['norename'] || $options['protected'])) {
$foldername = $foldername->show($name); $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( $form['props']['fieldsets']['location'] = array(
'name' => $this->rc->gettext('location'), '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 // prevent user from moving folder
$hidden_fields[] = array('name' => '_parent', 'value' => $path_imap); $hidden_fields[] = array('name' => '_parent', 'value' => $path_imap);
} }

View file

@ -348,8 +348,14 @@ class rcube_kolab
$delim = $ns[1]; $delim = $ns[1];
// get username // get username
$pos = strpos($folder, $delim); $pos = strpos($folder, $delim);
$prefix = '('.substr($folder, 0, $pos).') '; if ($pos) {
$folder = substr($folder, $pos+1); $prefix = '('.substr($folder, 0, $pos).') ';
$folder = substr($folder, $pos+1);
}
else {
$prefix = '('.$folder.')';
$folder = '';
}
$found = true; $found = true;
$folder_ns = 'other'; $folder_ns = 'other';
break; break;
@ -427,12 +433,12 @@ class rcube_kolab
// get all folders of specified type // get all folders of specified type
$folders = self::get_folders($type); $folders = self::get_folders($type);
$delim = $_SESSION['delimiter']; $delim = $_SESSION['imap_delimiter'];
$names = array(); $names = array();
$len = strlen($current); $len = strlen($current);
if ($len && ($rpos = strrpos($current, $delim))) { if ($len && ($rpos = strrpos($current, $delim))) {
$parent = substr($current, 0, $rpos-1); $parent = substr($current, 0, $rpos);
$p_len = strlen($parent); $p_len = strlen($parent);
} }
@ -457,6 +463,11 @@ class rcube_kolab
$names[$name] = rcube_charset_convert($name, 'UTF7-IMAP'); $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 // Sort folders list
asort($names, SORT_LOCALE_STRING); asort($names, SORT_LOCALE_STRING);