ICAL: add conflict handling
[citadel.git] / webcit / static / wclib.js
index 8b9f83bf1429f0889f6115e4207a7a9f68fa4feb..9a159a112b509db88adfd702f5dd42e58d7cf41e 100644 (file)
@@ -1,24 +1,22 @@
 /*
  * JavaScript function library for WebCit.
  *
- * Copyright (c) 2005-2011 by the citadel.org team
+ * 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 as
- * published by the Free Software Foundation; either version 3 of the
- * License, or (at your option) any later version.
+ * 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.
  *
- * 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
+ * 
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-
 var browserType;
 var room_is_trash = 0;
 
@@ -56,8 +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 NetworkSynchronizeRoom(NodeName)
+{
+    var p;
 
+    p= encodeURI('g_cmd=NSYN ' + NodeName);
+    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)
@@ -157,7 +199,50 @@ function hide_imsg_popup() {
 
        document.poppedLayer.style.visibility = "hidden";
 }
+function remove_something(what_to_search, new_visibility) {
+       if (browserType == "gecko") {
+               document.poppedLayer = eval('document.getElementById(\'' + what_to_search + '\')');
+       }
+       else if (browserType == "ie") {
+               document.poppedLayer = eval('document.all[\'' + what_to_search + '\']');
+       }
+       else {
+               document.poppedLayer = eval('document.layers[\'`' + what_to_search + '\']');
+       }
+    if (document.poppedLayer!= null)
+       document.poppedLayer.innerHTML = "";
+}
+
+function unhide_imsg_popup() {
+       if (browserType == "gecko") {
+               document.poppedLayer = eval('document.getElementById(\'important_message\')');
+       }
+       else if (browserType == "ie") {
+               document.poppedLayer = eval('document.all[\'important_message\']');
+       }
+       else {
+               document.poppedLayer = eval('document.layers[\'`important_message\']');
+       }
+
+       document.poppedLayer.style.visibility = "visible";
+    setTimeout('hide_imsg_popup()', 5000);
+}
 
+function ajax_important_message(messagetext)
+{
+    if (browserType == "gecko") {
+       document.poppedLayer = eval('document.getElementById(\'important_message\')');
+    }
+    else if (browserType == "ie") {
+       document.poppedLayer = eval('document.all[\'important_message\']');
+    }
+    else {
+       document.poppedLayer = eval('document.layers[\'`important_message\']');
+    }
+    document.poppedLayer.style.visibility = "visible";
+    setTimeout('hide_imsg_popup()', 5000);
+    document.poppedLayer.innerHTML = messagetext;
+}
 
 // This function activates the ajax-powered recipient autocompleters on the message entry screen.
 function activate_entmsg_autocompleters() {
@@ -270,7 +355,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);
@@ -302,17 +387,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 = encodeURI("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 = "g_cmd=MOVE%20" + msgIds + "|"+encodeURIComponent(room)+"|0";
+             new Ajax.Request("ajax_servcmd", {
+                 parameters: mvCommand,
+                 method: 'post',
+             });
+             msgIds = "";
+         }
+
+      }
+      var mvCommand = "g_cmd=MOVE%20" + msgIds + "|"+encodeURIComponent(room)+"|0";
+      new Ajax.Request('ajax_servcmd', {
+         method: 'post',
          parameters: mvCommand,
          onComplete: deleteAllMarkedRows()});
-    } 
+  }
 }
 function expandFloorEvent(event) {
   expandFloor(event.target);
@@ -596,7 +690,7 @@ function PopOpenAddressBook(target_input) {
        p = 'target_input=' + target_input + '&r=' + CtdlRandomString();
        new Ajax.Updater(
                'address_book_popup_middle_div',
-               'display_address_book_middle_div',
+               'do_template?template=addressbook_list',
                {
                        method: 'get',
                        parameters: p,
@@ -606,18 +700,19 @@ function PopOpenAddressBook(target_input) {
 }
 
 function PopulateAddressBookInnerDiv(which_addr_book, target_input) {
-       $('address_book_inner_div').innerHTML = "<div align=center><br><table border=0 cellpadding=10 bgcolor=\"#ffffff\"><tr><td><img src=\"static/throbber.gif\" /><font color=\"#AAAAAA\">&nbsp;&nbsp;Loading....</font></td></tr></table><br></div>";
-       p = 'which_addr_book=' + which_addr_book
-         + '&target_input=' + target_input
-         + '&r=' + CtdlRandomString();
-       new Ajax.Updater(
-               'address_book_inner_div',
-               'display_address_book_inner_div',
-               {
-                       method: 'get',
-                       parameters: p
-               }
-       );
+    $('address_book_inner_div').innerHTML = "<div align=center><br><table border=0 cellpadding=10 bgcolor=\"#ffffff\"><tr><td><img src=\"static/throbber.gif\" /><font color=\"#AAAAAA\">&nbsp;&nbsp;Loading....</font></td></tr></table><br></div>";
+    p = 'which_addr_book=' + which_addr_book
+       + '&target_input=' + target_input
+       + '&r=' + CtdlRandomString()
+       + "&template=addressbook_namelist";
+    new Ajax.Updater(
+       'address_book_inner_div',
+       'do_template',
+       {
+           method: 'get',
+           parameters: p
+       }
+    );
 }
 
 // What happens when a contact is selected from the address book popup
@@ -837,8 +932,8 @@ function WCLog(msg) {
 }
 
 function RefreshSMTPqueueDisplay() {
-       new Ajax.Updater('smtpqueue_inner_div',
-       'display_smtpqueue_inner_div', { method: 'get',
+       new Ajax.Updater('mailqueue_list',
+       'dotskip?room=__CitadelSMTPspoolout__&view=11&ListOnly=yes', { method: 'get',
                parameters: Math.random() } );
 }
 
@@ -848,7 +943,7 @@ function DeleteSMTPqueueMsg(msgnum1, msgnum2) {
                'ajax_servcmd', {
                        method: 'post',
                        parameters: p,
-                       onComplete: RefreshSMTPqueueDisplay()
+                       onComplete: function(transport) { ajax_important_message(transport.responseText.substr(4)); RefreshSMTPqueueDisplay();}
                }
        );
 }
@@ -860,6 +955,7 @@ function ConfirmLogoff() {
                'do_template?template=confirmlogoff',
                {
                        method: 'get',
+                       evalScripts: true,
                        onSuccess: function(cl_success) {
                                toggleModal(1);
                        }
@@ -880,13 +976,13 @@ 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/expand.gif';
+               $('expand_roomlist').src = 'static/webcit_icons/expand.gif';
                wstate=0;
        }
 
        else {
                $('roomlist').style.display = 'block';
-               $('expand_roomlist').src = 'static/collapse.gif';
+               $('expand_roomlist').src = 'static/webcit_icons/collapse.gif';
                $('roomlist').innerHTML = '';
                FillRooms(IconBarRoomList);
                wstate=1;
@@ -905,13 +1001,13 @@ 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/expand.gif';
+               $('expand_wholist').src = 'static/webcit_icons/expand.gif';
                wstate=0;
        }
 
        else {
                $('online_users').style.display = 'block';
-               $('expand_wholist').src = 'static/collapse.gif';
+               $('expand_wholist').src = 'static/webcit_icons/collapse.gif';
                activate_iconbar_wholist_populat0r();
                wstate=1;
        }