Aleksander Machniak
2014-03-22 5fefe78f750030f35d3c47cf9f379c431037a0e9
Make sure parent folder selector always contains parent folder
of current folder, even if it does not exist
2 files modified
26 ■■■■ changed files
program/include/rcmail.php 25 ●●●● patch | view | raw | blame | history
program/steps/settings/edit_folder.inc 1 ●●●● patch | view | raw | blame | history
program/include/rcmail.php
@@ -1360,12 +1360,31 @@
        $delimiter = $storage->get_hierarchy_delimiter();
        foreach ($list as $folder) {
            if (empty($p['exceptions']) || !in_array($folder, $p['exceptions'])) {
                $this->build_folder_tree($a_mailboxes, $folder, $delimiter);
        if (!empty($p['exceptions'])) {
            $list = array_diff($list, (array) $p['exceptions']);
        }
        if (!empty($p['additional'])) {
            foreach ($p['additional'] as $add_folder) {
                $add_items = explode($delimiter, $add_folder);
                $folder    = '';
                while (count($add_items)) {
                    $folder .= array_shift($add_items);
                    // @TODO: sorting
                    if (!in_array($folder, $list)) {
                        $list[] = $folder;
                    }
                    $folder .= $delimiter;
                }
            }
        }
        foreach ($list as $folder) {
            $this->build_folder_tree($a_mailboxes, $folder, $delimiter);
        }
        $select = new html_select($p);
        if ($p['noselection']) {
program/steps/settings/edit_folder.inc
@@ -139,6 +139,7 @@
            'unsubscribed' => true,
            'skip_noinferiors' => true,
            'exceptions'  => $exceptions,
            'additional'  => strlen($selected) ? array($selected) : null,
        ));
        $form['props']['fieldsets']['location']['content']['path'] = array(