Monotone-Parent: 0c51f7b3e009fbf917f380938c76be5a98a288d0

Monotone-Revision: ecda7e1fc6092838f7b2b5c7a35d4cb7c1b2f11d

Monotone-Author: flachapelle@inverse.ca
Monotone-Date: 2007-11-23T20:36:49
Monotone-Branch: ca.inverse.sogo
maint-2.0.2
Francis Lachapelle 2007-11-23 20:36:49 +00:00
parent 5b4a14c031
commit 296eeec5a6
4 changed files with 109 additions and 40 deletions

View File

@ -101,6 +101,21 @@
</ul>
</div>
<div class="menu" id="messagesListMenu">
<ul>
<li><var:string label:value="Forward"/></li>
<li><!-- separator --></li>
<li><var:string label:value="Move To"/></li>
<li><var:string label:value="Copy To"/></li>
<li><var:string label:value="Label"/></li>
<li><var:string label:value="Mark"/></li>
<li><!-- separator --></li>
<li><var:string label:value="Print Preview"/></li>
<li><var:string label:value="Print..."/></li>
<li><var:string label:value="Delete Selected Messages"/></li>
</ul>
</div>
<div class="menu" id="messageContentMenu">
<ul>
<li><var:string label:value="Reply to Sender Only"/></li>

View File

