X-Git-Url: https://code.citadel.org/?p=citadel.git;a=blobdiff_plain;f=webcit%2Fstatic%2Fwclib.js;h=e8c0c4ee72c2aa1cd2df3f9e8132c02c284d9552;hp=622e92005dbc10d25094859a7580022f6e9d060b;hb=fc08ae6465b6da1d9008ce4b20b3cc2c2a5781af;hpb=3e14f31738c6a9ede5f026b6de43bcd21197a06d diff --git a/webcit/static/wclib.js b/webcit/static/wclib.js index 622e92005..e8c0c4ee7 100644 --- a/webcit/static/wclib.js +++ b/webcit/static/wclib.js @@ -1,9 +1,22 @@ -// -// $Id$ -// -// JavaScript function library for WebCit. -// -// +/* + * JavaScript function library for WebCit. + * + * Copyright (c) 2005-2011 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 as + * published by the Free Software Foundation; either version 3 of the + * License, or (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ var browserType; @@ -11,17 +24,12 @@ 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); var today = new Date(); var wc_log = ""; -var is_ie6 = false; if (document.all) {browserType = "ie"} if (window.navigator.userAgent.toLowerCase().match("gecko")) { browserType= "gecko"; @@ -29,12 +37,8 @@ if (window.navigator.userAgent.toLowerCase().match("gecko")) { var ns6=document.getElementById&&!document.all; Event.observe(window, 'load', ToggleTaskDateOrNoDateActivate); Event.observe(window, 'load', taskViewActivate); -Event.observe(window, 'load', fixbanner); -Event.observe(window, 'load', resizeViewport); -Event.observe(window, 'resize', resizeViewport); //document.observe("dom:loaded", setupPrefEngine); document.observe("dom:loaded", setupIconBar); -document.observe('dom:loaded', function() { if (!!document.getElementById("ib_chat_launch")) { $('ib_chat_launch').observe('click', launchChat); } }); function CtdlRandomString() { return((Math.random()+'').substr(3)); } @@ -52,6 +56,19 @@ function strcmp ( str1, str2 ) { return ( ( str1 == str2 ) ? 0 : ( ( str1 > str2 ) ? 1 : -1 ) ); } + + +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=wholist_section', {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 IconBarRoomList() { + +function GenericTreeRoomList(roomlist) { var currentExpanded = ctdlLocalPrefs.readPref("rooms_expanded"); var curRoomName = ""; if (document.getElementById("rmname")) { @@ -216,7 +202,6 @@ function IconBarRoomList() { } currentDropTargets = new Array(); var iconbar = document.getElementById("iconbar"); - roomlist = document.getElementById("roomlist"); var ul = document.createElement("ul"); roomlist.appendChild(ul); // Add mailbox, because they are special @@ -232,46 +217,60 @@ function IconBarRoomList() { mailboxLI.appendChild(mailboxUL); var mailboxRooms = GetMailboxRooms(); for(var i=0; i 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); @@ -507,8 +515,14 @@ function NotesResizeMouseMove(evt) { divTop = parseInt(d.style.height); divLeft = parseInt(d.style.width); - d.style.height = (divTop + y_increment) + 'px'; - d.style.width = (divLeft + x_increment) + 'px'; + newHeight = divTop + y_increment; + if (newHeight < 50) newHeight = 50; + + newWidth = divLeft + x_increment; + if (newWidth < 50) newWidth = 50; + + d.style.height = newHeight + 'px'; + d.style.width = newWidth + 'px'; saved_x = x; saved_y = y; @@ -579,7 +593,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....

