Monotone-Parent: 5be6c87443be578d119d408f0aa2b86f5a6bbc31

Monotone-Revision: 7ad56d517ee86167bc71b34f0a08fd92931aa4cc

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2010-04-15T18:27:08
Monotone-Branch: ca.inverse.sogo
This commit is contained in:
Wolfgang Sourdeau
2010-04-15 18:27:08 +00:00
parent 15e4f94dc9
commit 89753dc1a2
19 changed files with 117 additions and 16 deletions

View File

@@ -49,7 +49,10 @@
/* messages */
- (NSException *) deleteUIDs: (NSArray *) uids inContext: (id) context;
- (WOResponse *) archiveUIDs: (NSArray *) uids inContext: (id) context;
- (WOResponse *) archiveUIDs: (NSArray *) uids
inArchiveNamed: (NSString *) archiveName
inContext: (id) context;
- (WOResponse *) archiveAllMessagesInContext: (id) localContext;
- (NSArray *) fetchUIDsMatchingQualifier: (id)_q sortOrdering: (id) _so;
- (NSArray *) fetchUIDs: (NSArray *) _uids parts: (NSArray *) _parts;

View File

@@ -331,11 +331,12 @@ static NSString *defaultUserID = @"anyone";
}
- (WOResponse *) archiveUIDs: (NSArray *) uids
inArchiveNamed: (NSString *) archiveName
inContext: (id) localContext
{
NSException *error;
NSFileManager *fm;
NSString *spoolPath, *fileName, *zipPath;
NSString *spoolPath, *fileName, *zipPath, *qpFileName;
NSDictionary *msgs;
NSArray *messages;
NSData *content, *zipContent;
@@ -344,6 +345,9 @@ static NSString *defaultUserID = @"anyone";
WOResponse *response;
int i;
if (!archiveName)
archiveName = @"SavedMessages.zip";
#warning this method should be rewritten according to our coding styles
spoolPath = [self userSpoolFolderPath];
if (![self ensureSpoolFolderPath]) {
@@ -369,18 +373,16 @@ static NSString *defaultUserID = @"anyone";
[zipTaskArguments addObject: @"SavedMessages.zip"];
msgs = (NSDictionary *)[self fetchUIDs: uids
parts: [NSArray arrayWithObject: @"RFC822"]];
parts: [NSArray arrayWithObject: @"RFC822"]];
messages = [msgs objectForKey: @"fetch"];
for (i = 0; i < [messages count]; i++) {
content = [[messages objectAtIndex: i] objectForKey: @"message"];
[content writeToFile:
[NSString stringWithFormat:@"%@/%d.eml", spoolPath, [uids objectAtIndex: i]]
atomically: YES];
fileName = [NSString stringWithFormat:@"%@/%@.eml", spoolPath, [uids objectAtIndex: i]];;
[content writeToFile: fileName atomically: YES];
[zipTaskArguments addObject:
[NSString stringWithFormat:@"%d.eml", [uids objectAtIndex: i]]];
[NSString stringWithFormat:@"%@.eml", [uids objectAtIndex: i]]];
}
[zipTask setArguments: zipTaskArguments];
@@ -400,15 +402,46 @@ static NSString *defaultUserID = @"anyone";
response = [[WOResponse alloc] init];
[response autorelease];
[response setHeader: @"application/zip" forKey:@"content-type"];
[response setHeader: @"attachment;filename=SavedMessages.zip" forKey: @"Content-Disposition"];
qpFileName = [archiveName asQPSubjectString: @"utf-8"];
[response setHeader: [NSString stringWithFormat: @"application/zip;"
@" name=\"%@\"",
qpFileName]
forKey:@"content-type"];
[response setHeader: [NSString stringWithFormat: @"attachment; filename=\"%@\"",
qpFileName]
forKey: @"Content-Disposition"];
[response setContent: zipContent];
[zipContent release];
return response;
}
- (WOResponse *) archiveAllMessagesInContext: (id) localContext
{
WOResponse *response;
NSArray *uids;
NSString *archiveName;
EOQualifier *notDeleted;
if ([[self imap4Connection] doesMailboxExistAtURL: [self imap4URL]])
{
notDeleted = [EOQualifier qualifierWithQualifierFormat:
@"(not (flags = %@))", @"deleted"];
uids = [self fetchUIDsMatchingQualifier: notDeleted
sortOrdering: @"ARRIVAL"];
archiveName = [NSString stringWithFormat: @"%@.zip", [self relativeImap4Name]];
response = [self archiveUIDs: uids inArchiveNamed: archiveName
inContext: localContext];
}
else
response = (WOResponse *)
[NSException exceptionWithHTTPStatus: 404
reason: @"Folder does not exist."];
return response;
}
- (WOResponse *) copyUIDs: (NSArray *) uids
toFolder: (NSString *) destinationFolder
inContext: (id) localContext

View File

