Fix message labels handling

Selecting "none" from the label submenu on a multiple selection of
messages is now working. When changing the label of multiple messages,
the display is now properly updated.

Fixes #2902
This commit is contained in:
Francis Lachapelle committed 2014-08-29 15:39:06 -04:00
1 parent eaf815eae6
commit 1af52e6d6b
2 files changed
+10 -12

No files matched your search

+7 -10
View File
@@ -2440,15 +2440,15 @@ function onMenuToggleMessageRead(event) {
}
function onMenuLabelNone() {
var messages = new Array();
var messages = [];
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));
$(document.menuTarget).collect(function(rowID) {
messages.push(rowID.substr(4));
});
else
// Menu called from one selection in messages list view
@@ -2561,21 +2561,18 @@ function messageFlagCallback(http) {
var operation = data["label"];
if (operation) {
var labels = row.getAttribute("labels");
var flags;
var flags = [];
if (labels.length > 0)
flags = labels.split(" ");
else
flags = new Array();
if (operation.substr(0, 3) == "add")
flags.push("label" + operation.substr(3));
flags.push(operation.substr(3));
else {
var flag = "label" + operation.substr(6);
// Remove flag
var flag = operation.substr(6);
var idx = flags.indexOf(flag);
flags.splice(idx, 1);
}
row.writeAttribute("labels", flags.join(" "));
row.toggleClassName("_selected");
row.toggleClassName("_selected");
}
else
row.writeAttribute("labels", "");