X-Git-Url: https://code.citadel.org/?p=citadel.git;a=blobdiff_plain;f=webcit%2Fstatic%2Fsummaryview.js;fp=webcit%2Fstatic%2Fsummaryview.js;h=a57ecef7012998ae8c4fcc8219aabe5d5321c1cf;hp=1e1e2d94eab5a93f77d30852bdb17c9f9dbc3251;hb=8715459d63e42b5b27cab8259d084ec6475a373f;hpb=3a1cf980bc110e17ade538de22703ba001fc61ee diff --git a/webcit/static/summaryview.js b/webcit/static/summaryview.js index 1e1e2d94e..a57ecef70 100644 --- a/webcit/static/summaryview.js +++ b/webcit/static/summaryview.js @@ -62,6 +62,14 @@ var toggles = {}; var nummsgs = 0; var startmsg = 0; +var newmsgs = 0; + +function refreshMessageCounter() { + var templStr = document.getElementById("nummsgs_template").innerHTML; + templStr = templStr.replace(/UNREADMSGS/, newmsgs); + templStr = templStr.replace(/TOTALMSGS/, nummsgs); + document.getElementById("nummsgs").innerHTML = templStr; +} function createMessageView() { message_view = document.getElementById("message_list_body"); @@ -148,6 +156,7 @@ function loadMessages(transport) { alert("Message loading failed"); } nummsgs = data['nummsgs']; + newmsgs = data['newmsgs']; msgs = data['msgs']; var length = msgs.length; rowArray = new Array(length); // store so they can be sorted @@ -172,6 +181,7 @@ function loadMessages(transport) { loadingMsg.parentNode.removeChild(loadingMsg); } sizePreviewPane(); + refreshMessageCounter(); } function resortAndDisplay(sortMode) { WCLog("Begin resortAndDisplay"); @@ -271,6 +281,8 @@ function CtdlMessageListClick(evt) { var msgId = parent.getAttribute("citadel:msgid"); var is_shift_pressed = event.shiftKey; var is_ctrl_pressed = event.ctrlKey; + var rowclass = parent.getAttribute("class"); + var msgUnseen = rowclass.search("new_message") >= 0; /* debugging str = '.'; @@ -295,12 +307,15 @@ function CtdlMessageListClick(evt) { document.getElementById("preview_pane").innerHTML = ""; new Ajax.Updater('preview_pane', 'msg/'+msgId, {method: 'get'}); markRow(parent); - var p = encodeURI('g_cmd=SEEN ' + msgId + '|1'); - new Ajax.Request('ajax_servcmd', { + + if (msgUnseen) { + var p = encodeURI('g_cmd=SEEN ' + msgId + '|1'); + new Ajax.Request('ajax_servcmd', { method: 'post', parameters: p, onComplete: CtdlMarkRowAsRead(parent) - }); + }); + } // If the shift key modifier is used, mark a range... } else if (event.button != 2 && is_shift_pressed) { if (originalMarkedRow == null) { @@ -344,6 +359,8 @@ function CtdlMarkRowAsRead(rowElement) { var classes = rowElement.className; classes = classes.replace("new_message",""); rowElement.className = classes; + newmsgs--; + refreshMessageCounter(); } function ApplySort(event) { var target = event.target; @@ -406,10 +423,16 @@ function unmarkAllRows() { function deleteAllMarkedRows() { for(msgId in currentlyMarkedRows) { var row = currentlyMarkedRows[msgId]; + var rowclass = row.getAttribute("class"); + var msgUnseen = rowclass.search("new_message") >= 0; + var rowArrayId = row.getAttribute("citadel:ctdlrowid"); row.parentNode.removeChild(row); delete currentlyMarkedRows[msgId]; delete msgs[rowArrayId]; + if (msgUnseen) + newmsgs--; + nummsgs--; } // Now we have to reconstruct rowarray as the array length has changed */ var newMsgs = new Array(msgs.length-1); @@ -423,6 +446,7 @@ function deleteAllMarkedRows() { } msgs = newMsgs; resortAndDisplay(null); + refreshMessageCounter(); } function deleteAllSelectedMessages() { var mvCommand = "";