Fix for bug #2282
Monotone-Parent: 55136d300cf8d13c53cb1e7978c4915fba81f463 Monotone-Revision: a13f784df474c62818bf303f9bee4b03e811641b Monotone-Author: flachapelle@inverse.ca Monotone-Date: 2008-09-05T19:07:16 Monotone-Branch: ca.inverse.sogomaint-2.0.2
parent
ee8570423a
commit
163a60e07f
|
@ -32,6 +32,7 @@
|
|||
- (WOResponse *) createFolderAction;
|
||||
- (WOResponse *) renameFolderAction;
|
||||
- (WOResponse *) deleteFolderAction;
|
||||
- (WOResponse *) deleteMessagesAction;
|
||||
- (WOResponse *) expungeAction;
|
||||
- (WOResponse *) emptyTrashAction;
|
||||
- (WOResponse *) subscribeAction;
|
||||
|
|
|
@ -36,6 +36,7 @@
|
|||
#import <SoObjects/Mailer/SOGoMailFolder.h>
|
||||
#import <SoObjects/Mailer/SOGoTrashFolder.h>
|
||||
#import <SoObjects/Mailer/SOGoMailAccount.h>
|
||||
#import <SoObjects/Mailer/SOGoMailObject.h>
|
||||
#import <SoObjects/SOGo/NSObject+Utilities.h>
|
||||
#import <SoObjects/SOGo/SOGoUser.h>
|
||||
|
||||
|
@ -181,6 +182,46 @@
|
|||
return response;
|
||||
}
|
||||
|
||||
- (WOResponse *) deleteMessagesAction
|
||||
{
|
||||
SOGoMailFolder *co;
|
||||
SOGoMailObject *mail;
|
||||
WOResponse *response;
|
||||
NSArray *uids;
|
||||
NSString *value, *uid;
|
||||
NSException *error;
|
||||
unsigned int i;
|
||||
|
||||
co = [self clientObject];
|
||||
value = [[context request] formValueForKey: @"uid"];
|
||||
response = nil;
|
||||
|
||||
if ([value length] > 0)
|
||||
{
|
||||
uids = [value componentsSeparatedByString: @","];
|
||||
for (i = 0; i < [uids count]; i++)
|
||||
{
|
||||
uid = [uids objectAtIndex: i];
|
||||
mail = [co lookupName: uid inContext: context acquire: NO];
|
||||
if (mail)
|
||||
{
|
||||
error = [mail trashInContext: context];
|
||||
if (error)
|
||||
{
|
||||
response = [self responseWithStatus: 500];
|
||||
[response appendContentString: [NSString stringWithFormat: @"Can't trash message %@/%@", [co nameInContainer], uid]];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (response == nil)
|
||||
response = [self responseWith204];
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
- (WOResponse *) _setFolderPurpose: (NSString *) purpose
|
||||
{
|
||||
SOGoMailFolder *co;
|
||||
|
|
|
@ -136,6 +136,11 @@
|
|||
actionClass = "UIxMailFolderActions";
|
||||
actionName = "deleteFolder";
|
||||
};
|
||||
deleteMessages = {
|
||||
protectedBy = "View";
|
||||
actionClass = "UIxMailFolderActions";
|
||||
actionName = "deleteMessages";
|
||||
};
|
||||
setAsDraftsFolder = {
|
||||
protectedBy = "View";
|
||||
actionClass = "UIxMailFolderActions";
|
||||
|
|
|
@ -416,8 +416,7 @@ TD.mailer_fieldvalue a
|
|||
}
|
||||
|
||||
TR.deleted TD
|
||||
{ display: none;
|
||||
/* text-decoration: line-through; -- alternative display */ }
|
||||
{ /* text-decoration: line-through; -- alternative display */ }
|
||||
|
||||
img.mailer_imagecontent
|
||||
{
|
||||
|
|
|
@ -237,20 +237,25 @@ function onDocumentKeydown(event) {
|
|||
}
|
||||
|
||||
function deleteSelectedMessages(sender) {
|
||||
var messageList = $("messageList");
|
||||
var rows = messageList.down("TBODY").getSelectedNodes();
|
||||
var messageList = $("messageList").down("TBODY");
|
||||
var rows = messageList.getSelectedNodes();
|
||||
var uids = new Array(); // message IDs
|
||||
var paths = new Array(); // row IDs
|
||||
|
||||
if (rows.length > 0) {
|
||||
for (var i = 0; i < rows.length; i++) {
|
||||
var url;
|
||||
var rowId = rows[i].readAttribute("id").substr(4);
|
||||
var messageId = Mailer.currentMailbox + "/" + rowId;
|
||||
url = ApplicationBaseURL + messageId + "/trash";
|
||||
var uid = rows[i].readAttribute("id").substr(4);
|
||||
var path = Mailer.currentMailbox + "/" + uid;
|
||||
deleteMessageRequestCount++;
|
||||
rows[i].addClassName("deleted");
|
||||
var data = { "id": rowId, "mailbox": Mailer.currentMailbox, "messageId": messageId };
|
||||
triggerAjaxRequest(url, deleteSelectedMessagesCallback, data);
|
||||
rows[i].hide();
|
||||
uids.push(uid);
|
||||
paths.push(path);
|
||||
}
|
||||
var url = ApplicationBaseURL + Mailer.currentMailbox + "/deleteMessages";
|
||||
var parameters = "uid=" + uids.join(",");
|
||||
var data = { "id": uids, "mailbox": Mailer.currentMailbox, "path": paths };
|
||||
triggerAjaxRequest(url, deleteSelectedMessagesCallback, data, parameters,
|
||||
{ "Content-type": "application/x-www-form-urlencoded" });
|
||||
}
|
||||
else
|
||||
window.alert(labels["Please select a message."]);
|
||||
|
@ -261,31 +266,33 @@ function deleteSelectedMessages(sender) {
|
|||
function deleteSelectedMessagesCallback(http) {
|
||||
if (isHttpStatus204(http.status)) {
|
||||
var data = http.callbackData;
|
||||
deleteCachedMessage(data["messageId"]);
|
||||
deleteMessageRequestCount--;
|
||||
if (Mailer.currentMailbox == data["mailbox"]) {
|
||||
var div = $('messageContent');
|
||||
if (Mailer.currentMessages[Mailer.currentMailbox] == data["id"]) {
|
||||
div.update();
|
||||
Mailer.currentMessages[Mailer.currentMailbox] = null;
|
||||
}
|
||||
if (deleteMessageRequestCount == 0) {
|
||||
var row = $("row_" + data["id"]);
|
||||
var nextRow = row.next("tr");
|
||||
if (!nextRow)
|
||||
nextRow = row.previous("tr");
|
||||
// row.addClassName("deleted"); // when we'll offer "mark as deleted"
|
||||
if (nextRow) {
|
||||
Mailer.currentMessages[Mailer.currentMailbox] = nextRow.getAttribute("id").substr(4);
|
||||
nextRow.selectElement();
|
||||
loadMessage(Mailer.currentMessages[Mailer.currentMailbox]);
|
||||
}
|
||||
refreshCurrentFolder();
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
log ("deleteSelectedMessagesCallback: problem during ajax request " + http.status);
|
||||
for (var i = 0; i < data["path"].length; i++) {
|
||||
deleteCachedMessage(data["path"][i]);
|
||||
deleteMessageRequestCount--;
|
||||
if (Mailer.currentMailbox == data["mailbox"]) {
|
||||
var div = $('messageContent');
|
||||
if (Mailer.currentMessages[Mailer.currentMailbox] == data["id"][i]) {
|
||||
div.update();
|
||||
Mailer.currentMessages[Mailer.currentMailbox] = null;
|
||||
}
|
||||
if (deleteMessageRequestCount == 0) {
|
||||
var row = $("row_" + data["id"][i]);
|
||||
var nextRow = row.next("tr");
|
||||
if (!nextRow)
|
||||
nextRow = row.previous("tr");
|
||||
// row.addClassName("deleted"); // when we'll offer "mark as deleted"
|
||||
if (nextRow) {
|
||||
Mailer.currentMessages[Mailer.currentMailbox] = nextRow.getAttribute("id").substr(4);
|
||||
nextRow.selectElement();
|
||||
loadMessage(Mailer.currentMessages[Mailer.currentMailbox]);
|
||||
}
|
||||
refreshCurrentFolder();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
log ("deleteSelectedMessagesCallback: problem during ajax request " + http.status);
|
||||
}
|
||||
|
||||
function moveMessages(rowIds, folder) {
|
||||
|
@ -332,13 +339,15 @@ function onMenuDeleteMessage(event) {
|
|||
}
|
||||
|
||||
function deleteMessage(url, id, mailbox, messageId) {
|
||||
var data = { "id": id, "mailbox": mailbox, "messageId": messageId };
|
||||
var data = { "id": new Array(id), "mailbox": mailbox, "path": new Array(messageId) };
|
||||
deleteMessageRequestCount++;
|
||||
triggerAjaxRequest(url, deleteSelectedMessagesCallback, data);
|
||||
}
|
||||
|
||||
function deleteMessageWithDelay(url, id, mailbox, messageId) {
|
||||
/* this is called by UIxMailPopupView with window.opener */
|
||||
var row = $("row_" + id);
|
||||
if (row) row.hide();
|
||||
setTimeout("deleteMessage('" +
|
||||
url + "', '" +
|
||||
id + "', '" +
|
||||
|
|
Loading…
Reference in New Issue