diff --git a/xtrn/ecreader/ecReader.js b/xtrn/ecreader/ecReader.js index 061265ad9acd5b85e795434d67746996ed4d0f56..6d32b85b4c8a15cee438ac782706711a9f4bbac0 100644 --- a/xtrn/ecreader/ecReader.js +++ b/xtrn/ecreader/ecReader.js @@ -14,6 +14,8 @@ load("tree.js"); var showMail = true; // Allow access to the private 'mail' sub-board var threaded = true; // False to default to flat view +var setPointers = true; // False to leave scan pointers unaffected by reading +var oldestFirst = false;// False to list messages in descending date order var lbg = BG_CYAN; // Lightbar background var lfg = WHITE; // Foreground colour of highlighted text var nfg = LIGHTGRAY; // Foreground colour of non-highlighted text @@ -59,25 +61,26 @@ columnFrame.putmsg( + format("%-28s", "Subject") + "Date" ); -helpFrame.putmsg( - hfg + "HOME" + sffg + "/" + hfg + "END " - + hfg + "[" + sffg + "PgUp/PgDn" + hfg + "] " - + hfg + "N" + sffg + "ew Scan " - + hfg + "T" + sffg + "hreaded " - + hfg + "F" + sffg + "lat " - + hfg + "C" + sffg + "hange Area " - + hfg + "P" + sffg + "ost " - + hfg + "E" + sffg + "mail " - + hfg + "DEL" + sffg + "ete " +helpFrame.center( + hfg + "UP" + sffg + "/" + hfg + "DN " + + hfg + "[" + sffg + "PgUp/PgDn" + hfg + "] " + + hfg + "HOME" + sffg + "/" + hfg + "END " + + hfg + "T" + sffg + "hreaded " + + hfg + "F" + sffg + "lat " + + hfg + "A" + sffg + "rea " + + hfg + "E" + sffg + "mail " + + hfg + "P" + sffg + "ost " + + hfg + "DEL" + sffg + "ete " + hfg + "Q" + sffg + "uit" ); -messageBar.putmsg( - hfg + "HOME" + sffg + "/" + hfg + "END " - + hfg + "[" + sffg + "PgUp/PgDn" + hfg + "] " - + hfg + "R" + sffg + "eply " - + hfg + "P" + sffg + "revious " - + hfg + "N" + sffg + "ext " - + hfg + "DEL" + sffg + "ete " +messageBar.center( + hfg + "UP" + sffg + "/" + hfg + "DN " + + hfg + "[" + sffg + "PgUp/PgDn" + hfg + "] " + + hfg + "HOME" + sffg + "/" + hfg + "END " + + hfg + "R" + sffg + "eply " + + hfg + "P" + sffg + "revious " + + hfg + "N" + sffg + "ext " + + hfg + "DEL" + sffg + "ete " + hfg + "Q" + sffg + "uit" ); @@ -91,7 +94,7 @@ function formatItem(messageNumber, from, to, subject, date) { return retval; } -function getFlatList(oldestFirst) { +function getFlatList() { var header = null; var item; if(!mail) @@ -126,7 +129,7 @@ function getFlatList(oldestFirst) { var i = tree.addItem(item, showMessage, messages[m], mail); if(!mail && messages[messages.length - 1].number > msg_area.grp_list[bbs.curgrp].sub_list[bbs.cursub].scan_ptr) i.attr = urm; - else if(mail && messages[messages.length - 1].attr&MSG_READ == 0) + else if(mail && !(messages[messages.length - 1].attr&MSG_READ)) i.attr = urm; } tree.open(); @@ -139,39 +142,43 @@ function getThreadedList() { else var threads = getMessageThreads('mail'); var item; - for(var t in threads.order) { - if(threads.thread[threads.order[t]].messages.length < 2) { - messages.push(threads.thread[threads.order[t]].messages[0]); + for(var t in ((oldestFirst)?threads.thread:threads.order)) { + if(oldestFirst) + var theThread = threads.thread[t]; + else + var theThread = threads.thread[threads.order[t]]; + if(theThread.messages.length < 2) { + messages.push(theThread.messages[0]); item = formatItem( - threads.thread[threads.order[t]].messages[0].number, - threads.thread[threads.order[t]].messages[0].from, - threads.thread[threads.order[t]].messages[0].to, - threads.thread[threads.order[t]].messages[0].subject, - threads.thread[threads.order[t]].messages[0].when_written_time + theThread.messages[0].number, + theThread.messages[0].from, + theThread.messages[0].to, + theThread.messages[0].subject, + theThread.messages[0].when_written_time ); var i = tree.addItem(item, showMessage, messages[messages.length - 1], mail); if(!mail && messages[messages.length - 1].number > msg_area.grp_list[bbs.curgrp].sub_list[bbs.cursub].scan_ptr) i.attr = urm; - else if(mail && messages[messages.length - 1].attr&MSG_READ == 0) + else if(mail && !(messages[messages.length - 1].attr&MSG_READ)) i.attr = urm; continue; } item = formatItem( - threads.thread[threads.order[t]].messages[0].number, - threads.thread[threads.order[t]].messages[0].from, - threads.thread[threads.order[t]].messages[0].to, - threads.thread[threads.order[t]].messages[0].subject, - threads.thread[threads.order[t]].newest + theThread.messages[0].number, + theThread.messages[0].from, + theThread.messages[0].to, + theThread.messages[0].subject, + theThread.newest ); st = tree.addTree(item); - for(var m = 0; m < threads.thread[threads.order[t]].messages.length; m++) { - messages.push(threads.thread[threads.order[t]].messages[m]); + for(var m = 0; m < theThread.messages.length; m++) { + messages.push(theThread.messages[m]); item = formatItem( - threads.thread[threads.order[t]].messages[m].number, - threads.thread[threads.order[t]].messages[m].from, - threads.thread[threads.order[t]].messages[m].to, - threads.thread[threads.order[t]].messages[m].subject, - threads.thread[threads.order[t]].messages[m].when_written_time + theThread.messages[m].number, + theThread.messages[m].from, + theThread.messages[m].to, + theThread.messages[m].subject, + theThread.messages[m].when_written_time ); var i = st.addItem(item, showMessage, messages[messages.length - 1], mail); if(!mail && messages[messages.length - 1].number > msg_area.grp_list[bbs.curgrp].sub_list[bbs.cursub].scan_ptr) { @@ -221,14 +228,18 @@ function showMessage(header) { messageFrame.top(); if(!mail) { mb = msgBase; - if(header.number > msg_area.grp_list[bbs.curgrp].sub_list[bbs.cursub].scan_ptr) { + if(setPointers && header.number > msg_area.grp_list[bbs.curgrp].sub_list[bbs.cursub].scan_ptr) { msg_area.grp_list[bbs.curgrp].sub_list[bbs.cursub].scan_ptr = header.number; retval = "REFRESH"; } + mb.open(); } else { mb = new MsgBase('mail'); + mb.open(); + header.attr|=MSG_READ; + mb.put_msg_header(header.number, header); + retval = "REFRESH"; } - mb.open(); var body = mb.get_msg_body(header.number); mb.close(); headerFrame.putmsg( @@ -407,7 +418,7 @@ while(userInput != "Q") { threaded = false; getList(); break; - case "C": + case "A": messageAreaSelector(4, 5, 70, 16, frame); msgBase = new MsgBase(msg_area.grp_list[bbs.curgrp].sub_list[bbs.cursub].code); mail = false;