X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Fstatic%2Fsummaryview.js;h=f3964c053d423a1e0b8495531b68d422eacd254b;hb=d89c2995e621fb8f5cb4c2777277ebef023b14cf;hp=6fd338c770eb17aa75f80ed840d161a2e839b2f2;hpb=45042b66a8585c867333733057d1240ff4d895c0;p=citadel.git diff --git a/webcit/static/summaryview.js b/webcit/static/summaryview.js index 6fd338c77..f3964c053 100644 --- a/webcit/static/summaryview.js +++ b/webcit/static/summaryview.js @@ -35,6 +35,9 @@ var currentlyHasRowsSelected = false; var mouseDownEvent = null; var exitedMouseDown = false; +var is_shift_pressed = false; +var is_ctrl_pressed = false; + var originalMarkedRow = null; var previousFinish = 0; var markedFrom = 0; @@ -79,6 +82,7 @@ function createMessageView() { mlh_date.observe('click',ApplySort); mlh_subject.observe('click',ApplySort); mlh_from.observe('click',ApplySort); + $(document).observe('keydown',CtdlMessageListKeyDown,false); $(document).observe('keyup',CtdlMessageListKeyUp,false); $('resize_msglist').observe('mousedown', CtdlResizeMouseDown); $('m_refresh').observe('click', getMessages); @@ -270,7 +274,7 @@ function CtdlMessageListClick(evt) { 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) { + if (!is_shift_pressed && !is_ctrl_pressed) { previousFinish = 0; markedFrom = 0; unmarkAllRows(); @@ -279,12 +283,14 @@ 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', { method: 'post', - parameters: 'g_cmd=SEEN ' + msgId + '|1', - onComplete: CtdlMarkRowAsRead(parent)}); + 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); @@ -313,7 +319,7 @@ function CtdlMessageListClick(evt) { 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); } @@ -362,10 +368,10 @@ function getSortMode(toggleElem) { function removeOldSortClass() { if (currentSorterToggle) { var classes = currentSorterToggle.className; - /* classes = classes.replace("current_sort_mode",""); - classes = classes.replace("sort_ascending",""); - classes = classes.replace("sort_descending",""); */ - currentSorterToggle.className = ""; + classes = classes.replace("current_sort_mode",""); + classes = classes.replace("sort_ascending",""); + classes = classes.replace("sort_descending",""); + currentSorterToggle.className = classes; } } function markRow(row) { @@ -406,28 +412,88 @@ function deleteAllMarkedRows() { msgs = newMsgs; resortAndDisplay(null); } - function deleteAllSelectedMessages() { - for(msgId in currentlyMarkedRows) { - if (!room_is_trash) { - new Ajax.Request('ajax_servcmd', - {method: 'post', - parameters: 'g_cmd=MOVE ' + msgId + '|_TRASH_|0' - }); - } else { - new Ajax.Request('ajax_servcmd', {method: 'post', - parameters: 'g_cmd=DELE '+msgId}); + var mvCommand = ""; + var msgIds = ""; + for(msgId in currentlyMarkedRows) { + msgIds += ","+msgId; + + if (msgIds.length > 800) { + if (!room_is_trash) { + mvCommand = encodeURI("g_cmd=MOVE " + msgIds + "|_TRASH_|0"); + } + else { + mvCommand = encodeURI("g_cmd=DELE " + msgIds); + } + new Ajax.Request("ajax_servcmd", { + parameters: mvCommand, + method: 'post', + onSuccess: function(transport) { + WCLog(transport.responseText); } + }); + msgIds = ""; } - document.getElementById("preview_pane").innerHTML = ""; - deleteAllMarkedRows(); + } + + if (!room_is_trash) { + mvCommand = encodeURI("g_cmd=MOVE " + msgIds + "|_TRASH_|0"); + } + else { + mvCommand = encodeURI("g_cmd=DELE " + msgIds); + } + new Ajax.Request("ajax_servcmd", { + parameters: mvCommand, + method: 'post', + onSuccess: function(transport) { + WCLog(transport.responseText); + } + }); + + document.getElementById("preview_pane").innerHTML = ""; + deleteAllMarkedRows(); +} + + +function arrgggh() { + s = '.'; + if (is_shift_pressed) { + s = s + 'S'; + } + s = s + '.'; + if (is_ctrl_pressed) { + s = s + 'C'; + } + s = s + '.'; + $('ib_summary').innerHTML = s; + +} + +function CtdlMessageListKeyDown(event) { + var key = event.which || event.keyCode; + + if (key == 16) { /* SHIFT */ + is_shift_pressed = true; + } + else if ( (key == 17) || (key == 18) ) { /* CTRL or ALT */ + is_ctrl_pressed = true; + } + arrgggh(); } function CtdlMessageListKeyUp(event) { - var key = event.which; - if (key == 46) { // DELETE + var key = event.which || event.keyCode; + + if (key == 16) { /* SHIFT */ + is_shift_pressed = false; + } + else if ( (key == 17) || (key == 18) ) { /* CTRL or ALT */ + is_ctrl_pressed = false; + } + else if (key == 46) { /* DELETE */ deleteAllSelectedMessages(); } + arrgggh(); } function clearMessage(msgId) { @@ -476,7 +542,7 @@ function sizePreviewPane() { var heightOfViewPort = document.viewport.getHeight() // prototypejs method var bannerHeight = banner.offsetHeight; var contentViewPortHeight = heightOfViewPort-banner.offsetHeight-message_list_hdr.offsetHeight; - contentViewPortHeight = 0.98 * contentViewPortHeight; // leave some error + contentViewPortHeight = 0.95 * contentViewPortHeight; // leave some error (especially for FF3!!) // Set summary_view to 20%; var summary_height = ctdlLocalPrefs.readPref("svheight"); if (summary_height == null) {