]> err.no Git - scalable-opengroupware.org/blobdiff - UI/WebServerResources/MailerUI.js
git-svn-id: http://svn.opengroupware.org/SOGo/inverse/trunk@1163 d1b88da0-ebda-0310...
[scalable-opengroupware.org] / UI / WebServerResources / MailerUI.js
index c390268af2e5f3beafa500947383d5ece7c83362..1327b24542de522460fd8b3c3121c2db37fdb9b7 100644 (file)
@@ -6,6 +6,7 @@ var currentMessages = new Array();
 var maxCachedMessages = 20;
 var cachedMessages = new Array();
 var currentMailbox = null;
+var currentMailboxType = "";
 
 var usersRightsWindowHeight = 320;
 var usersRightsWindowWidth = 400;
@@ -18,9 +19,7 @@ function openMessageWindow(msguid, url) {
     wId += "SOGo_msg_" + msguid;
     markMailReadInWindow(window, msguid);
   }
-  var msgWin = window.open(url, wId,
-                          "width=680,height=520,resizable=1,scrollbars=1,toolbar=0,"
-                          + "location=0,directories=0,status=0,menubar=0,copyhistory=0");
+  var msgWin = openMailComposeWindow(url, wId);
   if (msguid) {
     msgWin.messageId = msguid;
     msgWin.messageURL = ApplicationBaseURL + currentMailbox + "/" + msguid;
@@ -31,12 +30,14 @@ function openMessageWindow(msguid, url) {
 }
 
 function onMessageDoubleClick(event) {
-  resetSelection(window);
-  var msguid = this.parentNode.id.substr(4);
-   
-  return openMessageWindow(msguid,
-                          ApplicationBaseURL + currentMailbox + "/"
-                          + msguid + "/popupview");
+  var action;
+
+  if (currentMailboxType == "draft")
+    action = "edit";
+  else
+    action = "popupview";
+
+  return openMessageWindowsForSelection(action, true);
 }
 
 function toggleMailSelect(sender) {
@@ -45,12 +46,6 @@ function toggleMailSelect(sender) {
   row.className = sender.checked ? "tableview_selected" : "tableview";
 }
 
-function clearSearch(sender) {
-  var searchField = window.$("search");
-  if (searchField) searchField.value="";
-  return true;
-}
-
 function openAddressbook(sender) {
   var urlstr;
    
@@ -125,40 +120,28 @@ function markMailReadInWindow(win, msguid) {
   return markMailInWindow(win, msguid, true);
 }
 
-/* main window */
-
-function reopenToRemoveLocationBar() {
-  // we cannot really use this, see below at the close comment
-  if (window.locationbar && window.locationbar.visible) {
-    newwin = window.open(window.location.href, "SOGo",
-                        "width=800,height=600,resizable=1,scrollbars=1," +
-                        "toolbar=0,location=0,directories=0,status=0," + 
-                        "menubar=0,copyhistory=0");
-    if (newwin) {
-      window.close(); // this does only work for windows opened by scripts!
-      newwin.focus();
-      return true;
-    }
-    return false;
-  }
-  return true;
-}
-
 /* mail list reply */
 
-function openMessageWindowsForSelection(action) {
+function openMessageWindowsForSelection(action, firstOnly) {
   if (document.body.hasClassName("popup"))
     win = openMessageWindow(window.messageId,
-                           window.messageURL + "/" + action /* url */);
+                           window.messageURL + "/" + action);
   else {
     var messageList = $("messageList");
     var rows = messageList.getSelectedRowsId();
-    var idset = "";
-    for (var i = 0; i < rows.length; i++)
-      win = openMessageWindow(rows[i].substr(4)        /* msguid */,
-                             ApplicationBaseURL + currentMailbox
-                             + "/" + rows[i].substr(4)
-                             + "/" + action /* url */);
+    if (rows.length > 0) {
+      if (firstOnly)
+       openMessageWindow(rows[0].substr(4),
+                         ApplicationBaseURL + currentMailbox
+                         + "/" + rows[0].substr(4)
+                         + "/" + action);
+      else
+       for (var i = 0; i < rows.length; i++)
+         openMessageWindow(rows[i].substr(4),
+                           ApplicationBaseURL + currentMailbox
+                           + "/" + rows[i].substr(4)
+                           + "/" + action);
+    }
   }
 
   return false;
@@ -248,7 +231,7 @@ function uixDeleteSelectedMessages(sender) {
     var messageId = currentMailbox + "/" + rowId;
     url = ApplicationBaseURL + messageId + "/trash?jsonly=1";
     http = createHTTPClient();
-    http.open("GET", url, false /* not async */);
+    http.open("POST", url, false /* not async */);
     http.send("");
     if (http.status != 200) { /* request failed */
       failCount++;
@@ -348,13 +331,13 @@ function onMailboxTreeItemClick(event) {
   $("searchValue").value = "";
   initCriteria();
 
-  var datatype = this.parentNode.getAttribute("datatype");
-  if (datatype == "account" || datatype == "additional") {
+  currentMailboxType = this.parentNode.getAttribute("datatype");
+  if (currentMailboxType == "account" || currentMailboxType == "additional") {
     currentMailbox = mailbox;
     $("messageContent").innerHTML = "";
     var body = $("messageList").tBodies[0];
-    for (var i = body.rows.length - 1; i > 0; i--)
-      body.deleteRow(i);
+    for (var i = body.rows.length; i > 0; i--)
+      body.deleteRow(i-1);
   }
   else
     openMailbox(mailbox);
@@ -378,22 +361,40 @@ function refreshMailbox() {
   return false;
 }
 
+function onComposeMessage() {
+  var topWindow = getTopWindow();
+  if (topWindow)
+    topWindow.composeNewMessage();
+
+  return false;
+}
+
+function composeNewMessage() {
+  var account = currentMailbox.split("/")[1];
+  var url = ApplicationBaseURL + "/" + account + "/compose";
+  openMailComposeWindow(url);
+}
+
 function openMailbox(mailbox, reload, idx) {
   if (mailbox != currentMailbox || reload) {
     currentMailbox = mailbox;
     var url = ApplicationBaseURL + mailbox + "/view?noframe=1";
     var messageContent = $("messageContent");
     messageContent.innerHTML = '';
-      
-    if (currentMessages[mailbox]) {
-      loadMessage(currentMessages[mailbox]);
-      url += '&pageforuid=' + currentMessages[mailbox];
+
+    var currentMessage;
+    if (!idx) {
+      currentMessage = currentMessages[mailbox];
+      if (currentMessage) {
+       loadMessage(currentMessage);
+       url += '&pageforuid=' + currentMessage;
+      }
     }
 
     var searchValue = search["value"];
     if (searchValue && searchValue.length > 0)
       url += ("&search=" + search["criteria"]
-             + "&value=" + searchValue);
+             + "&value=" + escape(searchValue));
     var sortAttribute = sorting["attribute"];
     if (sortAttribute && sortAttribute.length > 0)
       url += ("&sort=" + sorting["attribute"]
@@ -418,7 +419,7 @@ function openMailbox(mailbox, reload, idx) {
 
     document.messageListAjaxRequest
       = triggerAjaxRequest(url, messageListCallback,
-                          currentMessages[mailbox]);
+                          currentMessage);
 
     var quotasUrl = ApplicationBaseURL + mailbox + "/quotas";
     document.quotasAjaxRequest
@@ -675,12 +676,20 @@ function configureLinksInMessage() {
     else
       Event.observe(anchors[i], "click",
                    onMessageAnchorClick);
+
+  var editDraftButton = $("editDraftButton");
+  if (editDraftButton)
+    Event.observe(editDraftButton, "click", onMessageEditDraft);
 }
 
 function onMessageContentMenu(event) {
   popupMenu(event, 'messageContentMenu', this);
 }
 
+function onMessageEditDraft(event) {
+  return openMessageWindowsForSelection("edit", true);
+}
+
 function onEmailAddressClick(event) {
   popupMenu(event, 'addressMenu', this);
 }
@@ -791,9 +800,7 @@ function onMenuViewMessageSource(event) {
   if (rows.length > 0) {
     var url = (ApplicationBaseURL + currentMailbox + "/"
               + rows[0].substr(4) + "/viewsource");
-    window.open(url, "",
-               "width=680,height=520,resizable=1,scrollbars=1,toolbar=0,"
-               + "location=0,directories=0,status=0,menubar=0,copyhistory=0");
+    openMailComposeWindow(url);
   }
 
   preventDefault(event);
@@ -810,10 +817,7 @@ function newContactFromEmail(event) {
       var url = UserFolderURL + "Contacts/new?contactEmail=" + email;
       if (c_name)
        url += "&contactFN=" + c_name;
-      w = window.open(url, null,
-                      "width=546,height=490,resizable=1,scrollbars=1,toolbar=0,"
-                      + "location=0,directories=0,status=0,menubar=0,copyhistory=0");
-      w.focus();
+      openContactWindow(url);
     }
 
   return false; /* stop following the link */
@@ -1000,6 +1004,7 @@ function configureDragHandles() {
   var handle = $("verticalDragHandle");
   if (handle) {
     handle.addInterface(SOGoDragHandlesInterface);
+    handle.leftMargin = 1;
     handle.leftBlock=$("leftPanel");
     handle.rightBlock=$("rightPanel");
   }
@@ -1282,10 +1287,18 @@ function onMenuDeleteFolder(event) {
   }
 }
 
+function onMenuExpungeFolder(event) {
+  var folderID = document.menuTarget.getAttribute("dataname");
+  var urlstr = URLForFolderID(folderID) + "/expunge";
+
+  triggerAjaxRequest(urlstr, folderRefreshCallback, folderID);
+}
+
 function onMenuEmptyTrash(event) {
   var folderID = document.menuTarget.getAttribute("dataname");
   var urlstr = URLForFolderID(folderID) + "/emptyTrash";
-  triggerAjaxRequest(urlstr, folderOperationCallback);
+
+  triggerAjaxRequest(urlstr, folderRefreshCallback, folderID);
 }
 
 function folderOperationCallback(http) {
@@ -1296,21 +1309,34 @@ function folderOperationCallback(http) {
     window.alert(labels["Operation failed"].decodeEntities());
 }
 
+function folderRefreshCallback(http) {
+  if (http.readyState == 4
+      && http.status == 204) {
+    var oldMailbox = http.callbackData;
+    if (oldMailbox == currentMailbox)
+      refreshCurrentFolder();
+  }
+  else
+    window.alert(labels["Operation failed"].decodeEntities());
+}
+
 function getMenus() {
   var menus = {}
   menus["accountIconMenu"] = new Array(null, null, onMenuCreateFolder, null,
                                       null, null);
   menus["inboxIconMenu"] = new Array(null, null, null, "-", null,
-                                    onMenuCreateFolder, null, "-", null,
+                                    onMenuCreateFolder, onMenuExpungeFolder,
+                                    "-", null,
                                     onMenuSharing);
   menus["trashIconMenu"] = new Array(null, null, null, "-", null,
-                                    onMenuCreateFolder, null,
+                                    onMenuCreateFolder, onMenuExpungeFolder,
                                     onMenuEmptyTrash, "-", null,
                                     onMenuSharing);
   menus["mailboxIconMenu"] = new Array(null, null, null, "-", null,
                                       onMenuCreateFolder,
                                       onMenuRenameFolder,
-                                      null, onMenuDeleteFolder, "-", null,
+                                      onMenuExpungeFolder,
+                                      onMenuDeleteFolder, "-", null,
                                       onMenuSharing);
   menus["addressMenu"] = new Array(newContactFromEmail, newEmailTo, null);
   menus["messageListMenu"] = new Array(onMenuOpenMessage, "-",
@@ -1330,7 +1356,7 @@ function getMenus() {
                                          "-", "label-menu", "mark-menu",
                                          "-",
                                          null, onMenuViewMessageSource,
-                                         null, null,
+                                         null, onPrintCurrentMessage,
                                          onMenuDeleteMessage);
   menus["label-menu"] = new Array(null, "-", null , null, null, null , null,
                                  null);