diff --git a/NEWS b/NEWS
index 533889e6b..b19f0cb2b 100644
--- a/NEWS
+++ b/NEWS
@@ -2,7 +2,7 @@
------------------
Enhancements
- -
+ - [web] added Junk handling feature from v2
Bug fixes
- [web] handle birthday dates before 1970
diff --git a/SoObjects/Mailer/SOGoMailFolder.m b/SoObjects/Mailer/SOGoMailFolder.m
index 680d360d3..b9497d044 100644
--- a/SoObjects/Mailer/SOGoMailFolder.m
+++ b/SoObjects/Mailer/SOGoMailFolder.m
@@ -857,7 +857,9 @@ _compareFetchResultsByMODSEQ (id entry1, id entry2, void *data)
body = [[[NGMimeMultipartBody alloc] initWithPart: messageToSend] autorelease];
}
- mailObject = [self lookupName: [uids objectAtIndex: i] inContext: context acquire: NO];
+ mailObject = [self lookupName: [NSString stringWithFormat: @"%@", [uids objectAtIndex: i]]
+ inContext: context
+ acquire: NO];
// We skip emails that might have disappeared before we were able
// to perform the action
diff --git a/UI/MailerUI/English.lproj/Localizable.strings b/UI/MailerUI/English.lproj/Localizable.strings
index d8b4ed296..56f3070c7 100644
--- a/UI/MailerUI/English.lproj/Localizable.strings
+++ b/UI/MailerUI/English.lproj/Localizable.strings
@@ -276,6 +276,10 @@
"Set as Drafts" = "Set as Drafts";
"Set as Sent" = "Set as Sent";
"Set as Trash" = "Set as Trash";
+
+/* Set the folder as the one holding Junk mails */
+"Set as Junk" = "Set as Junk";
+
"Sort" = "Sort";
"Descending Order" = "Descending Order";
"Back" = "Back";
@@ -291,4 +295,4 @@
"More search options" = "More search options";
"Your email has been saved" = "Your email has been saved";
"Your email has been sent" = "Your email has been sent";
-"Folder compacted" = "Folder compacted";
\ No newline at end of file
+"Folder compacted" = "Folder compacted";
diff --git a/UI/Templates/MailerUI/UIxMailFolderTemplate.wox b/UI/Templates/MailerUI/UIxMailFolderTemplate.wox
index cfdc9ca19..6465668c2 100644
--- a/UI/Templates/MailerUI/UIxMailFolderTemplate.wox
+++ b/UI/Templates/MailerUI/UIxMailFolderTemplate.wox
@@ -155,6 +155,10 @@
delete
+
+ thumb_down
+ thumb_up
+
more_vert
diff --git a/UI/Templates/MailerUI/UIxMailMainFrame.wox b/UI/Templates/MailerUI/UIxMailMainFrame.wox
index b1e2a7055..7325a31db 100644
--- a/UI/Templates/MailerUI/UIxMailMainFrame.wox
+++ b/UI/Templates/MailerUI/UIxMailMainFrame.wox
@@ -172,6 +172,11 @@
+
+
+
+
+
diff --git a/UI/WebServerResources/js/Mailer/Account.service.js b/UI/WebServerResources/js/Mailer/Account.service.js
index cc3c8f8c4..ffde913cb 100644
--- a/UI/WebServerResources/js/Mailer/Account.service.js
+++ b/UI/WebServerResources/js/Mailer/Account.service.js
@@ -195,8 +195,7 @@
};
mailbox = _find(this.$mailboxes);
- console.debug(mailbox);
- console.debug(this.specialMailboxes);
+ return mailbox;
};
/**
diff --git a/UI/WebServerResources/js/Mailer/Mailbox.service.js b/UI/WebServerResources/js/Mailer/Mailbox.service.js
index f58f68eb2..9896d9092 100644
--- a/UI/WebServerResources/js/Mailer/Mailbox.service.js
+++ b/UI/WebServerResources/js/Mailer/Mailbox.service.js
@@ -576,6 +576,20 @@
});
};
+ /**
+ * @function $markOrUnMarkMessagesAsJunk
+ * @memberof Mailbox.prototype
+ * @desc Mark messages as junk/not junk
+ * @return a promise of the HTTP operation
+ */
+ Mailbox.prototype.$markOrUnMarkMessagesAsJunk = function(messages) {
+ var _this = this, uids;
+ var method = (this.type == 'junk' ? 'markMessagesAsNotJunk' : 'markMessagesAsJunk');
+ uids = _.pluck(messages, 'uid');
+
+ return Mailbox.$$resource.post(this.id, method, {uids: uids});
+ };
+
/**
* @function $copyMessages
* @memberof Mailbox.prototype
diff --git a/UI/WebServerResources/js/Mailer/MailboxController.js b/UI/WebServerResources/js/Mailer/MailboxController.js
index e24166586..7688bfe99 100644
--- a/UI/WebServerResources/js/Mailer/MailboxController.js
+++ b/UI/WebServerResources/js/Mailer/MailboxController.js
@@ -23,6 +23,7 @@
vm.toggleMessageSelection = toggleMessageSelection;
vm.unselectMessages = unselectMessages;
vm.confirmDeleteSelectedMessages = confirmDeleteSelectedMessages;
+ vm.markOrUnMarkMessagesAsJunk = markOrUnMarkMessagesAsJunk;
vm.copySelectedMessages = copySelectedMessages;
vm.moveSelectedMessages = moveSelectedMessages;
vm.saveSelectedMessages = saveSelectedMessages;
@@ -69,6 +70,28 @@
});
}
+ function markOrUnMarkMessagesAsJunk() {
+ var moveSelectedMessage = false;
+ var selectedMessages = _.filter(vm.selectedFolder.$messages, function(message) {
+ if (message.selected &&
+ message.uid == vm.selectedFolder.selectedMessage)
+ moveSelectedMessage = true;
+ return message.selected;
+ });
+
+ vm.selectedFolder.$markOrUnMarkMessagesAsJunk(selectedMessages).then(function() {
+ var folder = '/' + vm.account.id + '/folderINBOX';
+
+ if (vm.selectedFolder.type != 'junk') {
+ folder = '/' + vm.account.$getMailboxByType('junk').id;
+ }
+
+ vm.selectedFolder.$moveMessages(selectedMessages, folder).then(function(index) {
+ unselectMessage(moveSelectedMessage, index);
+ });
+ });
+ }
+
function unselectMessage(message, index) {
// Unselect current message and cleverly load the next message
var nextMessage, previousMessage, nextIndex = index;
diff --git a/UI/WebServerResources/js/Mailer/MailboxesController.js b/UI/WebServerResources/js/Mailer/MailboxesController.js
index b1049540a..ea0108f4f 100644
--- a/UI/WebServerResources/js/Mailer/MailboxesController.js
+++ b/UI/WebServerResources/js/Mailer/MailboxesController.js
@@ -301,6 +301,8 @@
return {name: l('SentFolderName'), icon: 'send'};
else if (folder.type == 'trash')
return {name: l('TrashFolderName'), icon: 'delete'};
+ else if (folder.type == 'junk')
+ return {name: l('JunkFolderName'), icon: 'thumb_down'};
else if (folder.type == 'additional')
return {name: folder.name, icon: 'folder_shared'};