X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Fstatic%2Fsummaryview.js;h=1e1e2d94eab5a93f77d30852bdb17c9f9dbc3251;hb=c6889faed3a574a598a6609fdf7553c9c7c29317;hp=80ff3414df8fba6e12683b3ff2bf13ba1dffdf6b;hpb=613ba9f35a16f38ddfd2820a3fadf8939cf36b9c;p=citadel.git
diff --git a/webcit/static/summaryview.js b/webcit/static/summaryview.js
index 80ff3414d..1e1e2d94e 100644
--- a/webcit/static/summaryview.js
+++ b/webcit/static/summaryview.js
@@ -85,7 +85,12 @@ function createMessageView() {
document.getElementById('m_refresh').setAttribute("href","#");
Event.observe(document.onresize ? document : window, "resize", normalizeHeaderTable);
Event.observe(document.onresize ? document : window, "resize", sizePreviewPane);
- $('summpage').observe('change', getPage);
+ if ( $('summpage') ) {
+ $('summpage').observe('change', getPage);
+ }
+ else {
+ alert('error: summpage does not exist');
+ }
takeOverSearchOMatic();
setupDragDrop(); // here for now
}
@@ -188,7 +193,7 @@ function resortAndDisplay(sortMode) {
var start = new Date();
var length = msgs.length;
var compiled = new Array(length+2);
- compiled[0] = "
";
+ compiled[0] = "";
var end = new Date();
WCLog("iterate: " + (end-start));
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,8 +269,24 @@ function CtdlMessageListClick(evt) {
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;
+
+/* 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();
@@ -274,12 +295,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);
@@ -308,7 +331,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);
}
@@ -357,10 +380,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) {
@@ -401,26 +424,53 @@ 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 = "";
+ }
+ }
+
+ 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();
+ });
+
+ document.getElementById("preview_pane").innerHTML = "";
+ deleteAllMarkedRows();
}
+
function CtdlMessageListKeyUp(event) {
- var key = event.which;
- if (key == 46) { // DELETE
+ var key = event.which || event.keyCode;
+
+ if (key == 46) { /* DELETE */
deleteAllSelectedMessages();
}
}
@@ -471,7 +521,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) {
@@ -519,7 +569,8 @@ function ApplySorterToggle() {
}
currentSorterToggle.className = className;
}
-/** Hack to make the header table line up with the data */
+
+/* Hack to make the header table line up with the data */
function normalizeHeaderTable() {
var message_list_hdr = document.getElementById("message_list_hdr");
var summary_view = document.getElementById("summary_view");
@@ -552,6 +603,7 @@ function setupPageSelector() {
summpage.appendChild(opt);
}
}
+
function getPage(event) {
var target = event.target;
startmsg = target.options.item(target.selectedIndex).value;
@@ -559,6 +611,7 @@ function getPage(event) {
//query = ""; // We are getting a page from the _entire_ msg list, don't query
getMessages();
}
+
function takeOverSearchOMatic() {
var searchForm = document.getElementById("searchomatic").getElementsByTagName("form")[0];
// First disable the form post