summaryrefslogtreecommitdiff
path: root/program/steps/settings/folders.inc
diff options
context:
space:
mode:
authoralecpl <alec@alec.pl>2011-06-17 08:03:07 +0000
committeralecpl <alec@alec.pl>2011-06-17 08:03:07 +0000
commit67975b99efc14e98181f659568ce9306d0a91cd1 (patch)
tree2cb1abceda181ef3eb078b576a1905da478498c7 /program/steps/settings/folders.inc
parent3ddca3b945ecf36d799dfa9c772437a7dad62c5d (diff)
- Improved namespace roots handling in folder manager
Diffstat (limited to 'program/steps/settings/folders.inc')
-rw-r--r--program/steps/settings/folders.inc17
1 files changed, 16 insertions, 1 deletions
diff --git a/program/steps/settings/folders.inc b/program/steps/settings/folders.inc
index c84f616bb..ed1fb79bf 100644
--- a/program/steps/settings/folders.inc
+++ b/program/steps/settings/folders.inc
@@ -179,7 +179,7 @@ function rcube_subscription_form($attrib)
list($form_start, $form_end) = get_form_tags($attrib, 'folders');
unset($attrib['form']);
-
+
if (!$attrib['id'])
$attrib['id'] = 'rcmSubscriptionlist';
@@ -197,6 +197,7 @@ function rcube_subscription_form($attrib)
$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();
@@ -253,6 +254,7 @@ function rcube_subscription_form($attrib)
$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']);
@@ -271,6 +273,19 @@ function rcube_subscription_form($attrib)
$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']));