Skip to content
Snippets Groups Projects
Commit 46b69146 authored by deuce's avatar deuce
Browse files

Clean up forumLib.ssjs for HTML 4.01 strict.

The biggest issue was that end tags inside a script element are still part
of the outer document so this:

<b>
<script type="text/javascript">
document.write('Hello!'); // Don't forget the </b>
</script>
</b>

Would be illegal because the <b> tag was ended twice.
*ARGH*
parent 9988ad14
Branches
Tags
No related merge requests found
......@@ -44,6 +44,10 @@ function linkify(body) {
return(body);
}
function clean_subject(subject) {
return html_encode(subject, true, true, false, false);
}
function webify(body) {
var ret='';
......@@ -151,7 +155,7 @@ function webify(body) {
body=linkify(body);
body=body.replace(/\r\n$/,'');
body=body.replace(/(\r?\n)/g, "<br />");
body=body.replace(/(\r?\n)/g, "<br>");
body=body.replace(/'/g,'&rsquo;');
return body;
}
......@@ -161,10 +165,10 @@ function printBoards() {
for(mg in msg_area.grp_list) {
print("<div class='standardBorder standardPadding underMargin subBoardHeaderColor'>");
print("<div class='headingFont'><a class=ulLink href='javascript:toggleVisibility(\"grp" + msg_area.grp_list[mg].number + "\")'>" + msg_area.grp_list[mg].name + "</a></div>");
print("<div class='headingFont'><a class=ulLink href='javascript:toggleVisibility(\"grp" + msg_area.grp_list[mg].number + "\")'>" + clean_subject(msg_area.grp_list[mg].name) + "</a></div>");
print("<div id=stats" + msg_area.grp_list[mg].number + "></div>");
print("</div>");
print("<div id=grp" + msg_area.grp_list[mg].number + " style=display:none;>");
print("<div id=grp" + msg_area.grp_list[mg].number + " style=display:none>");
var a = 0;
var b = 0;
for(sb in msg_area.grp_list[mg].sub_list) {
......@@ -173,18 +177,18 @@ function printBoards() {
msgBase.open();
b = b + msgBase.total_msgs;
print("<div class='standardBorder standardPadding underMargin treeIndent messageBoxColor'>");
print("<a class=ulLink href=./pages.ssjs?page=" + webIni.forumPage + "&action=viewSubBoard&subBoard=" + msg_area.grp_list[mg].sub_list[sb].code + ">" + msg_area.grp_list[mg].sub_list[sb].name + "</a><br />");
print('<a class=ulLink href="./pages.ssjs?page=' + webIni.forumPage + "&amp;action=viewSubBoard&amp;subBoard=" + clean_subject(msg_area.grp_list[mg].sub_list[sb].code) + '">' + clean_subject(msg_area.grp_list[mg].sub_list[sb].name) + "</a><br>");
print(msgBase.total_msgs + " messages");
if(msgBase.last_msg > 0) {
var header = msgBase.get_msg_header(msgBase.last_msg);
if(!header) continue;
print("<br />Latest: " + header.subject + ", by: " + header.from + " on " + system.timestr(header.when_written_time));
print("<br>Latest: " + clean_subject(header.subject) + ", by: " + clean_subject(header.from) + " on " + system.timestr(header.when_written_time));
}
print("</div>");
msgBase.close();
}
print("</div>");
print("<script language=javascript type=text/javascript>document.getElementById('stats" + msg_area.grp_list[mg].number + "').innerHTML = '" + msg_area.grp_list[mg].description + "<br />" + b + " messages in " + a + " sub-boards';</script>");
print("<script type='text/javascript'>document.getElementById('stats" + msg_area.grp_list[mg].number + "').innerHTML = '" + clean_subject(msg_area.grp_list[mg].description) + "<br>" + b + " messages in " + a + " sub-boards';</script>");
}
}
......@@ -201,7 +205,7 @@ function printSubBoard(subBoardCode, threadNumber, newOnly, scanPointer, mg, sb)
var msgBase = new MsgBase(subBoardCode);
if(!msgBase.open() || msgBase.last_msg < 1) {
if(!newOnly) print("<br />There are no messages to show in this sub-board.");
if(!newOnly) print("<br>There are no messages to show in this sub-board.");
return;
}
var msgBase_last_msg=msgBase.last_msg;
......@@ -212,7 +216,7 @@ function printSubBoard(subBoardCode, threadNumber, newOnly, scanPointer, mg, sb)
}
if(subBoardCode != 'mail' && !user.compare_ars(msgBase.cfg.ars)) return; // 'mail' does not have a .cfg.
var header, body, msg, mm = msgBase.first_msg, reply = '', messageThreads = new Object(), threadedMessages = new Object();
print('<div id=' + subBoardCode + '-headerBox class="subBoardHeaderColor standardBorder standardMargin standardPadding headingFont">');
print('<div id=' + clean_subject(subBoardCode) + '-headerBox class="subBoardHeaderColor standardBorder standardMargin standardPadding headingFont">');
if(subBoardCode == 'mail') {
print('Private Mail');
......@@ -223,38 +227,38 @@ function printSubBoard(subBoardCode, threadNumber, newOnly, scanPointer, mg, sb)
print('</div>');
if(newOnly) {
print('<script language=javascript type=text/javascript>');
print('<script type="text/javascript">');
print('document.getElementById("' + subBoardCode + '-headerBox").onclick = function() { toggleVisibility("subBoardContainer-' + subBoardCode + '"); updatePointer("' + subBoardCode + '", "' + eval(webIni.webUrl) + 'lib/forumAsync.ssjs", "' + mg + '", "' + sb + '"); };');
print('</script>');
print('<div id=subBoardContainer-' + subBoardCode + ' style=display:none;>');
print('<div id=subBoardContainer-' + clean_subject(subBoardCode) + ' style=display:none>');
}
if(subBoardCode == 'mail' || user.compare_ars(msgBase.cfg.post_ars)) {
print('<div class="messageBoxColor standardBorder standardMargin standardPadding treeIndent">');
if(webIni.maxMessages > 0 && !http_request.query.hasOwnProperty('showAll')) {
print('Recent messages (<a class=ulLink href=' + eval(webIni.webUrl) + 'pages.ssjs?page=' + webIni.forumPage +'&action=viewSubBoard&subBoard=' + subBoardCode + '&showAll=true>Show all</a>)');
print('Recent messages (<a class=ulLink href=' + eval(webIni.webUrl) + 'pages.ssjs?page=' + webIni.forumPage +'&amp;action=viewSubBoard&amp;subBoard=' + clean_subject(subBoardCode) + '&amp;showAll=true>Show all</a>)');
} else {
print('All messages');
webIni.maxMessages = 0;
}
print(' - <a class=ulLink onclick=toggleVisibility(\'newMessage-' + subBoardCode + '\')>Post a new message</a><br />');
print('<div style=display:none; id=newMessage-' + subBoardCode + '>');
print('<br /><form id=newMessageForm-' + subBoardCode + ' action=none method=post>');
print('To:<br /><input type=text name=to size=50 value="All" onkeypress=noReturn(event) /><br /><br />');
print('From:<br /><select name=from><option value="' + user.alias + '">' + user.alias + '</option><option value="' + user.name + '">' + user.name + '</option></select><br /><br />');
print('Subject:<br /><input type=text size=50 name=subject onkeypress=noReturn(event) /><br /><br />');
print('<textarea class="standardBorder" name=body cols=80 rows=20>' + sig + '</textarea><br />');
print('<input type=button value=Submit onclick=submitForm("newMessageForm-' + subBoardCode + '","' + eval(webIni.webUrl) + 'lib/forumAsync.ssjs","newMessageForm-' + subBoardCode + '") />');
print('<input type=hidden name=subBoard value=' + subBoardCode + ' />');
print('<input type=hidden name=irtMessage value=none />');
print(' - <a class=ulLink onclick=toggleVisibility(\'newMessage-' + clean_subject(subBoardCode) + '\')>Post a new message</a><br>');
print('<div style=display:none; id=newMessage-' + clean_subject(subBoardCode) + '>');
print('<br><form id=newMessageForm-' + clean_subject(subBoardCode) + ' action=none method=post>');
print('To:<br><input type=text name=to size=50 value="All" onkeypress=noReturn(event)><br><br>');
print('From:<br><select name=from><option value="' + user.alias + '">' + user.alias + '</option><option value="' + user.name + '">' + user.name + '</option></select><br><br>');
print('Subject:<br><input type=text size=50 name=subject onkeypress=noReturn(event)><br><br>');
print('<textarea class="standardBorder" name=body cols=80 rows=20>' + sig + '</textarea><br>');
print('<input type=button value=Submit onclick=submitForm("newMessageForm-' + clean_subject(subBoardCode) + '","' + eval(webIni.webUrl) + 'lib/forumAsync.ssjs","newMessageForm-' + clean_subject(subBoardCode) + '")>');
print('<input type=hidden name=subBoard value=' + clean_subject(subBoardCode) + '>');
print('<input type=hidden name=irtMessage value=none>');
print('</form></div></div>');
}
if(webIni.maxMessages > 0 && (msgBase_last_msg - webIni.maxMessages) > 0) mm = msgBase_last_msg - webIni.maxMessages;
print('<script language=javascript type=text/javascript>');
print('<script type="text/javascript">');
print('function toggle_quote(container) {');
print(' for(child in container.childNodes) {');
print(' if(container.childNodes[child].nodeName=="BLOCKQUOTE") {');
......@@ -306,29 +310,29 @@ function printSubBoard(subBoardCode, threadNumber, newOnly, scanPointer, mg, sb)
/* Set 'msg' to contain a formatted version of the current
message 'm' which will later be appended to the appropriate
thread (or used to create a new one.) */
msg = '<a name=' + header.number + '></a>';
msg += '<div id=' + subBoardCode + header.number + ' class="messageBoxColor standardBorder standardPadding underMargin subTreeIndent messageFont">';
msg += 'From <b>' + header.from + '</b> to <b>' + header.to + '</b> on <b>' + system.timestr(header.when_written_time) + '</b>';
msg += '<br /><br />' + webify(body) + '<br />';
msg = '<a name=' + header.number + '><\\/a>';
msg += '<div id=' + clean_subject(subBoardCode) + header.number + ' class="messageBoxColor standardBorder standardPadding underMargin subTreeIndent messageFont">';
msg += 'From <b>' + header.from + '<\\/b> to <b>' + header.to + '<\\/b> on <b>' + system.timestr(header.when_written_time) + '<\\/b>';
msg += '<br><br>' + webify(body).replace(/<\//g,'<\\\/') + '<br>';
if(subBoardCode == 'mail' || canPost) {
msg += '<a class=ulLink onclick=toggleVisibility("' + subBoardCode + '-reply-' + header.number + '")>Reply</a> - ';
msg += '<a class=ulLink onclick=toggleVisibility("' + clean_subject(subBoardCode) + '-reply-' + header.number + '")>Reply<\\/a> - ';
/* Set 'reply' to contain a (non-submittable) reply form, which
will be appended to 'msg' (above) further along. The submit
button of this form is just a regular button that triggers
the submitForm() function from lib/clientLib.js which sends
the form data to the server via an XMLHttpRequest(). This
way we don't have to migrate away from the page (bad.) */
reply = '<div style=display:none;margin-top:10px; id=' + subBoardCode + '-reply-' + header.number + '>';
reply += '<form id=' + subBoardCode + '-replyForm-' + header.number + ' action=none method=post>';
reply += 'To:<br /><input type=text name=to size=50 value="' + header.from + '" onkeypress=noReturn(event) /><br /><br />';
reply += 'From:<br /><select name=from><option value="' + user.alias + '">' + user.alias + '</option><option value="' + user.name + '">' + user.name + '</option></select><br /><br />';
reply += '<textarea class="standardBorder" name=body cols=80 rows=20>' + quote_msg(body, line_length=79, prefix="> ").replace(/\n|\r\n/g, "&#13;&#10;").replace(/'/g, '&rsquo;') + '&#13;&#10;' + sig + '</textarea><br />';
reply += '<input type=button value=Submit onclick=submitForm("' + subBoardCode + '-replyForm-' + header.number + '","' + eval(webIni.webUrl) + 'lib/forumAsync.ssjs","' + subBoardCode + '-reply-' + header.number + '") />';
reply += '<input type=hidden name=subject value="' + header.subject + '" />';
reply += '<input type=hidden name=subBoard value=' + subBoardCode + ' />';
reply += '<input type=hidden name=irtMessage value=' + header.number + ' />';
reply += '</form><br /></div>';
reply = '<div style=display:none;margin-top:10px; id=' + clean_subject(subBoardCode) + '-reply-' + header.number + '>';
reply += '<form id=' + clean_subject(subBoardCode) + '-replyForm-' + header.number + ' action=none method=post>';
reply += 'To:<br><input type=text name=to size=50 value="' + header.from + '" onkeypress=noReturn(event)><br><br>';
reply += 'From:<br><select name=from><option value="' + user.alias + '">' + user.alias + '</option><option value="' + user.name + '">' + user.name + '</option></select><br><br>';
reply += '<textarea class="standardBorder" name=body cols=80 rows=20>' + quote_msg(body, line_length=79, prefix="> ").replace(/\n|\r\n/g, "&#13;&#10;").replace(/'/g, '&rsquo;') + '&#13;&#10;' + sig + '</textarea><br>';
reply += '<input type=button value=Submit onclick=submitForm("' + clean_subject(subBoardCode) + '-replyForm-' + header.number + '","' + eval(webIni.webUrl) + 'lib/forumAsync.ssjs","' + clean_subject(subBoardCode) + '-reply-' + header.number + '")>';
reply += '<input type=hidden name=subject value="' + clean_subject(header.subject) + '">';
reply += '<input type=hidden name=subBoard value=' + clean_subject(subBoardCode) + '>';
reply += '<input type=hidden name=irtMessage value=' + header.number + '>';
reply += '</form><br></div>';
}
if(header.thread_back > 0 && threadedMessages.hasOwnProperty(header.thread_back) && messageThreads.hasOwnProperty(threadedMessages[header.thread_back])) {
......@@ -338,10 +342,10 @@ function printSubBoard(subBoardCode, threadNumber, newOnly, scanPointer, mg, sb)
messageThreads[threadedMessages[header.thread_back]]['replies']++;
messageThreads[threadedMessages[header.thread_back]]['latestAuthor'] = header.from;
messageThreads[threadedMessages[header.thread_back]]['latestNumber'] = header.number;
msg += '<a class=ulLink href=./pages.ssjs?page=' + webIni.forumPage + '&action=viewSubBoard&subBoard=' + subBoardCode + '&thread=' + messageThreads[threadedMessages[header.thread_back]]["threadID"] + '>Thread URL</a>';
msg += ' - <a class=ulLink href=./pages.ssjs?page=' + webIni.forumPage + '&action=viewSubBoard&subBoard=' + subBoardCode + '&thread=' + messageThreads[threadedMessages[header.thread_back]]["threadID"] + '#' + header.number + '>Message URL</a>';
msg += ' - <a class=ulLink onclick=toggleVisibility("threadContainer' + messageThreads[threadedMessages[header.thread_back]]["number"]+ '")>Collapse Thread</a><br />' + reply + '</div>';
print("<script language=javascript type=text/javascript>");
msg += '<a class=ulLink href="./pages.ssjs?page=' + webIni.forumPage + '&amp;action=viewSubBoard&amp;subBoard=' + clean_subject(subBoardCode) + '&amp;thread=' + messageThreads[threadedMessages[header.thread_back]]["threadID"] + '">Thread URL<\\/a>';
msg += ' - <a class=ulLink href="./pages.ssjs?page=' + webIni.forumPage + '&amp;action=viewSubBoard&amp;subBoard=' + clean_subject(subBoardCode) + '&amp;thread=' + messageThreads[threadedMessages[header.thread_back]]["threadID"] + '#' + header.number + '">Message URL<\\/a>';
msg += ' - <a class=ulLink onclick=toggleVisibility("threadContainer' + messageThreads[threadedMessages[header.thread_back]]["number"]+ '")>Collapse Thread<\\/a><br>' + reply + '<\\/div>';
print("<script type='text/javascript'>");
print("threadContainer" + messageThreads[threadedMessages[header.thread_back]]['number'] + ".innerHTML += '" + msg + "';");
print("</script>");
} else if(header.thread_next > 0 && threadedMessages.hasOwnProperty(header.thread_next) && messageThreads.hasOwnProperty(threadedMessages[header.thread_next])) {
......@@ -351,10 +355,10 @@ function printSubBoard(subBoardCode, threadNumber, newOnly, scanPointer, mg, sb)
messageThreads[threadedMessages[header.thread_next]]['replies']++;
messageThreads[threadedMessages[header.thread_next]]['latestAuthor'] = header.from;
messageThreads[threadedMessages[header.thread_next]]['latestNumber'] = header.number;
msg += '<a class=ulLink href=./pages.ssjs?page=' + webIni.forumPage + '&action=viewSubBoard&subBoard=' + subBoardCode + '&thread=' + messageThreads[threadedMessages[header.thread_next]]["threadID"] + '>Thread URL</a>';
msg += ' - <a class=ulLink href=./pages.ssjs?page=' + webIni.forumPage + '&action=viewSubBoard&subBoard=' + subBoardCode + '&thread=' + messageThreads[threadedMessages[header.thread_next]]["threadID"] + '#' + header.number + '>Message URL</a>';
msg += ' - <a class=ulLink onclick=toggleVisibility("threadContainer' + messageThreads[threadedMessages[header.thread_next]]["number"]+ '")>Collapse Thread</a>' + reply + '</div>';
print("<script language=javascript type=text/javascript>");
msg += '<a class=ulLink href="./pages.ssjs?page=' + webIni.forumPage + '&amp;action=viewSubBoard&amp;subBoard=' + clean_subject(subBoardCode) + '&amp;thread=' + messageThreads[threadedMessages[header.thread_next]]["threadID"] + '">Thread URL<\\/a>';
msg += ' - <a class=ulLink href="./pages.ssjs?page=' + webIni.forumPage + '&amp;action=viewSubBoard&subBoard=' + clean_subject(subBoardCode) + '&amp;thread=' + messageThreads[threadedMessages[header.thread_next]]["threadID"] + '#' + header.number + '">Message URL<\\/a>';
msg += ' - <a class=ulLink onclick=toggleVisibility("threadContainer' + messageThreads[threadedMessages[header.thread_next]]["number"]+ '")>Collapse Thread<\\/a>' + reply + '<\\/div>';
print("<script type='text/javascript'>");
print("threadContainer" + messageThreads[threadedMessages[header.thread_next]]['number'] + ".innerHTML += '" + msg + "';");
print("</script>");
} else {
......@@ -368,10 +372,10 @@ function printSubBoard(subBoardCode, threadNumber, newOnly, scanPointer, mg, sb)
messageThreads[t]['replies']++;
messageThreads[t]['latestAuthor'] = header.from;
messageThreads[t]['latestNumber'] = header.number;
msg += '<a class=ulLink href=./pages.ssjs?page=' + webIni.forumPage + '&action=viewSubBoard&subBoard=' + subBoardCode + '&thread=' + messageThreads[t]["threadID"] + '>Thread URL</a>';
msg += ' - <a class=ulLink href=./pages.ssjs?page=' + webIni.forumPage + '&action=viewSubBoard&subBoard=' + subBoardCode + '&thread=' + messageThreads[t]["threadID"] + '#' + header.number + '>Message URL</a>';
msg += ' - <a class=ulLink onclick=toggleVisibility("threadContainer' + messageThreads[t]["number"]+ '")>Collapse Thread</a>' + reply + '</div>';
print("<script language=javascript type=text/javascript>");
msg += '<a class=ulLink href="./pages.ssjs?page=' + webIni.forumPage + '&amp;action=viewSubBoard&amp;subBoard=' + clean_subject(subBoardCode) + '&amp;thread=' + messageThreads[t]["threadID"] + '">Thread URL<\\/a>';
msg += ' - <a class=ulLink href="./pages.ssjs?page=' + webIni.forumPage + '&amp;action=viewSubBoard&amp;subBoard=' + clean_subject(subBoardCode) + '&amp;thread=' + messageThreads[t]["threadID"] + '#' + header.number + '">Message URL<\\/a>';
msg += ' - <a class=ulLink onclick=toggleVisibility("threadContainer' + messageThreads[t]["number"]+ '")>Collapse Thread<\\/a>' + reply + '<\\/div>';
print("<script type='text/javascript'>");
print("threadContainer" + messageThreads[t]['number'] + ".innerHTML += '" + msg + "';");
print("</script>");
break; // Need not waste time on any more message threads if a match was found.
......@@ -385,10 +389,10 @@ function printSubBoard(subBoardCode, threadNumber, newOnly, scanPointer, mg, sb)
// This message is not associated with any existing threads based on the above criteria - time to create a new one
messageThreads[threadNumber] = { 'number' : threadNumber, 'newest' : header.when_written_time, 'subject' : header.subject, 'replies' : 0, 'latestAuthor' : '', 'latestNumber' : header.number, 'threadID' : header.number };
threadedMessages[header.number] = threadNumber;
print("<script language=javascript type=text/javascript>");
print("<script type='text/javascript'>");
print("var threadHeader" + threadNumber + " = document.createElement('div');");
print("threadHeader" + threadNumber + ".id = 'threadHeader" + threadNumber + "';");
print("threadHeader" + threadNumber + ".innerHTML += '<a name=" + header.number + "></a><a class=\"ulLink headingFont\" href=javascript:toggleVisibility(\"threadContainer" + threadNumber + "\")>" + html_encode(header.subject, false, false, false, false).replace(/'/g, "&apos;") + "</a><br />Started by " + header.from + " on " + system.timestr(parseInt(header.when_written_time)) + "';");
print("threadHeader" + threadNumber + ".innerHTML += '<a name=" + header.number + "><\\/a><a class=\"ulLink headingFont\" href=javascript:toggleVisibility(\"threadContainer" + threadNumber + "\")>" + clean_subject(header.subject, false, false, false, false).replace(/'/g, "&apos;") + "<\\/a><br>Started by " + header.from + " on " + system.timestr(parseInt(header.when_written_time)) + "';");
print("var threadContainer" + threadNumber + " = document.createElement('div');");
print("threadContainer" + threadNumber + ".id = 'threadContainer" + threadNumber + "';");
......@@ -398,9 +402,9 @@ function printSubBoard(subBoardCode, threadNumber, newOnly, scanPointer, mg, sb)
print("threadContainer" + threadNumber + ".style.display = 'none';");
}
msg += '<a class=ulLink href=./pages.ssjs?page=' + webIni.forumPage + '&action=viewSubBoard&subBoard=' + subBoardCode + '&thread=' + header.number + '>Thread URL</a>';
msg += ' - <a class=ulLink href=./pages.ssjs?page=' + webIni.forumPage + '&action=viewSubBoard&subBoard=' + subBoardCode + '&thread=' + header.number + '#' + header.number + '>Message URL</a>';
msg += ' - <a class=ulLink onclick=toggleVisibility("threadContainer' + threadNumber + '")>Collapse Thread</a>' + reply + '</div>';
msg += '<a class=ulLink href="./pages.ssjs?page=' + webIni.forumPage + '&amp;action=viewSubBoard&amp;subBoard=' + clean_subject(subBoardCode) + '&amp;thread=' + header.number + '">Thread URL<\\/a>';
msg += ' - <a class=ulLink href="./pages.ssjs?page=' + webIni.forumPage + '&amp;action=viewSubBoard&amp;subBoard=' + clean_subject(subBoardCode) + '&amp;thread=' + header.number + '#' + header.number + '">Message URL<\\/a>';
msg += ' - <a class=ulLink onclick=toggleVisibility("threadContainer' + threadNumber + '")>Collapse Thread<\\/a>' + reply + '<\\/div>';
print("threadContainer" + threadNumber + ".innerHTML += '" + msg + "';");
print("</script>");
threadNumber++;
......@@ -408,7 +412,7 @@ function printSubBoard(subBoardCode, threadNumber, newOnly, scanPointer, mg, sb)
}
print("<div id=threadBox-" + subBoardCode + "></div>");
print("<div id=threadBox-" + clean_subject(subBoardCode) + "></div>");
var newestDates = new Array();
for(var t in messageThreads) newestDates.push(messageThreads[t]['newest']);
newestDates = newestDates.sort(sortnumber);
......@@ -418,13 +422,13 @@ function printSubBoard(subBoardCode, threadNumber, newOnly, scanPointer, mg, sb)
for(var t in messageThreads) {
if(messageThreads[t]['newest'] != newestDates[d]) continue;
if(newOnly && messageThreads[t]['latestNumber'] <= scanPointer) continue;
print("<script language=javascript type=text/javascript>");
print("<script type='text/javascript'>");
print("threadHeader" + t + ".className += 'messageBoxColor standardBorder standardPadding underMargin treeIndent';");
if(messageThreads[t]['replies'] != 1) {
print("threadHeader" + t + ".innerHTML += '<br />" + messageThreads[t]['replies'] + " replies';");
print("threadHeader" + t + ".innerHTML += '<br>" + messageThreads[t]['replies'] + " replies';");
} else {
print("threadHeader" + t + ".innerHTML += '<br />" + messageThreads[t]['replies'] + " reply';");
print("threadHeader" + t + ".innerHTML += '<br>" + messageThreads[t]['replies'] + " reply';");
}
if(messageThreads[t]['replies'] > 0) print("threadHeader" + t + ".innerHTML += ', latest by " + messageThreads[t]['latestAuthor'] + " on " + system.timestr(messageThreads[t]['newest']) + "';");
......@@ -462,5 +466,5 @@ function newMessageScan() {
}
}
}
if(threadNumber < 1) print("<br />No new messages.");
if(threadNumber < 1) print("<br>No new messages.");
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment