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");
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
loadingMsg.parentNode.removeChild(loadingMsg);
}
sizePreviewPane();
+ refreshMessageCounter();
}
function resortAndDisplay(sortMode) {
WCLog("Begin resortAndDisplay");
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();
var target = event.target ? event.target: event.srcElement; // and again..
var parent = target.parentNode;
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 = '.';
+ 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 (!event.shiftKey && !event.ctrlKey && !event.altKey) {
+ if (!is_shift_pressed && !is_ctrl_pressed) {
previousFinish = 0;
markedFrom = 0;
unmarkAllRows();
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 && event.shiftKey) {
+ } else if (event.button != 2 && is_shift_pressed) {
if (originalMarkedRow == null) {
originalMarkedRow = parent;
markRow(parent);
markRow(parent.parentNode.rows[x]);
}
// If the ctrl key modifier is used, toggle one message
- } else if (event.button != 2 && (event.ctrlKey || event.altKey)) {
+ } else if (event.button != 2 && is_ctrl_pressed) {
if (parent.getAttribute("citadel:marked")) {
unmarkRow(parent);
}
var classes = rowElement.className;
classes = classes.replace("new_message","");
rowElement.className = classes;
+ newmsgs--;
+ refreshMessageCounter();
}
function ApplySort(event) {
var target = event.target;
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);
}
msgs = newMsgs;
resortAndDisplay(null);
+ refreshMessageCounter();
}
function deleteAllSelectedMessages() {
var mvCommand = "";
deleteAllMarkedRows();
}
+
function CtdlMessageListKeyUp(event) {
- var key = event.which;
- if (key == 46) { // DELETE
+ var key = event.which || event.keyCode;
+
+ if (key == 46) { /* DELETE */
deleteAllSelectedMessages();
}
}