X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Fstatic%2Fsummaryview.js;h=280fe788551363d9a7153b1d8667a526be1b4f35;hb=607880cfaee7b35a635328e443417c0d01b74922;hp=b3ea8ba75084301c2bf37aa45ac103a4420074be;hpb=9eca31087df3558d2827eaa342f6e8861ca32639;p=citadel.git diff --git a/webcit/static/summaryview.js b/webcit/static/summaryview.js index b3ea8ba75..280fe7885 100644 --- a/webcit/static/summaryview.js +++ b/webcit/static/summaryview.js @@ -1,12 +1,22 @@ -/** +/* * Webcit Summary View v2 - * All comments, flowers and death threats to Mathew McBride - * / + * All comments, flowers and death threats to Mathew McBride + * / * Copyright 2009 The Citadel Team * Licensed under the GPL V3 + * + * QA reminders: because I keep forgetting / get cursed. + * After changing anything in here, make sure that you still can: + * 1. Resort messages in both normal and paged view. + * 2. Select a range with shift-click + * 3. Select messages with ctrl-click + * 4. Normal click will deselect everything done above + * 5. Move messages, and they will disappear */ + document.observe("dom:loaded", createMessageView); +var msgs = null; var message_view = null; var loadingMsg = null; var rowArray = null; @@ -19,376 +29,406 @@ var mlh_from = null; var currentSorterToggle = null; var query = ""; var currentlyMarkedRows = new Object(); -var markedRowId = null; +var markedRowIndex = null; +var currentlyHasRowsSelected = false; var mouseDownEvent = null; var exitedMouseDown = false; +var originalMarkedRow = null; +var previousFinish = 0; +var markedFrom = 0; +var trTemplate = new Array(11); +trTemplate[0] = ""; +trTemplate[10] = ""; +trTemplate[12] = ""; +trTemplate[14] = ""; + + var currentPage = 0; var sortModes = { - "rdate" : sortRowsByDateDescending, - "date" : sortRowsByDateAscending, - // "reverse" : sortRowsByDateDescending, - "subj" : sortRowsBySubjectAscending, - "rsubj" : sortRowsBySubjectDescending, - "sender": sortRowsByFromAscending, - "rsender" : sortRowsByFromDescending + "rdate" : sortRowsByDateDescending, + "date" : sortRowsByDateAscending, + "subj" : sortRowsBySubjectAscending, + "rsubj" : sortRowsBySubjectDescending, + "sender": sortRowsByFromAscending, + "rsender" : sortRowsByFromDescending }; var toggles = {}; var nummsgs = 0; var startmsg = 0; + function createMessageView() { - message_view = document.getElementById("message_list_body"); - loadingMsg = document.getElementById("loading"); - getMessages(); - mlh_date = $("mlh_date"); - mlh_subject = $('mlh_subject'); - mlh_from = $('mlh_from'); - toggles["rdate"] = mlh_date; - toggles["date"] = mlh_date; - // toggles["reverse"] = mlh_date; - toggles["subj"] = mlh_subject; - toggles["rsubj"] = mlh_subject; - toggles["sender"] = mlh_from; - toggles["rsender"] = mlh_from; - mlh_date.observe('click',ApplySort); - mlh_subject.observe('click',ApplySort); - mlh_from.observe('click',ApplySort); - $(document).observe('keyup',CtdlMessageListKeyUp,false); - //window.oncontextmenu = function() { return false; }; - $('resize_msglist').observe('mousedown', CtdlResizeMouseDown); - $('m_refresh').observe('click', getMessages); - 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); - takeOverSearchOMatic(); - setupDragDrop(); // here for now + message_view = document.getElementById("message_list_body"); + loadingMsg = document.getElementById("loading"); + getMessages(); + mlh_date = $("mlh_date"); + mlh_subject = $('mlh_subject'); + mlh_from = $('mlh_from'); + toggles["rdate"] = mlh_date; + toggles["date"] = mlh_date; + toggles["subj"] = mlh_subject; + toggles["rsubj"] = mlh_subject; + toggles["sender"] = mlh_from; + toggles["rsender"] = mlh_from; + mlh_date.observe('click',ApplySort); + mlh_subject.observe('click',ApplySort); + mlh_from.observe('click',ApplySort); + $(document).observe('keyup',CtdlMessageListKeyUp,false); + $('resize_msglist').observe('mousedown', CtdlResizeMouseDown); + $('m_refresh').observe('click', getMessages); + document.getElementById('m_refresh').setAttribute("href","#"); + Event.observe(document.onresize ? document : window, "resize", normalizeHeaderTable); + Event.observe(document.onresize ? document : window, "resize", sizePreviewPane); + if ( $('summpage') ) { + $('summpage').observe('change', getPage); + } + else { + alert('error: summpage does not exist'); + } + takeOverSearchOMatic(); + setupDragDrop(); // here for now } + function getMessages() { - if (loadingMsg.parentNode == null) { - message_view.innerHTML = ""; - message_view.appendChild(loadingMsg); - } -roomName = getTextContent(document.getElementById("rmname")); - var parameters = {'room':roomName, 'startmsg': startmsg, 'stopmsg': -1}; - if (is_safe_mode) { - parameters['stopmsg'] = parseInt(startmsg)+500; - //parameters['maxmsgs'] = 500; - if (currentSortMode != null) { - var SortBy = currentSortMode[0]; - if (SortBy.charAt(0) == 'r') { - SortBy = SortBy.substr(1); - parameters["SortOrder"] = "0"; - } - parameters["SortBy"] = SortBy; - } - } - if (query.length > 0) { - parameters["query"] = query; - } -new Ajax.Request("roommsgs", { - method: 'get', - onSuccess: loadMessages, - parameters: parameters, - sanitize: false, - evalJSON: false, - onFailure: function(e) { alert("Failure: " + e);} + if (loadingMsg.parentNode == null) { + message_view.innerHTML = ""; + message_view.appendChild(loadingMsg); + } + roomName = getTextContent(document.getElementById("rmname")); + var parameters = {'room':roomName, 'startmsg': startmsg, 'stopmsg': -1}; + if (is_safe_mode) { + parameters['stopmsg'] = parseInt(startmsg)+499; + //parameters['maxmsgs'] = 500; + if (currentSortMode != null) { + var SortBy = currentSortMode[0]; + if (SortBy.charAt(0) == 'r') { + SortBy = SortBy.substr(1); + parameters["SortOrder"] = "0"; + } + parameters["SortBy"] = SortBy; + } + } + if (query.length > 0) { + parameters["query"] = query; + } + new Ajax.Request("roommsgs", { + method: 'get', + onSuccess: loadMessages, + parameters: parameters, + sanitize: false, + evalJSON: false, + onFailure: function(e) { alert("Failure: " + e);} }); } + +function evalJSON(data) { + var jsonData = null; + if (typeof(JSON) === 'object' && typeof(JSON.parse) === 'function') { + try { + jsonData = JSON.parse(data); + } catch (e) { + // ignore + } + } + if (jsonData == null) { + jsonData = eval('('+data+')'); + } + return jsonData; +} function loadMessages(transport) { - try { - var data = eval('('+transport.responseText+')'); - if (!!data && transport.responseText.length < 2) { - alert("Message loading failed"); - } - nummsgs = data['nummsgs']; - var msgs = data['msgs']; - var length = msgs.length; - rowArray = new Array(); // store so they can be sorted - WCLog("Row array length: "+rowArray.length); - var start = new Date(); - for(var i=0; i"; + for(var x=0; x markedRowId) { - startMarkingFrom = markedRowId+1; - finish = rowId; - } else if (rowId < markedRowId) { - startMarkingFrom = rowId+1; - finish = markedRowId; - } - for(var x = startMarkingFrom; x 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