Display different icons when Trash folder is empty or full (#1485775)

pull/158/merge
Aleksander Machniak 11 years ago
parent 772bec6789
commit da5fa28d57

@ -1,6 +1,7 @@
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)

@ -6459,6 +6459,12 @@ function rcube_webmail()
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)
{

@ -25,6 +25,7 @@ if (empty($_REQUEST['_folderlist']) && empty($_REQUEST['_list'])) {
return;
}
$trash = $RCMAIL->config->get('trash_mbox');
$current = $RCMAIL->storage->get_folder();
$check_all = $RCMAIL->action != 'refresh' || (bool)$RCMAIL->config->get('check_all_folders');
@ -132,6 +133,11 @@ foreach ($a_mailboxes as $mbox_name) {
$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

@ -27,7 +27,6 @@ $mbox = rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_POST, true);
// send EXPUNGE command
if ($RCMAIL->action == 'expunge') {
$success = $RCMAIL->storage->expunge_folder($mbox);
// reload message list if current mailbox
@ -45,16 +44,16 @@ if ($RCMAIL->action == 'expunge') {
$RCMAIL->display_server_error();
}
}
// clear mailbox
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, '/') . '/';
else if ($RCMAIL->action == 'purge') {
$delimiter = $RCMAIL->storage->get_hierarchy_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);
@ -71,6 +70,11 @@ else if ($RCMAIL->action == 'purge')
$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 {

@ -23,27 +23,35 @@ $a_folders = $RCMAIL->storage->list_folders_subscribed('', '*', 'mail');
if (!empty($a_folders))
{
$current = $RCMAIL->storage->get_folder();
$inbox = ($current == 'INBOX');
$check_all = (bool)$RCMAIL->config->get('check_all_folders');
foreach ($a_folders as $mbox_row) {
$unseen_old = rcmail_get_unseen_count($mbox_row);
if (!$check_all && $unseen_old !== null && $mbox_row != $current)
$unseen = $unseen_old;
else
$unseen = $RCMAIL->storage->count($mbox_row, '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');
$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) {
$unseen_old = rcmail_get_unseen_count($mbox);
if (!$check_all && $unseen_old !== null && $mbox != $current) {
$unseen = $unseen_old;
}
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 == $current) {
$OUTPUT->command('set_unread_count', $mbox, $unseen, $inbox && $mbox_row == 'INBOX');
}
rcmail_set_unseen_count($mbox, $unseen);
// set trash folder state
if ($mbox === $trash) {
$OUTPUT->command('set_trash_count', $RCMAIL->storage->count($mbox, 'EXISTS'));
}
}
rcmail_set_unseen_count($mbox_row, $unseen);
}
}
$OUTPUT->send();

@ -90,12 +90,14 @@ if (empty($search_request) && empty($a_headers)) {
rcmail_send_unread_count($mbox_name, !empty($_REQUEST['_refresh']), $unseen);
// update message count display
$pages = ceil($count/$RCMAIL->storage->get_pagesize());
$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
@ -123,5 +125,10 @@ else {
$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();

@ -28,12 +28,13 @@ $threading = (bool) $RCMAIL->storage->get_threading();
$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);
@ -86,16 +87,15 @@ if ($search_request && $RCMAIL->storage->get_search_set()) {
$_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);
@ -114,7 +114,7 @@ else
$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();
@ -144,6 +144,14 @@ else
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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

@ -425,7 +425,12 @@
#mailboxlist li.trash a
{
background-position: 5px -91px;
background-position: 5px -180px;
}
#mailboxlist li.trash.empty a
{
background-position: 5px -90px;
}
#mailboxlist li a

Loading…
Cancel
Save