Hi,
I added first and last buttons to the main page, the single-email page and the address book.
If it's OK I'll commit this.
Robin
--- program/localization/en_US/labels.inc (revision 371) +++ program/localization/en_US/labels.inc (working copy) @@ -98,7 +98,9 @@ $labels['deletemessage'] = 'Move message to trash'; $labels['printmessage'] = 'Print this message'; $labels['previousmessages'] = 'Show previous set of messages'; +$labels['firstmessages'] = 'Show first set of messages'; $labels['nextmessages'] = 'Show next set of messages'; +$labels['lastmessages'] = 'Show last set of messages'; $labels['backtolist'] = 'Back to message list'; $labels['viewsource'] = 'Show source';
@@ -171,7 +173,9 @@ $labels['export'] = 'Export';
$labels['previouspage'] = 'Show previous set'; +$labels['firstpage'] = 'Show first set'; $labels['nextpage'] = 'Show next set'; +$labels['lastpage'] = 'Show last set';
// LDAP search Index: program/js/app.js =================================================================== --- program/js/app.js (revision 371) +++ program/js/app.js (working copy) @@ -141,9 +141,15 @@ { this.enable_command('show', 'reply', 'reply-all', 'forward', 'moveto', 'delete', 'viewsource', 'print', 'load-attachment', true); if (this.env.next_uid)
{
this.enable_command('nextmessage', true);
this.enable_command('lastmessage', true);
}
if (this.env.prev_uid)
{
this.enable_command('previousmessage', true);
this.enable_command('firstmessage', true);
}
}
if (this.env.action=='show' && this.env.blockedobjects)
@@ -478,10 +484,18 @@ this.list_page('next'); break;
case 'lastpage':
this.list_page('last');
break;
case 'previouspage':
this.list_page('prev');
break;
case 'firstpage':
this.list_page('first');
break;
case 'expunge':
if (this.env.messagecount)
this.expunge_mailbox(this.env.mailbox);
@@ -656,10 +670,20 @@ this.show_message(this.env.next_uid); break;
case 'lastmessage':
if (this.env.last_uid)
this.show_message(this.env.last_uid);
break;
case 'previousmessage':
if (this.env.prev_uid)
this.show_message(this.env.prev_uid);
break;
case 'firstmessage':
if (this.env.first_uid)
this.show_message(this.env.first_uid);
break;
case 'checkmail':
this.check_for_recent();
@@ -1095,8 +1119,12 @@ { if (page=='next') page = this.env.current_page+1;
if (page=='last')
page = this.env.pagecount;
if (page=='prev' && this.env.current_page>1) page = this.env.current_page-1;
if (page=='first' && this.env.current_page>1)
page = 1;
if (page > 0 && page <= this.env.pagecount) {
@@ -2634,7 +2662,9 @@ this.set_page_buttons = function() { this.enable_command('nextpage', (this.env.pagecount > this.env.current_page));
--- program/steps/mail/show.inc (revision 371) +++ program/steps/mail/show.inc (working copy) @@ -60,7 +60,7 @@ $javascript .= sprintf("%s.set_env('safemode', '%b');", $JS_OBJECT_NAME, $_GET['_safe']);
$next = $prev = -1;
@@ -69,21 +69,29 @@
$MESSAGE['index'] = array_search((string)$MESSAGE['UID'], $a_msg_index, TRUE);
$prev = isset($a_msg_index[$MESSAGE['index']-1]) ? $a_msg_index[$MESSAGE['index']-1] : -1 ;
$first = count($a_msg_index)>0 ? $a_msg_index[0] : -1; $next = isset($a_msg_index[$MESSAGE['index']+1]) ? $a_msg_index[$MESSAGE['index']+1] : -1 ;
$last = count($a_msg_index)>0 ? $a_msg_index[count($a_msg_index)-1] : -1; } else { // this assumes that we are sorted by date_DESC $seq = $IMAP->get_id($MESSAGE['UID']); $prev = $IMAP->get_uid($seq + 1);
$first = $IMAP->get_uid($IMAP->messagecount()); $next = $IMAP->get_uid($seq - 1);
$last = $IMAP->get_uid(1); $MESSAGE['index'] = $IMAP->messagecount() - $seq; }
if ($prev > 0) $javascript .= sprintf("\n%s.set_env('prev_uid', '%s');", $JS_OBJECT_NAME, $prev);
if ($first >0)
$javascript .= sprintf("\n%s.set_env('first_uid', '%s');", $JS_OBJECT_NAME, $first); if ($next > 0) $javascript .= sprintf("\n%s.set_env('next_uid', '%s');", $JS_OBJECT_NAME, $next);
if ($last >0)
$javascript .= sprintf("\n%s.set_env('last_uid', '%s');", $JS_OBJECT_NAME, $last);
$OUTPUT->add_script($javascript); }
@@ -173,4 +181,4 @@ parse_template('printmessage'); else parse_template('message'); -?> \ No newline at end of file +?> Index: skins/default/templates/mail.html =================================================================== --- skins/default/templates/mail.html (revision 371) +++ skins/default/templates/mail.html (working copy) @@ -25,9 +25,11 @@
</div>
<div id="messagecountbar"> +<roundcube:button command="firstpage" imageSel="/images/buttons/first_sel.png" imageAct="/images/buttons/first_act.png" imagePas="/images/buttons/first_pas.png" width="11" height="11" title="firstmessages" /> <roundcube:button command="previouspage" imageSel="/images/buttons/previous_sel.png" imageAct="/images/buttons/previous_act.png" imagePas="/images/buttons/previous_pas.png" width="11" height="11" title="previousmessages" /> <roundcube:object name="messageCountDisplay" /> <roundcube:button command="nextpage" imageSel="/images/buttons/next_sel.png" imageAct="/images/buttons/next_act.png" imagePas="/images/buttons/next_pas.png" width="11" height="11" title="nextmessages" /> +<roundcube:button command="lastpage" imageSel="/images/buttons/last_sel.png" imageAct="/images/buttons/last_act.png" imagePas="/images/buttons/last_pas.png" width="11" height="11" title="lastmessages" /> </div>
<div id="mailboxlist-header"><roundcube:label name="mailboxlist" /></div> Index: skins/default/templates/message.html =================================================================== --- skins/default/templates/message.html (revision 371) +++ skins/default/templates/message.html (working copy) @@ -11,9 +11,11 @@ <roundcube:include file="/includes/header.html" />
<div id="messagecountbar"> +<roundcube:button command="firstmessage" imageSel="/images/buttons/first_sel.png" imageAct="/images/buttons/first_act.png" imagePas="/images/buttons/first_pas.png" width="11" height="11" title="firstmessages" /> <roundcube:button command="previousmessage" imageSel="/images/buttons/previous_sel.png" imageAct="/images/buttons/previous_act.png" imagePas="/images/buttons/previous_pas.png" width="11" height="11" title="previousmessages" /> <roundcube:object name="messageCountDisplay" /> <roundcube:button command="nextmessage" imageSel="/images/buttons/next_sel.png" imageAct="/images/buttons/next_act.png" imagePas="/images/buttons/next_pas.png" width="11" height="11" title="nextmessages" /> +<roundcube:button command="lastmessage" imageSel="/images/buttons/last_sel.png" imageAct="/images/buttons/last_act.png" imagePas="/images/buttons/last_pas.png" width="11" height="11" title="lastmessages" /> </div>
<div id="messagetoolbar"> Index: skins/default/templates/addressbook.html =================================================================== --- skins/default/templates/addressbook.html (revision 371) +++ skins/default/templates/addressbook.html (working copy) @@ -20,9 +20,11 @@ </div>
<div id="abookcountbar"> +<roundcube:button command="firstpage" imageSel="/images/buttons/first_sel.png" imageAct="/images/buttons/first_act.png" imagePas="/images/buttons/first_pas.png" width="11" height="11" title="firstpage" /> <roundcube:button command="previouspage" imageSel="/images/buttons/previous_sel.png" imageAct="/images/buttons/previous_act.png" imagePas="/images/buttons/previous_pas.png" width="11" height="11" title="previouspage" /> <roundcube:object name="recordsCountDisplay" /> <roundcube:button command="nextpage" imageSel="/images/buttons/next_sel.png" imageAct="/images/buttons/next_act.png" imagePas="/images/buttons/next_pas.png" width="11" height="11" title="nextpage" /> +<roundcube:button command="lastpage" imageSel="/images/buttons/last_sel.png" imageAct="/images/buttons/last_act.png" imagePas="/images/buttons/last_pas.png" width="11" height="11" title="lastpage" /> </div>
<div id="addresslist">