Display different icons when Trash folder is empty or full (#1485775)
| | |
| | | CHANGELOG Roundcube Webmail |
| | | =========================== |
| | | |
| | | - Display different icons when Trash folder is empty or full (#1485775) |
| | | - Remember last position of more headers switch (#1488323) |
| | | - Fix so message flags modified by another client are applied on the list on refresh (#1485186) |
| | | - Fix broken text/* attachments when forwarding/editing a message (#1489426) |
| | |
| | | this.env.quota_content = content; |
| | | }; |
| | | |
| | | // update trash folder state |
| | | this.set_trash_count = function(count) |
| | | { |
| | | this[(count ? 'un' : '') + 'mark_folder'](this.env.trash_mailbox, 'empty', '', true); |
| | | }; |
| | | |
| | | // update the mailboxlist |
| | | this.set_unread_count = function(mbox, count, set_title, mark) |
| | | { |
| | |
| | | return; |
| | | } |
| | | |
| | | $trash = $RCMAIL->config->get('trash_mbox'); |
| | | $current = $RCMAIL->storage->get_folder(); |
| | | $check_all = $RCMAIL->action != 'refresh' || (bool)$RCMAIL->config->get('check_all_folders'); |
| | | |
| | |
| | | $RCMAIL->output->set_env('recent_flags', $flags); |
| | | } |
| | | } |
| | | |
| | | // set trash folder state |
| | | if ($mbox_name === $trash) { |
| | | $OUTPUT->command('set_trash_count', $RCMAIL->storage->count($mbox_name, 'EXISTS')); |
| | | } |
| | | } |
| | | |
| | | // trigger refresh hook |
| | |
| | | |
| | | // send EXPUNGE command |
| | | if ($RCMAIL->action == 'expunge') { |
| | | |
| | | $success = $RCMAIL->storage->expunge_folder($mbox); |
| | | |
| | | // reload message list if current mailbox |
| | |
| | | $RCMAIL->display_server_error(); |
| | | } |
| | | } |
| | | |
| | | // clear mailbox |
| | | else if ($RCMAIL->action == 'purge') |
| | | { |
| | | else if ($RCMAIL->action == 'purge') { |
| | | $delimiter = $RCMAIL->storage->get_hierarchy_delimiter(); |
| | | $trash_regexp = '/^' . preg_quote($CONFIG['trash_mbox'] . $delimiter, '/') . '/'; |
| | | $junk_regexp = '/^' . preg_quote($CONFIG['junk_mbox'] . $delimiter, '/') . '/'; |
| | | $trash_mbox = $RCMAIL->config->get('trash_mbox'); |
| | | $junk_mbox = $RCMAIL->config->get('junk_mbox'); |
| | | $trash_regexp = '/^' . preg_quote($trash_mbox . $delimiter, '/') . '/'; |
| | | $junk_regexp = '/^' . preg_quote($junk_mbox . $delimiter, '/') . '/'; |
| | | |
| | | // we should only be purging trash and junk (or their subfolders) |
| | | if ($mbox == $CONFIG['trash_mbox'] || $mbox == $CONFIG['junk_mbox'] |
| | | if ($mbox == $trash_mbox || $mbox == $junk_mbox |
| | | || preg_match($trash_regexp, $mbox) || preg_match($junk_regexp, $mbox) |
| | | ) { |
| | | $success = $RCMAIL->storage->clear_folder($mbox); |
| | |
| | | $OUTPUT->command('set_unread_count', $mbox, 0); |
| | | $OUTPUT->command('set_quota', $RCMAIL->quota_content()); |
| | | rcmail_set_unseen_count($mbox, 0); |
| | | |
| | | // set trash folder state |
| | | if ($mbox === $trash_mbox) { |
| | | $OUTPUT->command('set_trash_count', 0); |
| | | } |
| | | } |
| | | } |
| | | else { |
| | |
| | | { |
| | | $current = $RCMAIL->storage->get_folder(); |
| | | $inbox = ($current == 'INBOX'); |
| | | $trash = $RCMAIL->config->get('trash_mbox'); |
| | | $check_all = (bool)$RCMAIL->config->get('check_all_folders'); |
| | | |
| | | foreach ($a_folders as $mbox_row) { |
| | | $unseen_old = rcmail_get_unseen_count($mbox_row); |
| | | foreach ($a_folders as $mbox) { |
| | | $unseen_old = rcmail_get_unseen_count($mbox); |
| | | |
| | | if (!$check_all && $unseen_old !== null && $mbox_row != $current) |
| | | if (!$check_all && $unseen_old !== null && $mbox != $current) { |
| | | $unseen = $unseen_old; |
| | | else |
| | | $unseen = $RCMAIL->storage->count($mbox_row, 'UNSEEN', $unseen_old === null); |
| | | } |
| | | else { |
| | | $unseen = $RCMAIL->storage->count($mbox, 'UNSEEN', $unseen_old === null); |
| | | } |
| | | |
| | | // call it always for current folder, so it can update counter |
| | | // after possible message status change when opening a message |
| | | // not in preview frame |
| | | if ($unseen || $unseen_old === null || $mbox_row == $current) { |
| | | $OUTPUT->command('set_unread_count', $mbox_row, $unseen, $inbox && $mbox_row == 'INBOX'); |
| | | if ($unseen || $unseen_old === null || $mbox == $current) { |
| | | $OUTPUT->command('set_unread_count', $mbox, $unseen, $inbox && $mbox_row == 'INBOX'); |
| | | } |
| | | |
| | | rcmail_set_unseen_count($mbox_row, $unseen); |
| | | rcmail_set_unseen_count($mbox, $unseen); |
| | | |
| | | // set trash folder state |
| | | if ($mbox === $trash) { |
| | | $OUTPUT->command('set_trash_count', $RCMAIL->storage->count($mbox, 'EXISTS')); |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | // update message count display |
| | | $pages = ceil($count/$RCMAIL->storage->get_pagesize()); |
| | | $exists = $RCMAIL->storage->count($mbox_name, 'EXISTS'); |
| | | |
| | | $OUTPUT->set_env('messagecount', $count); |
| | | $OUTPUT->set_env('pagecount', $pages); |
| | | $OUTPUT->set_env('threading', $threading); |
| | | $OUTPUT->set_env('current_page', $count ? $RCMAIL->storage->get_page() : 1); |
| | | $OUTPUT->set_env('exists', $RCMAIL->storage->count($mbox_name, 'EXISTS')); |
| | | $OUTPUT->set_env('exists', $exists); |
| | | $OUTPUT->command('set_rowcount', rcmail_get_messagecount_text($count), $mbox_name); |
| | | |
| | | // add message rows |
| | |
| | | $OUTPUT->show_message('nomessagesfound', 'notice'); |
| | | } |
| | | |
| | | // set trash folder state |
| | | if ($mbox_name === $RCMAIL->config->get('trash_mbox')) { |
| | | $OUTPUT->command('set_trash_count', $exists); |
| | | } |
| | | |
| | | // send response |
| | | $OUTPUT->send(); |
| | |
| | | $old_count = $RCMAIL->storage->count(NULL, $threading ? 'THREADS' : 'ALL'); |
| | | $old_pages = ceil($old_count / $RCMAIL->storage->get_pagesize()); |
| | | |
| | | $trash = $RCMAIL->config->get('trash_mbox'); |
| | | |
| | | // move messages |
| | | if ($RCMAIL->action == 'move' && !empty($_POST['_uid']) && strlen($_POST['_target_mbox'])) { |
| | | $count = sizeof(explode(',', ($uids = rcube_utils::get_input_value('_uid', rcube_utils::INPUT_POST)))); |
| | | $target = rcube_utils::get_input_value('_target_mbox', rcube_utils::INPUT_POST, true); |
| | | $mbox = rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_POST, true); |
| | | $trash = $RCMAIL->config->get('trash_mbox'); |
| | | |
| | | $moved = $RCMAIL->storage->move_message($uids, $target, $mbox); |
| | | |
| | |
| | | $_SESSION['search'] = $RCMAIL->storage->refresh_search(); |
| | | } |
| | | |
| | | if ($_POST['_from'] == 'show') |
| | | { |
| | | if ($_POST['_from'] == 'show') { |
| | | if ($next = rcube_utils::get_input_value('_next_uid', rcube_utils::INPUT_GPC)) |
| | | $OUTPUT->command('show_message', $next); |
| | | else |
| | | $OUTPUT->command('command', 'list'); |
| | | } |
| | | else |
| | | { |
| | | else { |
| | | $msg_count = $RCMAIL->storage->count(NULL, $threading ? 'THREADS' : 'ALL'); |
| | | $exists = $RCMAIL->storage->count($mbox, 'EXISTS', true); |
| | | $page_size = $RCMAIL->storage->get_pagesize(); |
| | | $page = $RCMAIL->storage->get_page(); |
| | | $pages = ceil($msg_count / $page_size); |
| | |
| | | $OUTPUT->set_env('messagecount', $msg_count); |
| | | $OUTPUT->set_env('current_page', $page); |
| | | $OUTPUT->set_env('pagecount', $pages); |
| | | $OUTPUT->set_env('exists', $RCMAIL->storage->count($mbox, 'EXISTS', true)); |
| | | $OUTPUT->set_env('exists', $exists); |
| | | |
| | | // update mailboxlist |
| | | $mbox = $RCMAIL->storage->get_folder(); |
| | |
| | | |
| | | rcmail_js_message_list($a_headers, false); |
| | | } |
| | | |
| | | // set trash folder state |
| | | if ($mbox === $trash) { |
| | | $OUTPUT->command('set_trash_count', $exists); |
| | | } |
| | | else if ($target !== null && $target === $trash) { |
| | | $OUTPUT->command('set_trash_count', $RCMAIL->storage->count($trash, 'EXISTS')); |
| | | } |
| | | } |
| | | |
| | | // send response |
| | |
| | | |
| | | #mailboxlist li.trash a |
| | | { |
| | | background-position: 5px -91px; |
| | | background-position: 5px -180px; |
| | | } |
| | | |
| | | #mailboxlist li.trash.empty a |
| | | { |
| | | background-position: 5px -90px; |
| | | } |
| | | |
| | | #mailboxlist li a |