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


2 files modified
11 ■■■■ changed files
program/include/rcube_imap.php 7 ●●●● patch | view | raw | blame | history
program/steps/settings/edit_folder.inc 4 ●●● 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,8 +106,7 @@
        ),
    );
    if (strlen($path) || !strlen($mbox)) {
        if (!empty($options) && ($options['norename'] || $options['namespace'] != 'personal')) {
    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();
@@ -127,7 +126,6 @@
                'label' => rcube_label('parentfolder'),
                'value' => $select->show($selected),
            );
        }
    }
    // Settings