From 0261bcfaa8aaf2972877b3ad680154c3949629c5 Mon Sep 17 00:00:00 2001 From: echicken <> Date: Sat, 25 Aug 2012 18:42:32 +0000 Subject: [PATCH] Fix some derpiness. Mark email as read when viewed, show unread email in alternate colour (like messages.) Cosmetic changes. Allow flat and threaded views to be shown in ascending or descending date order. --- xtrn/ecreader/ecReader.js | 97 ++++++++++++++++++++++----------------- 1 file changed, 54 insertions(+), 43 deletions(-) diff --git a/xtrn/ecreader/ecReader.js b/xtrn/ecreader/ecReader.js index 061265ad9a..6d32b85b4c 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; -- GitLab