X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Fstatic%2Fsummaryview.js;h=f892990e63ce2f925d5d206aad699633fca1243c;hb=625ce742deaa633dc4368b590c8ca58234ef4ed5;hp=0dffd2416482ea75d493a79596532b6ff56aa010;hpb=b84408f4c69030535a3db080783ad5b612731fa7;p=citadel.git diff --git a/webcit/static/summaryview.js b/webcit/static/summaryview.js index 0dffd2416..f892990e6 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"); @@ -225,7 +235,7 @@ function resortAndDisplay(sortMode) { var compile = compiled.join(""); start = new Date(); $(message_view_parent).update(compile); - message_view_parent.onclick = CtdlMessageListClick; + message_view_parent.observe('click', CtdlMessageListClick); message_view = message_view_parent.firstChild; end = new Date(); var delta = end.getTime() - start.getTime(); @@ -264,70 +274,97 @@ function sortRowsByFromDescending(a, b) { return strcmp(fromTwo, fromOne); }; function CtdlMessageListClick(evt) { - /* Since element.onload is used here, test to see if evt is defined */ - var event = evt ? evt : window.event; - var target = event.target ? event.target: event.srcElement; // and again.. - var parent = target.parentNode; - var msgId = parent.getAttribute("citadel:msgid"); - // If the ctrl key modifier wasn't used, unmark all rows and load the message - if (!event.shiftKey && !event.ctrlKey && !event.altKey) { - previousFinish = 0; - markedFrom = 0; - unmarkAllRows(); - markedRowIndex = parent.rowIndex; - originalMarkedRow = parent; - 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', { - method: 'post', - parameters: p, - onComplete: CtdlMarkRowAsRead(parent) - }); - // If the shift key modifier is used, mark a range... - } else if (event.button != 2 && event.shiftKey) { - if (originalMarkedRow == null) { - originalMarkedRow = parent; - markRow(parent); - } else { - unmarkAllRows(); - markRow(parent); - markRow(originalMarkedRow); - } - var rowIndex = parent.rowIndex; - if (markedFrom == 0) { - markedFrom = rowIndex; - } - var startMarkingFrom = 0; - var finish = 0; - if (rowIndex > markedRowIndex) { - startMarkingFrom = markedRowIndex+1; - finish = rowIndex; - } else if (rowIndex < markedRowIndex) { - startMarkingFrom = rowIndex+1; - finish = markedRowIndex; - } - previousFinish = finish; - WCLog('startMarkingFrom=' + startMarkingFrom + ', finish=' + finish); - for(var x = startMarkingFrom; x= 0; + + /* debugging + str = '.'; + if (is_shift_pressed) { + str = str + 'S'; + } + str = str + '.'; + if (is_ctrl_pressed) { + str = str + 'C'; + } + str = str + '.'; + $('ib_summary').innerHTML = str; + */ + + // If the ctrl key modifier wasn't used, unmark all rows and load the message + if (!is_shift_pressed && !is_ctrl_pressed) { + previousFinish = 0; + markedFrom = 0; + unmarkAllRows(); + markedRowIndex = parent.rowIndex; + originalMarkedRow = parent; + document.getElementById("preview_pane").innerHTML = ""; + new Ajax.Updater('preview_pane', 'msg/'+msgId, {method: 'get'}); + markRow(parent); + + 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) { + originalMarkedRow = parent; + markRow(parent); + } else { + unmarkAllRows(); + markRow(parent); + markRow(originalMarkedRow); + } + var rowIndex = parent.rowIndex; + if (markedFrom == 0) { + markedFrom = rowIndex; + } + var startMarkingFrom = 0; + var finish = 0; + if (markedRowIndex === null) { + startMarkingFrom = 0; + finish = rowIndex; + } + else if (rowIndex > markedRowIndex) { + startMarkingFrom = markedRowIndex+1; + finish = rowIndex; + } else if (rowIndex < markedRowIndex) { + startMarkingFrom = rowIndex+1; + finish = markedRowIndex; + } + previousFinish = finish; + WCLog('startMarkingFrom=' + startMarkingFrom + ', finish=' + finish); + for(var x = startMarkingFrom; x= 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); @@ -407,6 +450,7 @@ function deleteAllMarkedRows() { } msgs = newMsgs; resortAndDisplay(null); + refreshMessageCounter(); } function deleteAllSelectedMessages() { var mvCommand = ""; @@ -450,9 +494,11 @@ function deleteAllSelectedMessages() { deleteAllMarkedRows(); } + function CtdlMessageListKeyUp(event) { - var key = event.which; - if (key == 46) { // DELETE + var key = event.which || event.keyCode; + + if (key == 46) { /* DELETE */ deleteAllSelectedMessages(); } }