summaryrefslogtreecommitdiff
path: root/program/steps/settings/func.inc
diff options
context:
space:
mode:
authoralecpl <alec@alec.pl>2011-02-28 17:59:13 +0000
committeralecpl <alec@alec.pl>2011-02-28 17:59:13 +0000
commitbbce3edd61d05e0aa0bade7364315f7840549d9e (patch)
tree508f91a4f17288b0d71e3b653d13209889205f6e /program/steps/settings/func.inc
parent29c54229cfbc104930e7743cecc212f53aed8a15 (diff)
- Add simple ACL rights/namespace handling in folder manager (display folder's namespace, modify edit form fields according to MYRIGHTS)
Diffstat (limited to 'program/steps/settings/func.inc')
-rw-r--r--program/steps/settings/func.inc40
1 files changed, 40 insertions, 0 deletions
diff --git a/program/steps/settings/func.inc b/program/steps/settings/func.inc
index 271ee408a..6d3919faa 100644
--- a/program/steps/settings/func.inc
+++ b/program/steps/settings/func.inc
@@ -756,6 +756,46 @@ function rcmail_get_skins()
return $skins;
}
+
+function rcube_folder_options($mailbox)
+{
+ global $RCMAIL;
+
+ $acl = $RCMAIL->imap->get_capability('ACL');
+ $default_folders = (array) $RCMAIL->config->get('default_imap_folders');
+ $options = array();
+
+ $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['special'] = in_array($mailbox, $default_folders);
+ $options['protected'] = $options['special'] && $RCMAIL->config->get('protect_default_folders');
+
+ if (is_array($options['options'])) {
+ foreach ($options['options'] as $opt) {
+ $opt = strtolower($opt);
+ if ($opt == '\noselect' || $opt == '\nonexistent') {
+ $options['noselect'] = true;
+ }
+ }
+ }
+ else {
+ $options['noselect'] = true;
+ }
+
+ if (!empty($options['rights'])) {
+ $options['norename'] = !in_array('x', $options['rights']) &&
+ (!in_array('c', $options['rights']) || !in_array('d', $options['rights']));
+ if (!$options['noselect']) {
+ $options['noselect'] = !in_array('r', $options['rights']);
+ }
+ }
+
+ return $options;
+}
+
+
// register UI objects
$OUTPUT->add_handlers(array(
'prefsframe' => 'rcmail_preferences_frame',