@@ -401,7 +401,7 @@ static int cssEscapingCount;
if ([qpString length] > [self length])
{
qpString = [qpString stringByReplacingString: @" " withString: @"_"];
subjectString = [NSString stringWithFormat: @"=?%@?Q?%@?=",
subjectString = [NSString stringWithFormat: @"=?%@?q?%@?=",
encoding, qpString];
}
else

View File

@@ -76,8 +76,11 @@
"Remove this folder" = "Apagar esta pasta";
"Erase mails from this folder" = "Apagar emails desta pasta";
"Expunge this folder" = "Expurgar esta pasta";
"Archive This Folder" = "Archive This Folder";
"Modify the acl of this folder" = "Modificar os direitos desta pasta";
"Saved Messages.zip" = "Saved Messages.zip";
"Update" = "Atualizar";
"Cancel" = "Cancelar";

View File

@@ -76,8 +76,11 @@
"Remove this folder" = "Odebrat tuto složku";
"Erase mails from this folder" = "Vymazat maily v této složce";
"Expunge this folder" = "Vyškrtnout tuto složku";
"Archive This Folder" = "Archive This Folder";
"Modify the acl of this folder" = "Upravit acl této složky";
"Saved Messages.zip" = "Saved Messages.zip";
"Update" = "Aktualizace";
"Cancel" = "Storno";

View File

@@ -76,8 +76,11 @@
"Remove this folder" = "Deze map verwijderen";
"Erase mails from this folder" = "E-mails in in deze map verwijderen";
"Expunge this folder" = "Deze map leegmaken";
"Archive This Folder" = "Archive This Folder";
"Modify the acl of this folder" = "Machtigingen van deze map aanpassen";
"Saved Messages.zip" = "Saved Messages.zip";
"Update" = "Opslaan";
"Cancel" = "Sluiten";

View File

@@ -76,8 +76,11 @@
"Remove this folder" = "Remove this folder";
"Erase mails from this folder" = "Erase mails from this folder";
"Expunge this folder" = "Expunge this folder";
"Archive This folder" = "Archive This folder";
"Modify the acl of this folder" = "Modify the acl of this folder";
"Saved Messages.zip" = "Saved Messages.zip";
"Update" = "Update";
"Cancel" = "Cancel";

View File

@@ -76,8 +76,11 @@
"Remove this folder" = "Effacer ce dossier";
"Erase mails from this folder" = "Effacer des messages de ce dossier";
"Expunge this folder" = "Compacter ce dossier";
"Archive This Folder" = "Archiver ce dossier";
"Modify the acl of this folder" = "Administrer les droits sur ce dossier";
"Saved Messages.zip" = "Messages sauvegardés.zip";
"Update" = "Mettre à jour";
"Cancel" = "Annuler";

View File

@@ -76,8 +76,11 @@
"Remove this folder" = "Diesen Ordner löschen";
"Erase mails from this folder" = "E-Mails in diesem Ordner löschen";
"Expunge this folder" = "Diesen Ordner komprimieren";
"Archive This Folder" = "Archive This Folder";
"Modify the acl of this folder" = "Benutzerrechte dieses Ordners verändern";
"Saved Messages.zip" = "Saved Messages.zip";
"Update" = "Speichern";
"Cancel" = "Abbrechen";

View File

@@ -76,8 +76,11 @@
"Remove this folder" = "Mappa törlése";
"Erase mails from this folder" = "Üzenetek törlése a mappából";
"Expunge this folder" = "Mappa megjelölése töröltként";
"Archive This Folder" = "Archive This Folder";
"Modify the acl of this folder" = "Mappa jogosultságainak szerkesztése";
"Saved Messages.zip" = "Saved Messages.zip";
"Update" = "Mentés";
"Cancel" = "Mégsem";

View File

@@ -76,8 +76,11 @@
"Remove this folder" = "Rimuovi questa cartella";
"Erase mails from this folder" = "Elimina emails da questa cartella";
"Expunge this folder" = "Pulisci questa cartella";
"Archive This Folder" = "Archive This Folder";
"Modify the acl of this folder" = "Modifica i permessi per questa cartella";
"Saved Messages.zip" = "Saved Messages.zip";
"Update" = "Aggiorna";
"Cancel" = "Annulla";

View File

@@ -76,8 +76,11 @@
"Remove this folder" = "Удалять эту папку";
"Erase mails from this folder" = "Удалять сообщения из этой папки";
"Expunge this folder" = "Помечать письма как удаленные";
"Archive This Folder" = "Archive This Folder";
"Modify the acl of this folder" = "Управлять правами доступа к этой папке";
"Saved Messages.zip" = "Saved Messages.zip";
"Update" = "Обновить";
"Cancel" = "Отмена";

View File

@@ -76,8 +76,11 @@
"Remove this folder" = "Borrar esta carpeta";
"Erase mails from this folder" = "Borrar los correos de esta carpeta";
"Expunge this folder" = "Compactar esta carpeta.";
"Archive This Folder" = "Archive This Folder";
"Modify the acl of this folder" = "Modificar la lista de permisos de esta carpeta";
"Saved Messages.zip" = "Saved Messages.zip";
"Update" = "Actualizar";
"Cancel" = "Cancelar";

View File

@@ -76,8 +76,11 @@
"Remove this folder" = "Ta bort mappen";
"Erase mails from this folder" = "Radera meddelanden från mappen";
"Expunge this folder" = "Radera mappen";
"Archive This Folder" = "Archive This Folder";
"Modify the acl of this folder" = "Ändra åtkomsträttigheter på mappen";
"Saved Messages.zip" = "Saved Messages.zip";
"Update" = "Uppdatera";
"Cancel" = "Avbryt";

View File

@@ -270,7 +270,9 @@
if ([value length] > 0)
{
uids = [value componentsSeparatedByString: @","];
response = [co archiveUIDs: uids inContext: context];
response = [co archiveUIDs: uids
inArchiveNamed: [self labelForKey: @"Saved Messages.zip"]
inContext: context];
if (!response)
response = [self responseWith204];
}
@@ -283,6 +285,15 @@
return response;
}
- (WOResponse *) exportFolderAction
{
WOResponse *response;
response = [[self clientObject] archiveAllMessagesInContext: context];
return response;
}
- (WOResponse *) copyMessagesAction
{
SOGoMailFolder *co;

View File

@@ -76,8 +76,11 @@
"Remove this folder" = "Dileu'r ffolder hwn";
"Erase mails from this folder" = "Dileu ebost o'r ffolder hwn";
"Expunge this folder" = "Dileu'r ffolder hwn";
"Archive This Folder" = "Archive This Folder";
"Modify the acl of this folder" = "Newid acl y ffolder";
"Saved Messages.zip" = "Saved Messages.zip";
"Update" = "Diweddaru";
"Cancel" = "Canslo";

View File

@@ -143,6 +143,11 @@
actionClass = "UIxMailFolderActions";
actionName = "saveMessages";
};
exportFolder = {
protectedBy = "View";
actionClass = "UIxMailFolderActions";
actionName = "exportFolder";
};
copyMessages = {
protectedBy = "View";
actionClass = "UIxMailFolderActions";

View File

@@ -50,6 +50,7 @@
<li><var:string label:value="Mark Folder Read..." /></li>
<li><var:string label:value="New Folder..." /></li>
<li><var:string label:value="Compact This Folder" /></li>
<li><var:string label:value="Archive This Folder" /></li>
<li><!-- separator --></li>
<li><var:string label:value="Search Messages..." /></li>
<li><var:string label:value="Sharing..." /></li>
@@ -65,6 +66,7 @@
<li><var:string label:value="Mark Folder Read..." /></li>
<li><var:string label:value="New Subfolder..." /></li>
<li><var:string label:value="Compact This Folder" /></li>
<li><var:string label:value="Archive This Folder" /></li>
<li><var:string label:value="Empty Trash" /></li>
<li><!-- separator --></li>
<li><var:string label:value="Search Messages..." /></li>
@@ -82,6 +84,7 @@
<li><var:string label:value="New Subfolder..." /></li>
<li><var:string label:value="Rename Folder..." /></li>
<li><var:string label:value="Compact This Folder" /></li>
<li><var:string label:value="Archive This Folder" /></li>
<li><var:string label:value="Delete Folder" /></li>
<li><var:string label:value="Use This Folder For" /></li>
<li><!-- separator --></li>

View File

@@ -2255,7 +2255,7 @@ function saveAs(event) {
paths.push(path);
}
var url = ApplicationBaseURL + encodeURI(Mailer.currentMailbox) + "/saveMessages";
window.open(url+"?id="+uids+"&uid="+uids+"&mailbox="+Mailer.currentMailbox+"&path="+paths);
window.location.href = (url+"?id="+uids+"&uid="+uids+"&mailbox="+Mailer.currentMailbox+"&path="+paths);
}
else
window.alert(getLabel("Please select a message."));
@@ -2263,22 +2263,32 @@ function saveAs(event) {
return false;
}
function onMenuArchiveFolder(event) {
var folderID = document.menuTarget.getAttribute("dataname");
var url = URLForFolderID(folderID) + "/exportFolder";
window.location.href = url;
event.stop();
}
function getMenus() {
var menus = {}
menus["accountIconMenu"] = new Array(null, null, onMenuCreateFolder, null,
null, null);
menus["inboxIconMenu"] = new Array(null, null, null, "-", null,
onMenuCreateFolder, onMenuExpungeFolder,
"-", null,
onMenuArchiveFolder, "-", null,
onMenuSharing);
menus["trashIconMenu"] = new Array(null, null, null, "-", null,
onMenuCreateFolder, onMenuExpungeFolder,
onMenuEmptyTrash, "-", null,
onMenuArchiveFolder, onMenuEmptyTrash,
"-", null,
onMenuSharing);
menus["mailboxIconMenu"] = new Array(null, null, null, "-", null,
onMenuCreateFolder,
onMenuRenameFolder,
onMenuExpungeFolder,
onMenuArchiveFolder,
onMenuDeleteFolder,
"folderTypeMenu",
"-", null,