alecpl
2011-08-01 1cd36267a19a2b0accda66827dbdc05ec5ec77be
- Improved detection of folder rename possibility and its handling


2 files modified
47 ■■■■ changed files
program/include/rcube_imap.php 7 ●●●● patch | view | raw | blame | history
program/steps/settings/edit_folder.inc 40 ●●●● patch | view | raw | blame | history
program/include/rcube_imap.php
@@ -3535,6 +3535,7 @@
        $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 @@
        }
        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;
    }
program/steps/settings/edit_folder.inc
@@ -106,28 +106,26 @@
        ),
    );
    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),
            ));
    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),
            );
        }
        $form['props']['fieldsets']['location']['content']['path'] = array(
            'label' => rcube_label('parentfolder'),
            'value' => $select->show($selected),
        );
    }
    // Settings