Backport changes from r5084 to r5090 to release branch
| | |
| | | /** |
| | | * ACL plugin script |
| | | * |
| | | * @version 0.5 |
| | | * @version 0.6 |
| | | * @author Aleksander Machniak <alec@alec.pl> |
| | | */ |
| | | |
| | |
| | | /** |
| | | * Folders Access Control Lists Management (RFC4314, RFC2086) |
| | | * |
| | | * @version 0.5 |
| | | * @version 0.6 |
| | | * @author Aleksander Machniak <alec@alec.pl> |
| | | * |
| | | * |
| | |
| | | */ |
| | | private function action_save() |
| | | { |
| | | $mbox = trim(get_input_value('_mbox', RCUBE_INPUT_GPC, true, 'UTF7-IMAP')); |
| | | $mbox = trim(get_input_value('_mbox', RCUBE_INPUT_GPC, true)); // UTF7-IMAP |
| | | $user = trim(get_input_value('_user', RCUBE_INPUT_GPC)); |
| | | $acl = trim(get_input_value('_acl', RCUBE_INPUT_GPC)); |
| | | $oldid = trim(get_input_value('_old', RCUBE_INPUT_GPC)); |
| | |
| | | */ |
| | | private function action_delete() |
| | | { |
| | | $mbox = trim(get_input_value('_mbox', RCUBE_INPUT_GPC, true, 'UTF7-IMAP')); |
| | | $mbox = trim(get_input_value('_mbox', RCUBE_INPUT_GPC, true)); //UTF7-IMAP |
| | | $user = trim(get_input_value('_user', RCUBE_INPUT_GPC)); |
| | | |
| | | $user = explode(',', $user); |
| | |
| | | return; |
| | | } |
| | | |
| | | $this->mbox = trim(get_input_value('_mbox', RCUBE_INPUT_GPC, true, 'UTF7-IMAP')); |
| | | $this->mbox = trim(get_input_value('_mbox', RCUBE_INPUT_GPC, true)); // UTF7-IMAP |
| | | $advanced = trim(get_input_value('_mode', RCUBE_INPUT_GPC)); |
| | | $advanced = $advanced == 'advanced' ? true : false; |
| | | |
| | |
| | | $out = ''; |
| | | |
| | | foreach ($arrFolders as $key => $folder) { |
| | | if (!empty($exceptions) && in_array($folder['id'], $exceptions)) { |
| | | if (empty($exceptions) || !in_array($folder['id'], $exceptions)) { |
| | | if (!$realnames && ($folder_class = rcmail_folder_classname($folder['id']))) |
| | | $foldername = rcube_label($folder_class); |
| | | else { |
| | | $foldername = $folder['name']; |
| | | |
| | | // shorten the folder name to a given length |
| | | if ($maxlength && $maxlength>1) |
| | | $foldername = abbreviate_string($foldername, $maxlength); |
| | | } |
| | | |
| | | $select->add(str_repeat(' ', $nestLevel*4) . $foldername, $folder['id']); |
| | | } |
| | | else if ($nestLevel) |
| | | continue; |
| | | } |
| | | |
| | | if (!$realnames && ($folder_class = rcmail_folder_classname($folder['id']))) |
| | | $foldername = rcube_label($folder_class); |
| | | else { |
| | | $foldername = $folder['name']; |
| | | |
| | | // shorten the folder name to a given length |
| | | if ($maxlength && $maxlength>1) |
| | | $foldername = abbreviate_string($foldername, $maxlength); |
| | | } |
| | | |
| | | $select->add(str_repeat(' ', $nestLevel*4) . $foldername, $folder['id']); |
| | | |
| | | if (!empty($folder['folders'])) |
| | | $out .= rcmail_render_folder_tree_select($folder['folders'], $mbox_name, $maxlength, |
| | |
| | | $a_folders = $this->conn->listMailboxes($root, $name, |
| | | NULL, array('SUBSCRIBED')); |
| | | |
| | | // remove non-existent folders |
| | | if (is_array($a_folders)) { |
| | | // unsubscribe non-existent folders, remove from the list |
| | | if (is_array($a_folders) && $name == '*') { |
| | | foreach ($a_folders as $idx => $folder) { |
| | | if ($this->conn->data['LIST'] && ($opts = $this->conn->data['LIST'][$folder]) |
| | | && in_array('\\NonExistent', $opts) |
| | | ) { |
| | | $this->conn->unsubscribe($folder); |
| | | unset($a_folders[$idx]); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | // retrieve list of folders from IMAP server using LSUB |
| | | else { |
| | | $a_folders = $this->conn->listSubscribed($root, $name); |
| | | |
| | | // unsubscribe non-existent folders, remove from the list |
| | | if (is_array($a_folders) && $name == '*') { |
| | | foreach ($a_folders as $idx => $folder) { |
| | | if ($this->conn->data['LIST'] && ($opts = $this->conn->data['LIST'][$folder]) |
| | | && in_array('\\Noselect', $opts) |
| | | ) { |
| | | // Some servers returns \Noselect for existing folders |
| | | if (!$this->mailbox_exists($folder)) { |
| | | $this->conn->unsubscribe($folder); |
| | | unset($a_folders[$idx]); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | this.set_photo_actions = function(id) |
| | | { |
| | | var n, buttons = this.buttons['upload-photo']; |
| | | for (n=0; n < buttons && buttons.length; n++) |
| | | for (n=0; buttons && n < buttons.length; n++) |
| | | $('#'+buttons[n].id).html(this.get_label(id == '-del-' ? 'addphoto' : 'replacephoto')); |
| | | |
| | | $('#ff_photo').val(id); |
| | |
| | | $display_folder = str_repeat(' ', $folder['level']) |
| | | . Q($protected ? rcmail_localize_foldername($folder['id']) : $folder['name']); |
| | | |
| | | if ($sub_key !== false) |
| | | unset($a_subscribed[$sub_key]); |
| | | |
| | | if ($folder['virtual']) { |
| | | $classes[] = 'virtual'; |
| | | } |
| | |
| | | } |
| | | } |
| | | } |
| | | // check if the folder is shared, then disable subscription option on it |
| | | if (!$disabled && $folder['virtual'] && !empty($namespace)) { |
| | | $tmp_ns = array_merge((array)$namespace['other'], (array)$namespace['shared']); |
| | | foreach ($tmp_ns as $item) { |
| | | if (strpos($folder['id'], $item[0]) === 0) { |
| | | $disabled = true; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | | $table->add_row(array('id' => 'rcmrow'.$idx, 'class' => join(' ', $classes), |
| | | 'foldername' => $folder['id'])); |
| | |
| | | |
| | | $a_js_folders['rcmrow'.$idx] = array($folder_utf8, |
| | | Q($display_folder), $protected || $folder['virtual']); |
| | | } |
| | | |
| | | // Unsubscribe from non-existing folders |
| | | foreach ($a_subscribed as $folder) { |
| | | $IMAP->unsubscribe($folder); |
| | | } |
| | | |
| | | $RCMAIL->plugins->exec_hook('folders_list', array('table' => $table)); |
| | |
| | | |
| | | body.iframe |
| | | { |
| | | margin-top: 6px; |
| | | margin-top: 0px; |
| | | } |
| | | |
| | | body.iframe div.boxcontent |
| | | { |
| | | margin-top: 20px; |
| | | z-index: 2; |
| | | } |
| | | |
| | | body.iframe div.boxtitle |
| | | { |
| | | z-index: 100; |
| | | } |
| | | |
| | | body.iframe #prefs-details |
| | | { |
| | | padding-top: 1px; |
| | | } |
| | | |
| | | #login-form form |
| | |
| | | div.messageheaderbox |
| | | { |
| | | margin-top: 0px; |
| | | } |
| | | |
| | | body.iframe div.messageheaderbox |
| | | { |
| | | margin-top: 6px; |
| | | } |
| | | |
| | | #abooktoolbar a.buttonPas |
| | |
| | | |
| | | #contact-details |
| | | { |
| | | margin-top: 12px; |
| | | margin-top: 20px; |
| | | } |
| | | |
| | | #contact-details form { |
| | |
| | | </head> |
| | | <body> |
| | | |
| | | <div id="header"><img src="/images/roundcube_logo.png" alt="<roundcube:object name='productname' />" /></div> |
| | | <div id="header"><roundcube:object name="logo" src="/images/roundcube_logo.png" id="logo" border="0" alt="Logo" /></div> |
| | | |
| | | <div style="width:400px; margin:60px auto;"> |
| | | $__page_content |
| | |
| | | </head> |
| | | <body> |
| | | |
| | | <div id="header"><img src="/images/roundcube_logo.png" alt="<roundcube:object name="productname" />" /></div> |
| | | <div id="header"><roundcube:object name="logo" src="/images/roundcube_logo.png" id="logo" border="0" alt="Logo" /></div> |
| | | |
| | | <div id="printmessageframe"> |
| | | <roundcube:object name="messageHeaders" class="headers-table" cellspacing="0" cellpadding="2" /> |