X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Fstatic%2Fwclib.js;h=ae7d20c8af1a3cc2eba3df82f3299676407c41d5;hb=4d11c8a47a3090d4b1d8d58a8ce59f34ba6e4ca5;hp=80da93dedbff7028307b8ee8b551a79e36251227;hpb=5b1753db6bf6ef1d93f47a2284efd3223488d5e7;p=citadel.git diff --git a/webcit/static/wclib.js b/webcit/static/wclib.js index 80da93ded..ae7d20c8a 100644 --- a/webcit/static/wclib.js +++ b/webcit/static/wclib.js @@ -1,22 +1,27 @@ /* - * $Id$ - * Copyright 2005 - 2009 The Citadel Team - * Licensed under the GPL V3 - * * JavaScript function library for WebCit. * + * Copyright (c) 2005-2012 by the citadel.org team + * + * This program is open source software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License, version 3. + * the Free Software Foundation, either version 3 of the License, or + * + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * + * along with this program. If not, see . */ - var browserType; var room_is_trash = 0; var currentlyExpandedFloor = null; var roomlist = null; - -var _switchToRoomList = "switch to room list"; -var _switchToMenu = "switch to menu"; - var currentDropTarget = null; var supportsAddEventListener = (!!document.addEventListener); @@ -49,6 +54,52 @@ function strcmp ( str1, str2 ) { return ( ( str1 == str2 ) ? 0 : ( ( str1 > str2 ) ? 1 : -1 ) ); } +function CtdlMarkLog($Which, $Status) +{ + if ($Status) + document.getElementById($Which).checked == false; + else + document.getElementById($Which).checked == true; + +} +function ToggleLogEnable($Which) +{ + var p; + var Status = !document.getElementById($Which).checked; + if (Status) + p= encodeURI('g_cmd=LOGS ' + $Which + '|0'); + else + p= encodeURI('g_cmd=LOGS ' + $Which + '|1'); + new Ajax.Request('ajax_servcmd', { + method: 'post', + parameters: p, + onComplete: CtdlMarkLog($Which, Status) + }); +} + +function SMTPRunQueue() +{ + var p; + + p= encodeURI('g_cmd=SMTP runqueue'); + new Ajax.Request('ajax_servcmd', { + method: 'post', + parameters: p, + onComplete: function(transport) { ajax_important_message(transport.responseText.substr(4));} + }); +} + +function ToggleVisibility ($Which) +{ + if (document.getElementById) + { + if (document.getElementById($Which).style.display == "none") + document.getElementById($Which).style.display = "inline"; + else + document.getElementById($Which).style.display = "none"; + } +} + function emptyElement(element) { childNodes = element.childNodes; for(var i=0; i 0) { - new Ajax.PeriodicalUpdater('online_users', 'do_template?template=who_iconbar', {method: 'get', frequency: 30}); - } -} -function changeIconBarEvent(event) { - changeIconBar(event.target); -} -function changeIconBar(target) { - var switchTo = target.ctdlSwitchIconBarTo; - WCLog("Changing to: " + switchTo); - ctdlLocalPrefs.setPref("iconbar_view", target.ctdlSwitchIconBarTo); - if (switchTo == "rooms") { - switch_to_room_list(); - setTextContent(target, _switchToMenu); - target.ctdlSwitchIconBarTo = "menu"; - } else { - switch_to_menu_buttons(); - setTextContent(target, _switchToRoomList); - target.ctdlSwitchIconBarTo = "rooms"; - } -} -function switch_to_room_list() { - var roomlist = document.getElementById("roomlist"); - var summary = document.getElementById("iconbar_menu"); - if (!rooms || !floors || !roomlist) { - FillRooms(IconBarRoomList); - } - roomlist.className = roomlist.className.replace("hidden",""); - summary.className += " hidden"; +function activate_iconbar_wholist_populat0r() +{ + new Ajax.PeriodicalUpdater('online_users', 'do_template?template=who_iconbar', {method: 'get', frequency: 30}); } -function switch_to_menu_buttons() { - if (roomlist != null) { - roomlist.className += "hidden"; - } - var iconbar = document.getElementById("iconbar_menu"); - iconbar.className = iconbar.className.replace("hidden",""); - var roomlist = document.getElementById("roomlist"); - roomlist.className += " hidden"; +function setupIconBar() { + + /* WARNING: VILE, SLEAZY HACK. We determine the state of the box based on the image loaded. */ + if ( $('expand_roomlist').src.substring($('expand_roomlist').src.length - 12) == "collapse.gif" ) { + $('roomlist').style.display = 'block'; + $('roomlist').innerHTML = ''; + FillRooms(IconBarRoomList); + } + else { + $('roomlist').style.display = 'none'; + } + + /* WARNING: VILE, SLEAZY HACK. We determine the state of the box based on the image loaded. */ + if ( $('expand_wholist').src.substring($('expand_wholist').src.length - 12) == "collapse.gif" ) { + $('online_users').style.display = 'block'; + activate_iconbar_wholist_populat0r(); + } + else { + $('online_users').style.display = 'none'; + } + } function GenericTreeRoomList(roomlist) { @@ -282,7 +344,7 @@ function addRoomToList(floorUL,room, roomToEmphasize) { var hasNewMsgs = ((raflags & UA_HASNEWMSGS) == UA_HASNEWMSGS); var roomLI = document.createElement("li"); var roomA = document.createElement("a"); - roomA.setAttribute("href","dotgoto?room="+roomName); + roomA.setAttribute("href","dotgoto?room="+encodeURIComponent(roomName)); roomA.appendChild(document.createTextNode(roomName)); roomLI.appendChild(roomA); floorUL.appendChild(roomLI); @@ -314,17 +376,26 @@ function addRoomToList(floorUL,room, roomToEmphasize) { function roomListDropHandler(target, dropped) { if (dropped.getAttribute("citadel:msgid")) { - var room = getTextContent(target); - var msgIds = ""; - for(msgId in currentlyMarkedRows) { //defined in summaryview.js - msgIds += ","+msgId; - } - var mvCommand = "g_cmd=MOVE " + msgIds + "|"+room+"|0"; - new Ajax.Request('ajax_servcmd', { - method: 'post', + var room = getTextContent(target); + var msgIds = ""; + for(msgId in currentlyMarkedRows) { //defined in summaryview.js + msgIds += ","+msgId; + if (msgIds.length > 800) { + var mvCommand = encodeURI("g_cmd=MOVE " + msgIds + "|"+room+"|0"); + new Ajax.Request("ajax_servcmd", { + parameters: mvCommand, + method: 'post', + }); + msgIds = ""; + } + + } + var mvCommand = encodeURI("g_cmd=MOVE " + msgIds + "|"+room+"|0"); + new Ajax.Request('ajax_servcmd', { + method: 'post', parameters: mvCommand, onComplete: deleteAllMarkedRows()}); - } + } } function expandFloorEvent(event) { expandFloor(event.target); @@ -596,7 +667,7 @@ function ctdl_ts_getInnerText(el) { // Place a gradient loadscreen on an element, e.g to use before Ajax.updater function CtdlLoadScreen(elementid) { var elem = document.getElementById(elementid); -elem.innerHTML = "

  Loading....

"; +elem.innerHTML = "

  Loading....

"; } @@ -618,7 +689,7 @@ function PopOpenAddressBook(target_input) { } function PopulateAddressBookInnerDiv(which_addr_book, target_input) { - $('address_book_inner_div').innerHTML = "

  Loading....

"; + $('address_book_inner_div').innerHTML = "

  Loading....

"; p = 'which_addr_book=' + which_addr_book + '&target_input=' + target_input + '&r=' + CtdlRandomString(); @@ -848,40 +919,6 @@ function WCLog(msg) { } } -function fixMissingCSSTable(elems) { - if (elems[0] == null || elems[1] == null) { - return; - } - if (elems[0].getStyle("display") != "table-cell") { - var parentNode = elems[0].parentNode; - var table = document.createElement("table"); - table.style.width = "100%"; - var tbody = document.createElement("tbody"); - table.appendChild(tbody); - var tr = document.createElement("tr"); - tbody.appendChild(tr); - parentNode.appendChild(table); - for(var i=0; i 0) { - var viewportWidth = document.viewport.getWidth(); - var iconbarWidth = document.getElementById("iconbar").offsetWidth; - var contentDiv = document.getElementById("content"); - var newContentWidth = viewportWidth-iconbarWidth; - contentDiv.style.width = newContentWidth+"px"; - } -} - function RefreshSMTPqueueDisplay() { new Ajax.Updater('smtpqueue_inner_div', 'display_smtpqueue_inner_div', { method: 'get', @@ -889,11 +926,85 @@ function RefreshSMTPqueueDisplay() { } function DeleteSMTPqueueMsg(msgnum1, msgnum2) { + var p = encodeURI('g_cmd=DELE ' + msgnum1 + ',' + msgnum2); new Ajax.Request( 'ajax_servcmd', { method: 'post', - parameters: 'g_cmd=DELE ' + msgnum1 + ',' + msgnum2, + parameters: p, onComplete: RefreshSMTPqueueDisplay() } ); } + + +function ConfirmLogoff() { + new Ajax.Updater( + 'md-content', + 'do_template?template=confirmlogoff', + { + method: 'get', + evalScripts: true, + onSuccess: function(cl_success) { + toggleModal(1); + } + } + ); +} + + +function switch_to_lang(new_lang) { + p = 'push?url=' + encodeURI(window.location); + new Ajax.Request(p, { method: 'get' } ); + window.location = 'switch_language?lang=' + new_lang ; +} + + +function toggle_roomlist() +{ + /* WARNING: VILE, SLEAZY HACK. We determine the state of the box based on the image loaded. */ + if ( $('expand_roomlist').src.substring($('expand_roomlist').src.length - 12) == "collapse.gif" ) { + $('roomlist').style.display = 'none'; + $('expand_roomlist').src = 'static/webcit_icons/expand.gif'; + wstate=0; + } + + else { + $('roomlist').style.display = 'block'; + $('expand_roomlist').src = 'static/webcit_icons/collapse.gif'; + $('roomlist').innerHTML = ''; + FillRooms(IconBarRoomList); + wstate=1; + } + + // tell the server what I did + p = 'toggle_roomlist_expanded_state?wstate=' + wstate + '?rand=' + Math.random() ; + new Ajax.Request(p, { method: 'get' } ); + + return false; /* this prevents the click from registering as a roomlist button press */ +} + + +function toggle_wholist() +{ + /* WARNING: VILE, SLEAZY HACK. We determine the state of the box based on the image loaded. */ + if ( $('expand_wholist').src.substring($('expand_wholist').src.length - 12) == "collapse.gif" ) { + $('online_users').style.display = 'none'; + $('expand_wholist').src = 'static/webcit_icons/expand.gif'; + wstate=0; + } + + else { + $('online_users').style.display = 'block'; + $('expand_wholist').src = 'static/webcit_icons/collapse.gif'; + activate_iconbar_wholist_populat0r(); + wstate=1; + } + + // tell the server what I did + p = 'toggle_wholist_expanded_state?wstate=' + wstate + '?rand=' + Math.random() ; + new Ajax.Request(p, { method: 'get' } ); + + return false; /* this prevents the click from registering as a wholist button press */ +} + +