From 8a1e8056578e8a0106d05dcd5aabb27906636083 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Mon, 23 Aug 2010 15:32:52 +0000 Subject: [PATCH] Monotone-Parent: f6c6e91570c47d1f21a72f6e6379690131692fff Monotone-Revision: b4f7cd6dfc31765ed9331020a8d070d54d8d0549 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2010-08-23T15:32:52 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 15 ++ UI/Templates/MailerUI/UIxMailMainFrame.wox | 6 +- UI/WebServerResources/MailerUI.js | 160 +++++++++++++++------ 3 files changed, 134 insertions(+), 47 deletions(-) diff --git a/ChangeLog b/ChangeLog index dfc208eb6..717f27c30 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,18 @@ +2010-08-23 Wolfgang Sourdeau + + * UI/WebServerResources/MailerUI.js: (mailListToggleMessagesRead): + new method, spun from "mailListMarkMessage", which is basically + replaces in a more generic way by acting on all selected messages + in the msg list. + (mailListToggleMessagesFlagged): same as above for + "mailListFlagMessageToggle". + (onMenuToggleMessageRead, onMenuToggleMessageFlag): new menu + callback methods. + (onMarkMenuPrepareVisibility): new visibility method for the + "mark-menu". + (getMenus): activated the "mark as read" and "toggle flag" menu + options of the "mark menu". + 2010-08-20 Wolfgang Sourdeau * SoObjects/SOGo/SOGoDAVAuthenticator.m (-checkLogin:password:): diff --git a/UI/Templates/MailerUI/UIxMailMainFrame.wox b/UI/Templates/MailerUI/UIxMailMainFrame.wox index 1d6a93e43..70c0900fd 100644 --- a/UI/Templates/MailerUI/UIxMailMainFrame.wox +++ b/UI/Templates/MailerUI/UIxMailMainFrame.wox @@ -175,17 +175,13 @@ diff --git a/UI/WebServerResources/MailerUI.js b/UI/WebServerResources/MailerUI.js index 2171b3312..241bdcf08 100644 --- a/UI/WebServerResources/MailerUI.js +++ b/UI/WebServerResources/MailerUI.js @@ -203,29 +203,43 @@ function openMessageWindowsForSelection(action, firstOnly) { } /* Triggered when clicking on the read/unread dot of a message row */ +function mailListToggleMessagesRead() { + var messageList = $("messageListBody"); + if (messageList) { + var selectedRows = messageList.getSelectedRows(); + if (selectedRows.length > 0) { + var row = selectedRows[0]; + var action; + var markread; + if (row.hasClassName("mailer_unreadmail")) { + action = 'markMessageRead'; + markread = true; + } + else { + action = 'markMessageUnread'; + markread = false; + } + + for (var i = 0; i < selectedRows.length; i++) { + row = selectedRows[i]; + var msguid = row.id.split('_')[1]; + markMailInWindow(window, msguid, markread); + + var url = ApplicationBaseURL + encodeURI(Mailer.currentMailbox) + "/" + + msguid + "/" + action; + + var data = { "msguid": msguid }; + triggerAjaxRequest(url, mailListMarkMessageCallback, data); + } + } + } +} + function mailListMarkMessage(event) { - var msguid = this.id.split('_')[1]; - var row = $(this).up('TR'); - var action; - var markread; - if (row.hasClassName("mailer_unreadmail")) { - action = 'markMessageRead'; - markread = true; - } - else { - action = 'markMessageUnread'; - markread = false; - } - - markMailInWindow(window, msguid, markread); - - var url = ApplicationBaseURL + encodeURI(Mailer.currentMailbox) + "/" - + msguid + "/" + action; - - var data = { "msguid": msguid }; - triggerAjaxRequest(url, mailListMarkMessageCallback, data); + mailListToggleMessagesRead(); preventDefault(event); + return false; } @@ -242,28 +256,42 @@ function mailListMarkMessageCallback(http) { } } - -function mailListFlagMessageToggle (e) { - var msguid = this.ancestors ().first ().id.split ("_")[1]; - var img = this.childElements ().first (); - - var action = "markMessageFlagged"; - var flagged = true; - if (img.hasClassName ("messageIsFlagged")) { - action = "markMessageUnflagged"; - flagged = false; - } - - flagMailInWindow(window, msguid, flagged); - - var url = ApplicationBaseURL + encodeURI(Mailer.currentMailbox) + "/" - + msguid + "/" + action; - var data = { "msguid": msguid }; - - triggerAjaxRequest(url, mailListFlagMessageToggleCallback, data); +function mailListFlagMessageToggle(e) { + mailListToggleMessagesFlagged(); } -function mailListFlagMessageToggleCallback (http) { +function mailListToggleMessagesFlagged() { + var messageList = $("messageListBody"); + if (messageList) { + var selectedRows = messageList.getSelectedRows(); + if (selectedRows.length > 0) { + var row = selectedRows[0]; + var firstTd = row.childElements().first(); + var img = firstTd.childElements().first(); + + var action = "markMessageFlagged"; + var flagged = true; + if (img.hasClassName("messageIsFlagged")) { + action = "markMessageUnflagged"; + flagged = false; + } + + for (var i = 0; i < selectedRows.length; i++) { + row = selectedRows[i]; + var msguid = row.id.split("_")[1]; + flagMailInWindow(window, msguid, flagged); + + var url = ApplicationBaseURL + encodeURI(Mailer.currentMailbox) + "/" + + msguid + "/" + action; + var data = { "msguid": msguid }; + + triggerAjaxRequest(url, mailListToggleMessageFlaggedCallback, data); + } + } + } +} + +function mailListToggleMessageFlaggedCallback(http) { if (isHttpStatus204(http.status)) { var data = http.callbackData; Mailer.dataTable.invalidate(data["msguid"], true); @@ -2104,6 +2132,10 @@ function onMenuChangeToTrashFolder(event) { return _onMenuChangeToXXXFolder(event, "Trash"); } +function onMenuToggleMessageRead(event) { + mailListToggleMessagesRead(); +} + function onMenuLabelNone() { var messages = new Array(); @@ -2180,6 +2212,10 @@ function onMenuLabelFlag5() { _onMenuLabelFlagX(5); } +function onMenuToggleMessageFlag(event) { + mailListToggleMessagesFlagged(); +} + function folderOperationCallback(http) { if (http.readyState == 4 && isHttpStatus204(http.status)) @@ -2322,6 +2358,40 @@ function onLabelMenuPrepareVisibility() { lis[0].addClassName("_chosen"); } +function onMarkMenuPrepareVisibility() { + var messageList = $("messageListBody"); + if (messageList) { + var nodes = messageList.down("TBODY").getSelectedNodes(); + + var isRead = false; + var isFlagged = false; + + if (nodes.length > 0) { + var row = nodes[0]; + var firstTd = row.childElements().first(); + var img = firstTd.childElements().first(); + isFlagged = img.hasClassName ("messageIsFlagged"); + isRead = !row.hasClassName("mailer_unreadmail"); + } + + var menuUL = this.childElements()[0]; + var menuLIS = menuUL.childElements(); + + if (isRead) { + menuLIS[0].addClassName("_chosen"); + } + else { + menuLIS[0].removeClassName("_chosen"); + } + if (isFlagged) { + menuLIS[5].addClassName("_chosen"); + } + else { + menuLIS[5].removeClassName("_chosen"); + } + } +} + function saveAs(event) { var messageList = $("messageListBody").down("TBODY"); var rows = messageList.getSelectedNodes(); @@ -2408,8 +2478,9 @@ function getMenus() { "label-menu": [ onMenuLabelNone, "-", onMenuLabelFlag1, onMenuLabelFlag2, onMenuLabelFlag3, onMenuLabelFlag4, onMenuLabelFlag5 ], - "mark-menu": [ null, null, null, null, "-", null, "-", - null, null, null ], + "mark-menu": [ onMenuToggleMessageRead, null, null, null, "-", onMenuToggleMessageFlag ], +// , "-", +// null, null, null ], searchMenu: [ setSearchCriteria, setSearchCriteria, setSearchCriteria, setSearchCriteria, @@ -2421,6 +2492,11 @@ function getMenus() { labelMenu.prepareVisibility = onLabelMenuPrepareVisibility; } + var markMenu = $("mark-menu"); + if (markMenu) { + markMenu.prepareVisibility = onMarkMenuPrepareVisibility; + } + var listMenus = [ "messageListMenu", "messagesListMenu", "messageContentMenu" ]; for (var i = 0; i < listMenus.length; i++) { var menu = $(listMenus[i]);