]> err.no Git - scalable-opengroupware.org/blobdiff - UI/WebServerResources/MailerUI.js
git-svn-id: http://svn.opengroupware.org/SOGo/inverse/trunk@1302 d1b88da0-ebda-0310...
[scalable-opengroupware.org] / UI / WebServerResources / MailerUI.js
index 97a2a289e3113e4ec9e700453215c34630e82883..9e46418e59c419dc8bf9d343de10c41e10910571 100644 (file)
@@ -14,7 +14,8 @@ var Mailer = {
  currentMailboxType: "",
  currentMessages: {},
  maxCachedMessages: 20,
- cachedMessages: new Array()
+ cachedMessages: new Array(),
+ foldersStateTimer: false
 };
 
 var usersRightsWindowHeight = 320;
@@ -450,18 +451,20 @@ function openMailbox(mailbox, reload, idx) {
     Mailer.currentMailbox = mailbox;
     var url = ApplicationBaseURL + encodeURI(mailbox) + "/view?noframe=1";
     
-    if (!reload) {
+    if (!reload || idx) {
       var messageContent = $("messageContent");
       messageContent.update();
       lastClickedRow = -1; // from generic.js
     }
     
     var currentMessage;
-    if (!idx && !reload) {
+      
+    if (!idx) {
       currentMessage = Mailer.currentMessages[mailbox];
       if (currentMessage) {
-       loadMessage(currentMessage);
        url += '&pageforuid=' + currentMessage;
+       if (!reload)
+         loadMessage(currentMessage);
       }
     }
 
@@ -1254,7 +1257,7 @@ function initMailer(event) {
     initMailboxTree();
     initMessageCheckTimer();
   }
-
+  
   // Default sort options
   sorting["attribute"] = "date";
   sorting["ascending"] = false;
@@ -1434,6 +1437,7 @@ function onLoadMailboxesCallback(http) {
        updateMailboxTreeInPage();
        updateMailboxMenus();
        checkAjaxRequestsState();
+       getFoldersState();
       }
     }
   }
@@ -1482,6 +1486,45 @@ function buildMailboxes(accountName, encoded) {
   return account;
 }
 
+function getFoldersState() {
+  if (mailAccounts.length > 0) {
+    var urlstr =  ApplicationBaseURL + "foldersState";
+    triggerAjaxRequest(urlstr, getFoldersStateCallback);
+  }
+}
+
+function getFoldersStateCallback(http) {
+  if (http.readyState == 4
+      && http.status == 200) {
+    if (http.responseText.length > 0) {
+      // The response text is a JSOn representation
+      // of the folders that were left opened.
+      var data = http.responseText.evalJSON(true);
+      for (var i = 1; i < mailboxTree.aNodes.length; i++) {
+       if ($(data).indexOf(mailboxTree.aNodes[i].dataname) > 0)
+         // If the folder is found, open it
+         mailboxTree.o(i);
+      }
+    }
+  }
+  mailboxTree.autoSync();
+}
+
+function saveFoldersState() {
+  if (mailAccounts.length > 0) {
+    var foldersState = mailboxTree.getFoldersState();
+    var urlstr =  ApplicationBaseURL + "saveFoldersState" + "?expandedFolders=" + foldersState;
+    triggerAjaxRequest(urlstr, saveFoldersStateCallback);
+  }
+}
+
+function saveFoldersStateCallback(http) {
+  if (http.readyState == 4
+      && isHttpStatus204(http.status)) {
+    log ("folders state saved");
+  }
+}
+
 function onMenuCreateFolder(event) {
   var name = window.prompt(labels["Name :"], "");
   if (name && name.length > 0) {