- Improved namespace roots handling in folder manager
| | |
| | | CHANGELOG Roundcube Webmail |
| | | =========================== |
| | | |
| | | - Improved namespace roots handling in folder manager |
| | | - Added searching in all addressbook sources |
| | | - Added addressbook source selection in contacts import |
| | | - Implement LDAPv3 Virtual List View (VLV) for paged results listing |
| | |
| | | ); |
| | | |
| | | // Settings: threading |
| | | if ($threading_supported && !$options['noselect']) { |
| | | if ($threading_supported && !$options['noselect'] && !$options['is_root']) { |
| | | $select = new html_select(array('name' => '_viewmode', 'id' => '_listmode')); |
| | | $select->add(rcube_label('list'), 0); |
| | | $select->add(rcube_label('threads'), 1); |
| | |
| | | 'content' => array() |
| | | ); |
| | | |
| | | if (!$options['noselect']) { |
| | | if (!$options['noselect'] && !$options['is_root']) { |
| | | $msgcount = $RCMAIL->imap->messagecount($mbox_imap, 'ALL', true, false); |
| | | |
| | | // Size |
| | |
| | | |
| | | list($form_start, $form_end) = get_form_tags($attrib, 'folders'); |
| | | unset($attrib['form']); |
| | | |
| | | |
| | | if (!$attrib['id']) |
| | | $attrib['id'] = 'rcmSubscriptionlist'; |
| | | |
| | |
| | | $a_unsubscribed = $IMAP->list_unsubscribed(); |
| | | $a_subscribed = $IMAP->list_mailboxes(); |
| | | $delimiter = $IMAP->get_hierarchy_delimiter(); |
| | | $namespace = $IMAP->get_namespace(); |
| | | $a_js_folders = array(); |
| | | $seen = array(); |
| | | $list_folders = array(); |
| | |
| | | $idx = $i + 1; |
| | | $subscribed = in_array($folder['id'], $a_subscribed); |
| | | $protected = ($CONFIG['protect_default_folders'] == true && in_array($folder['id'], $CONFIG['default_imap_folders'])); |
| | | $noselect = false; |
| | | $classes = array($i%2 ? 'even' : 'odd'); |
| | | |
| | | $folder_js = Q($folder['id']); |
| | |
| | | |
| | | $disabled = (($protected && $subscribed) || $noselect); |
| | | |
| | | // check if the folder is a namespace prefix, then disable subscription option on it |
| | | if (!$disabled && $folder['virtual'] && $folder['level'] == 0 && !empty($namespace)) { |
| | | $fname = $folder['id'] . $delimiter; |
| | | foreach ($namespace as $ns) { |
| | | foreach ($ns as $item) { |
| | | if ($item[0] === $fname) { |
| | | $disabled = true; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | $table->add_row(array('id' => 'rcmrow'.$idx, 'class' => join(' ', $classes), |
| | | 'foldername' => $folder['id'])); |
| | | |
| | |
| | | |
| | | $acl = $RCMAIL->imap->get_capability('ACL'); |
| | | $default_folders = (array) $RCMAIL->config->get('default_imap_folders'); |
| | | $delimiter = $RCMAIL->imap->get_hierarchy_delimiter(); |
| | | $namespace = $RCMAIL->imap->get_namespace(); |
| | | $options = array(); |
| | | |
| | | // check if the folder is a namespace prefix |
| | | if (!empty($namespace)) { |
| | | $mbox = $mailbox . $delimiter; |
| | | foreach ($namespace as $ns) { |
| | | foreach ($ns as $item) { |
| | | if ($item[0] === $mbox) { |
| | | $options['is_root'] = true; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | $options['name'] = $mailbox; |
| | | $options['options'] = $RCMAIL->imap->mailbox_options($mailbox, true); |
| | | $options['namespace'] = $RCMAIL->imap->mailbox_namespace($mailbox); |
| | | $options['rights'] = $acl ? (array)$RCMAIL->imap->my_rights($mailbox) : array(); |
| | | $options['rights'] = $acl && !$options['is_root'] ? (array)$RCMAIL->imap->my_rights($mailbox) : array(); |
| | | $options['special'] = in_array($mailbox, $default_folders); |
| | | $options['protected'] = $options['special'] && $RCMAIL->config->get('protect_default_folders'); |
| | | $options['protected'] = $options['is_root'] || ($options['special'] && $RCMAIL->config->get('protect_default_folders')); |
| | | |
| | | if (is_array($options['options'])) { |
| | | foreach ($options['options'] as $opt) { |
| | |
| | | $folder['name'] = $name_imap; |
| | | $folder['oldname'] = $old_imap; |
| | | $folder['class'] = ''; |
| | | $folder['options'] = $options; |
| | | $folder['settings'] = array( |
| | | // List view mode: 0-list, 1-threads |
| | | 'view_mode' => (int) get_input_value('_viewmode', RCUBE_INPUT_POST), |