#1484805: fix next/last page buttons when new message is added to the list + remove last message

release-0.6
alecpl 18 years ago
parent 9281884ff0
commit 095d05ef00

@ -3559,6 +3559,14 @@ function rcube_webmail()
row.appendChild(col);
this.message_list.insert_row(row, attop);
// remove 'old' row
if (attop && this.env.pagesize && this.message_list.rowcount > this.env.pagesize)
{
var uid = this.message_list.get_last_row();
this.message_list.remove_row(uid);
this.message_list.clear_selection(uid);
}
};

@ -290,7 +290,7 @@ click_row: function(e, id)
/**
* get next and previous rows that are not hidden
* get next/previous/last rows that are not hidden
*/
get_next_row: function()
{
@ -318,8 +318,24 @@ get_prev_row: function()
return new_row;
},
get_last_row: function()
{
if (this.rowcount)
{
var rows = this.list.tBodies[0].rows;
for(var i=rows.length-1; i>=0; i--)
if(rows[i].id && String(rows[i].id).match(/rcmrow([a-z0-9\-_=]+)/i) && this.rows[RegExp.$1] != null)
return RegExp.$1;
}
return null;
},
// selects or unselects the proper row depending on the modifier key pressed
/**
* selects or unselects the proper row depending on the modifier key pressed
*/
select_row: function(id, mod_key, with_mouse)
{
var select_before = this.selection.join(',');
@ -482,21 +498,36 @@ select_all: function(filter)
/**
* Unselect all selected rows
* Unselect selected row(s)
*/
clear_selection: function()
clear_selection: function(id)
{
var num_select = this.selection.length;
for (var n=0; n<this.selection.length; n++)
if (this.rows[this.selection[n]])
// one row
if (id)
{
this.set_classname(this.rows[this.selection[n]].obj, 'selected', false);
this.set_classname(this.rows[this.selection[n]].obj, 'unfocused', false);
for (var n=0; n<this.selection.length; n++)
if (this.selection[n] == id)
{
this.selection.splice(n,1);
break;
}
}
// all rows
else
{
for (var n=0; n<this.selection.length; n++)
if (this.rows[this.selection[n]])
{
this.set_classname(this.rows[this.selection[n]].obj, 'selected', false);
this.set_classname(this.rows[this.selection[n]].obj, 'unfocused', false);
}
this.selection = new Array();
}
this.selection = new Array();
if (num_select)
if (num_select && !this.selection.length)
this.trigger_event('select');
},

@ -35,6 +35,8 @@ foreach ($a_mailboxes as $mbox_name)
$unread_count = $IMAP->messagecount(NULL, 'UNSEEN', TRUE);
$OUTPUT->set_env('messagecount', $IMAP->messagecount());
$OUTPUT->set_env('pagesize', $IMAP->page_size);
$OUTPUT->set_env('pagecount', ceil($IMAP->messagecount()/$IMAP->page_size));
$OUTPUT->command('set_unread_count', $mbox_name, $unread_count, ($mbox_name == 'INBOX'));
$OUTPUT->command('set_rowcount', rcmail_get_messagecount_text());
$OUTPUT->command('set_quota', rcmail_quota_content($IMAP->get_quota()));

Loading…
Cancel
Save