"; } @@ -601,7 +615,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(); @@ -647,52 +661,42 @@ function HandleRSVP(question_divname, title_divname, msgnum, cal_partnum, sc) { // TODO: Collapse into one function function toggleTaskDtStart(event) { var checkBox = $('nodtstart'); - var checkBoxTime = $('dtstart_time'); - dtStart = document.getElementById("dtstart"); - dtStartHour = document.getElementById("dtstart_hour"); - dtStartMinute = document.getElementById("dtstart_minute"); + var checkBoxTime = $('dtstart_time_assoc'); + var dtstart = document.getElementById("dtstart"); + var dtstart_date = document.getElementById("dtstart_date"); + var dtstart_time = document.getElementById("dtstart_time"); if (checkBox.checked) { - dtStart.disabled = true; - dtStartHour.disabled = true; - dtStartMinute.disabled = true; - dtStart.style.textDecoration = "line-through"; + dtstart_date.style.visibility = "hidden"; + dtstart_time.style.visibility = "hidden"; } else { - dtStart.disabled = false; if (checkBoxTime.checked) { - dtStartHour.disabled = false; - dtStartMinute.disabled = false; + dtstart_time.style.visibility = "visible"; } else { - dtStartHour.disabled = true; - dtStartMinute.disabled = true; + dtstart_time.style.visibility = "hidden"; } - dtStart.style.textDecoration = ""; - if (dtStart.value.length == 0) - dtStart.dpck._initCurrentDate(); + dtstart_date.style.visibility = "visible"; + if (dtstart.value.length == 0) + dtstart.dpck._initCurrentDate(); } } function toggleTaskDue(event) { var checkBox = $('nodue'); - var checkBoxTime = $('due_time'); - dueField = document.getElementById("due"); - dueFieldHour = document.getElementById("due_hour"); - dueFieldMinute = document.getElementById("due_minute"); + var checkBoxTime = $('due_time_assoc'); + var due = document.getElementById("due"); + var due_date = document.getElementById("due_date"); + var due_time = document.getElementById("due_time"); if (checkBox.checked) { - dueField.disabled = true; - dueFieldHour.disabled = true; - dueFieldMinute.disabled = true; - dueField.style.textDecoration = "line-through"; + due_date.style.visibility = "hidden"; + due_time.style.visibility = "hidden"; } else { - dueField.disabled = false; if (checkBoxTime.checked) { - dueFieldHour.disabled = false; - dueFieldMinute.disabled = false; + due_time.style.visibility = "visible"; } else { - dueFieldHour.disabled = true; - dueFieldMinute.disabled = true; + due_time.style.visibility = "hidden"; } - dueField.style.textDecoration = ""; - if (dueField.value.length == 0) - dueField.dpck._initCurrentDate(); + due_date.style.visibility = "visible"; + if (due.value.length == 0) + due.dpck._initCurrentDate(); } } function ToggleTaskDateOrNoDateActivate(event) { @@ -701,9 +705,9 @@ function ToggleTaskDateOrNoDateActivate(event) { toggleTaskDtStart(null); toggleTaskDue(null); $('nodtstart').observe('click', toggleTaskDtStart); - $('dtstart_time').observe('click', toggleTaskDtStart); + $('dtstart_time_assoc').observe('click', toggleTaskDtStart); $('nodue').observe('click', toggleTaskDue); - $('due_time').observe('click', toggleTaskDue); + $('due_time_assoc').observe('click', toggleTaskDue); } } function TaskViewGatherCategoriesFromTable() { @@ -722,13 +726,14 @@ function attachDatePicker(relative) { } function eventEditAllDay() { var allDayCheck = document.getElementById("alldayevent"); - var dtend= document.getElementById("dtendcell"); + var dtend_time = document.getElementById("dtend_time"); + var dtstart_time = document.getElementById("dtstart_time"); if(allDayCheck.checked) { - //dtend.disabled = true; - dtend.style.textDecoration = "line-through"; + dtstart_time.style.visibility = "hidden"; + dtend_time.style.visibility = "hidden"; } else { - //dtend_day.disabled = false; - dtend.style.textDecoration = ""; + dtstart_time.style.visibility = "visible"; + dtend_time.style.visibility = "visible"; } } @@ -840,88 +845,92 @@ 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 switch_to_lang(new_lang) { + p = 'push?url=' + encodeURI(window.location); + new Ajax.Request(p, { method: 'get' } ); + window.location = 'switch_language?lang=' + new_lang ; } -/** Attempt to stop overflowing in x-axis in IE6 */ -function resizeViewport() { - var documentWidth = 0; - var viewportWidth = document.viewport.getWidth(); - var iconbar = $('iconbar'); - var global = $('global'); - if (iconbar == null || global == null || document.documentElement == null) { - return; - } - if (typeof window.offsetWidth != 'undefined') { - documentWidth = window.offsetWidth; - } else { - documentWidth = document.documentElement.offsetWidth; - } - if (documentWidth > viewportWidth) { - WCLog("resizeViewport"); - document.documentElement.style.width = viewportWidth+"px"; - document.documentElement.style.overflowX = "hidden"; - //viewportWidth = 0.98 * viewportWidth; - var newIconBarSize = 0.16 * viewportWidth; - var newContentSize = viewportWidth - newIconBarSize; - iconbar.style.width = newIconBarSize+"px"; - global.style.width = newContentSize+"px"; - } + + +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 */ } + +