From 1cd36267a19a2b0accda66827dbdc05ec5ec77be Mon Sep 17 00:00:00 2001 From: alecpl Date: Mon, 1 Aug 2011 07:58:30 +0000 Subject: - Improved detection of folder rename possibility and its handling --- program/include/rcube_imap.php | 7 ++++-- program/steps/settings/edit_folder.inc | 42 ++++++++++++++++------------------ 2 files changed, 25 insertions(+), 24 deletions(-) (limited to 'program') diff --git a/program/include/rcube_imap.php b/program/include/rcube_imap.php index f809288eb..3ba058988 100644 --- a/program/include/rcube_imap.php +++ b/program/include/rcube_imap.php @@ -3535,6 +3535,7 @@ class rcube_imap $options['rights'] = $acl && !$options['is_root'] ? (array)$this->my_rights($mailbox) : array(); $options['special'] = in_array($mailbox, $this->default_folders); + // Set 'noselect' and 'norename' flags if (is_array($options['options'])) { foreach ($options['options'] as $opt) { $opt = strtolower($opt); @@ -3548,12 +3549,14 @@ class rcube_imap } if (!empty($options['rights'])) { - $options['norename'] = !in_array('x', $options['rights']) && - (!in_array('c', $options['rights']) || !in_array('d', $options['rights'])); + $options['norename'] = !in_array('x', $options['rights']); if (!$options['noselect']) { $options['noselect'] = !in_array('r', $options['rights']); } } + else { + $options['norename'] = $options['is_root'] || $options['namespace'] != 'personal'; + } return $options; } diff --git a/program/steps/settings/edit_folder.inc b/program/steps/settings/edit_folder.inc index c7f61fe87..710c3ff08 100644 --- a/program/steps/settings/edit_folder.inc +++ b/program/steps/settings/edit_folder.inc @@ -106,28 +106,26 @@ function rcmail_folder_form($attrib) ), ); - if (strlen($path) || !strlen($mbox)) { - if (!empty($options) && ($options['norename'] || $options['namespace'] != 'personal')) { - // prevent user from moving folder - $hidden_path = new html_hiddenfield(array('name' => '_parent', 'value' => $path)); - $form['props']['fieldsets']['location']['content']['name']['value'] .= $hidden_path->show(); - } - else { - $selected = isset($_POST['_parent']) ? $_POST['_parent'] : $path_id; - $select = rcmail_mailbox_select(array( - 'name' => '_parent', - 'noselection' => '---', - 'realnames' => false, - 'maxlength' => 150, - 'unsubscribed' => true, - 'exceptions' => array($mbox_imap), - )); - - $form['props']['fieldsets']['location']['content']['path'] = array( - 'label' => rcube_label('parentfolder'), - 'value' => $select->show($selected), - ); - } + if (!empty($options) && ($options['norename'] || $options['protected'])) { + // prevent user from moving folder + $hidden_path = new html_hiddenfield(array('name' => '_parent', 'value' => $path)); + $form['props']['fieldsets']['location']['content']['name']['value'] .= $hidden_path->show(); + } + else { + $selected = isset($_POST['_parent']) ? $_POST['_parent'] : $path_id; + $select = rcmail_mailbox_select(array( + 'name' => '_parent', + 'noselection' => '---', + 'realnames' => false, + 'maxlength' => 150, + 'unsubscribed' => true, + 'exceptions' => array($mbox_imap), + )); + + $form['props']['fieldsets']['location']['content']['path'] = array( + 'label' => rcube_label('parentfolder'), + 'value' => $select->show($selected), + ); } // Settings -- cgit v1.2.3