@ -363,19 +363,30 @@ function onMailboxTreeItemClick(event) {
function _onMailboxMenuAction(menuEntry, error, actionName) {
var targetMailbox = menuEntry.mailbox.fullName();
var messages = new Array();
if (targetMailbox == Mailer.currentMailbox)
window.alert(labels[error]);
else {
var message;
if (document.menuTarget.tagName == "DIV")
message = Mailer.currentMessages[Mailer.currentMailbox];
// Menu called from message content view
messages.push(Mailer.currentMessages[Mailer.currentMailbox]);
else if (Object.isArray(document.menuTarget))
// Menu called from multiple selection in messages list view
messages = $(document.menuTarget).collect(function(row) {
return row.getAttribute("id").substr(4);
});
else
message = document.menuTarget.getAttribute("id").substr(4);
// Menu called from one selection in messages list view
messages.push(document.menuTarget.getAttribute("id").substr(4));
var urlstr = (URLForFolderID(Mailer.currentMailbox) + "/" + message
+ "/" + actionName + "?folder=" + targetMailbox);
triggerAjaxRequest(urlstr, folderRefreshCallback, Mailer.currentMailbox);
var url_prefix = URLForFolderID(Mailer.currentMailbox) + "/";
messages.each(function(msgid, i) {
var url = url_prefix + msgid + "/" + actionName
+ "?folder=" + targetMailbox;
triggerAjaxRequest(url, folderRefreshCallback,
((i == messages.size() - 1)?Mailer.currentMailbox:""));
});
}
}
@ -570,16 +581,15 @@ function quotasCallback(http) {
function onMessageContextMenu(event) {
var menu = $('messageListMenu');
Event.observe(menu, "hideMenu", onMessageContextMenuHide);
popupMenu(event, "messageListMenu", this);
var topNode = $('messageList');
var selectedNodes = topNode.getSelectedRows();
for (var i = 0; i < selectedNodes.length; i++)
selectedNodes[i].deselect();
topNode.menuSelectedRows = selectedNodes;
topNode.menuSelectedEntry = this;
this.select();
Event.observe(menu, "hideMenu", onMessageContextMenuHide);
if (selectedNodes.length > 1)
popupMenu(event, "messagesListMenu", selectedNodes);
else
popupMenu(event, "messageListMenu", this);
}
function onMessageContextMenuHide(event) {
@ -1355,7 +1365,7 @@ function updateMailboxMenus() {
menu.appendChild(menuEntry);
var mailbox = accounts[mailAccounts[i]];
var newSubmenuId = generateMenuForMailbox(mailbox,
key, mailboxActions[key]);
key, mailboxActions[key]);
submenuIds.push(newSubmenuId);
}
initMenu(menuDIV, submenuIds);
@ -1500,27 +1510,59 @@ function onMenuChangeToTrashFolder(event) {
}
function onMenuLabelNone() {
var rowId = document.menuTarget.getAttribute("id").substr(4);
var messageId = Mailer.currentMailbox + "/" + rowId;
var urlstr = ApplicationBaseURL + messageId + "/removeAllLabels";
triggerAjaxRequest(urlstr, messageFlagCallback,
{ mailbox: Mailer.currentMailbox, msg: rowId, label: null } );
var messages = new Array();
if (document.menuTarget.tagName == "DIV")
// Menu called from message content view
messages.push(Mailer.currentMessages[Mailer.currentMailbox]);
else if (Object.isArray(document.menuTarget))
// Menu called from multiple selection in messages list view
$(document.menuTarget).collect(function(row) {
messages.push(row.getAttribute("id").substr(4));
});
else
// Menu called from one selection in messages list view
messages.push(document.menuTarget.getAttribute("id").substr(4));
var url = ApplicationBaseURL + Mailer.currentMailbox + "/";
messages.each(function(id) {
triggerAjaxRequest(url + id + "/removeAllLabels",
messageFlagCallback,
{ mailbox: Mailer.currentMailbox, msg: id, label: null } );
});
}
function _onMenuLabelFlagX(flag) {
var flags = document.menuTarget.getAttribute("labels").split(" ");
var messages = new Hash();
var rowId = document.menuTarget.getAttribute("id").substr(4);
var messageId = Mailer.currentMailbox + "/" + rowId;
if (document.menuTarget.tagName == "DIV")
// Menu called from message content view
messages.set(Mailer.currentMessages[Mailer.currentMailbox],
$('tr#row_' + Mailer.currentMessages[Mailer.currentMailbox]).getAttribute("labels"));
else if (Object.isArray(document.menuTarget))
// Menu called from multiple selection in messages list view
$(document.menuTarget).collect(function(row) {
messages.set(row.getAttribute("id").substr(4),
row.getAttribute("labels"));
});
else
// Menu called from one selection in messages list view
messages.set(document.menuTarget.getAttribute("id").substr(4),
document.menuTarget.getAttribute("labels"));
var url = ApplicationBaseURL + Mailer.currentMailbox + "/";
messages.keys().each(function(id) {
var flags = messages.get(id).split(" ");
var operation = "add";
if (flags.indexOf("label" + flag) > -1)
operation = "remove";
var operation = "add";
if (flags.indexOf("label" + flag) > -1)
operation = "remove";
var urlstr = (ApplicationBaseURL + messageId
+ "/" + operation + "Label" + flag);
triggerAjaxRequest(urlstr, messageFlagCallback,
{ mailbox: Mailer.currentMailbox, msg: rowId,
label: operation + flag } );
triggerAjaxRequest(url + id + "/" + operation + "Label" + flag,
messageFlagCallback,
{ mailbox: Mailer.currentMailbox, msg: id,
label: operation + flag } );
});
}
function onMenuLabelFlag1() {
@ -1650,6 +1692,12 @@ function getMenus() {
"mark-menu", "-", null,
onMenuViewMessageSource, null,
null, onMenuDeleteMessage);
menus["messagesListMenu"] = new Array(onMenuForwardMessage,
"-", "moveMailboxMenu",
"copyMailboxMenu", "label-menu",
"mark-menu", "-",
null, null,
onMenuDeleteMessage);
menus["messageContentMenu"] = new Array(onMenuReplyToSender,
onMenuReplyToAll,
onMenuForwardMessage,

View File

@ -311,6 +311,7 @@ SPAN.toolbarButton:active
list-style-image: none;
margin: 0px;
padding: 0px;
padding-top: 1px;
border-top: 1px solid #fff;
border-left: 1px solid #fff;
border-right: 1px solid #9e9a92;
@ -319,8 +320,8 @@ SPAN.toolbarButton:active
.menu LI
{ padding-left: 1em;
padding-right: 1em;
padding-top: .2em;
padding-bottom: .2em;
padding-top: .15em;
padding-bottom: .15em;
margin: 0px;
width: auto;
white-space: nowrap; }

View File

@ -492,10 +492,6 @@ function onRowClick(event) {
var node = getTarget(event);
var rowIndex = null;
if (!Event.isLeftClick(event))
// Ignore non primary-click (ie right-click)
return true;
if (node.tagName == 'TD') {
node = node.parentNode; // select TR
rowIndex = node.rowIndex - $(node).up('table').down('thead').getElementsByTagName('tr').length;
@ -513,6 +509,11 @@ function onRowClick(event) {
}
var initialSelection = $(node.parentNode).getSelectedNodes();
if (initialSelection.length > 0 && !Event.isLeftClick(event))
// Ignore non primary-click (ie right-click)
return true;
if ((event.shiftKey == 1 || event.ctrlKey == 1)
&& (lastClickedRow >= 0)
&& (acceptMultiSelect(node.parentNode)
@ -763,10 +764,14 @@ function popupSubmenu(event) {
var menuTop = (parentNode.offsetTop - 1
+ this.offsetTop);
if (window.height()
< (menuTop + submenuNode.offsetHeight)
&& submenuNode.offsetHeight < window.height())
menuTop -= submenuNode.offsetHeight - this.offsetHeight - 4;
< (menuTop + submenuNode.offsetHeight))
if (submenuNode.offsetHeight < window.height())
menuTop = window.height() - submenuNode.offsetHeight;
else
menuTop = 0;
var menuLeft = (parentNode.offsetLeft + parentNode.offsetWidth - 3);
if (window.width()
< (menuLeft + submenuNode.offsetWidth))