var maxCachedMessages = 20;
var cachedMessages = new Array();
var currentMailbox = null;
+var currentMailboxType = "";
var usersRightsWindowHeight = 320;
var usersRightsWindowWidth = 400;
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;
}
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) {
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;
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;
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++;
$("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);
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"]
document.messageListAjaxRequest
= triggerAjaxRequest(url, messageListCallback,
- currentMessages[mailbox]);
+ currentMessage);
var quotasUrl = ApplicationBaseURL + mailbox + "/quotas";
document.quotasAjaxRequest
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);
}
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);
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 */
var handle = $("verticalDragHandle");
if (handle) {
handle.addInterface(SOGoDragHandlesInterface);
+ handle.leftMargin = 1;
handle.leftBlock=$("leftPanel");
handle.rightBlock=$("rightPanel");
}
}
}
+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) {
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, "-",
"-", "label-menu", "mark-menu",
"-",
null, onMenuViewMessageSource,
- null, null,
+ null, onPrintCurrentMessage,
onMenuDeleteMessage);
menus["label-menu"] = new Array(null, "-", null , null, null, null , null,
null);