X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit-ng%2Fstatic%2Fjs%2Fviews.js;h=605cb72928bc3e327e619a8deb8a14e97d213b20;hb=75c253ddeebc3421127d4a1987eecc1150dad51f;hp=bfa45f5a6e3b5f5139a54cc9ce0a64f6af195464;hpb=27cb58901ead4e6632e8fbf97d8c2053e5b7ff59;p=citadel.git diff --git a/webcit-ng/static/js/views.js b/webcit-ng/static/js/views.js index bfa45f5a6..605cb7292 100644 --- a/webcit-ng/static/js/views.js +++ b/webcit-ng/static/js/views.js @@ -41,7 +41,8 @@ function render_room_view(gt_msg, lt_msg) forum_readmessages("ctdl-main", gt_msg, lt_msg); break; default: - document.getElementById("ctdl-main").innerHTML = "The view for " + current_room + " is " + current_view + " but there is no renderer." ; + document.getElementById("ctdl-main").innerHTML = + "The view for " + current_room + " is " + current_view + " but there is no renderer." ; break; } @@ -107,7 +108,10 @@ function forum_readmessages(target_div, gt_msg, lt_msg) // Render the divs (we will fill them in later) for (var i in msgs) { - document.getElementById(target_div).innerHTML += "
#" + msgs[i] + "
" ; + document.getElementById(target_div).innerHTML += + "
#" + msgs[i] + + "
" ; } if (lt_msg == 9999999999) { @@ -122,16 +126,35 @@ function forum_readmessages(target_div, gt_msg, lt_msg) } document.getElementById(target_div).innerHTML += "
" + - "" + - "link to msgs greater than " + newgt + "
" ; + "" + + "link to msgs greater than " + newgt + "" ; + } + + // Now figure out where to scroll to after rendering. + if (gt_msg > 0) + { + scroll_to = msgs[0]; + } + else if (lt_msg < 9999999999) + { + scroll_to = msgs[msgs.length-1]; + } + else if ( (logged_in) && (gt_msg == 0) && (lt_msg == 9999999999) ) + { + scroll_to = msgs[msgs.length-1]; + } + else + { + scroll_to = msgs[0]; // FIXME this is too naive } // Render the individual messages in the divs - render_messages(msgs, "ctdl_msg_", views.VIEW_BBS); + forum_render_messages(msgs, "ctdl_msg_", scroll_to) } else { - document.getElementById(target_div).innerHTML = original_text; // this will make the link reappear so the user can try again + // if xhr fails, this will make the link reappear so the user can try again + document.getElementById(target_div).innerHTML = original_text; } } }; @@ -140,19 +163,19 @@ function forum_readmessages(target_div, gt_msg, lt_msg) } -// Render a range of messages, in the view specified, with the div prefix specified +// Render a range of messages, with the div prefix specified // -function render_messages(msgs, prefix, view) +function forum_render_messages(msgs, prefix, scroll_to) { for (i=0; i" // begin message wrapper + + "
" // begin avatar + + "" + + "
" // end avatar + + "
" // begin content + + "
" // begin header + + "" // FIXME link to user profile + + msg.from + + " " + + "" + + msg.time + + " " + + "
" // end header + + "
" // begin body + + msg.text + + "
" // end body + + "
" // end content + + "" // end wrapper + ; } else { document.getElementById(div).innerHTML = "ERROR"; } + if (msgnum == scroll_to) + { + window.location.hash = div; + } } }; request.send();