- Improved detection of folder rename possibility and its handling

release-0.6
alecpl 13 years ago
parent dc0be3378a
commit 1cd36267a1

@ -3535,6 +3535,7 @@ class rcube_imap
$options['rights'] = $acl && !$options['is_root'] ? (array)$this->my_rights($mailbox) : array(); $options['rights'] = $acl && !$options['is_root'] ? (array)$this->my_rights($mailbox) : array();
$options['special'] = in_array($mailbox, $this->default_folders); $options['special'] = in_array($mailbox, $this->default_folders);
// Set 'noselect' and 'norename' flags
if (is_array($options['options'])) { if (is_array($options['options'])) {
foreach ($options['options'] as $opt) { foreach ($options['options'] as $opt) {
$opt = strtolower($opt); $opt = strtolower($opt);
@ -3548,12 +3549,14 @@ class rcube_imap
} }
if (!empty($options['rights'])) { if (!empty($options['rights'])) {
$options['norename'] = !in_array('x', $options['rights']) && $options['norename'] = !in_array('x', $options['rights']);
(!in_array('c', $options['rights']) || !in_array('d', $options['rights']));
if (!$options['noselect']) { if (!$options['noselect']) {
$options['noselect'] = !in_array('r', $options['rights']); $options['noselect'] = !in_array('r', $options['rights']);
} }
} }
else {
$options['norename'] = $options['is_root'] || $options['namespace'] != 'personal';
}
return $options; return $options;
} }

@ -106,28 +106,26 @@ function rcmail_folder_form($attrib)
), ),
); );
if (strlen($path) || !strlen($mbox)) { if (!empty($options) && ($options['norename'] || $options['protected'])) {
if (!empty($options) && ($options['norename'] || $options['namespace'] != 'personal')) { // prevent user from moving folder
// prevent user from moving folder $hidden_path = new html_hiddenfield(array('name' => '_parent', 'value' => $path));
$hidden_path = new html_hiddenfield(array('name' => '_parent', 'value' => $path)); $form['props']['fieldsets']['location']['content']['name']['value'] .= $hidden_path->show();
$form['props']['fieldsets']['location']['content']['name']['value'] .= $hidden_path->show(); }
} else {
else { $selected = isset($_POST['_parent']) ? $_POST['_parent'] : $path_id;
$selected = isset($_POST['_parent']) ? $_POST['_parent'] : $path_id; $select = rcmail_mailbox_select(array(
$select = rcmail_mailbox_select(array( 'name' => '_parent',
'name' => '_parent', 'noselection' => '---',
'noselection' => '---', 'realnames' => false,
'realnames' => false, 'maxlength' => 150,
'maxlength' => 150, 'unsubscribed' => true,
'unsubscribed' => true, 'exceptions' => array($mbox_imap),
'exceptions' => array($mbox_imap), ));
));
$form['props']['fieldsets']['location']['content']['path'] = array(
$form['props']['fieldsets']['location']['content']['path'] = array( 'label' => rcube_label('parentfolder'),
'label' => rcube_label('parentfolder'), 'value' => $select->show($selected),
'value' => $select->show($selected), );
);
}
} }
// Settings // Settings

Loading…
Cancel
Save