Restore options when editing a draft

Fixes #193
pull/40/head
Francis Lachapelle 2014-05-28 11:19:31 -04:00
parent 51e07fc306
commit c5922b07aa
3 changed files with 90 additions and 25 deletions

1
NEWS
View File

@ -39,6 +39,7 @@ Bug fixes
- fixed missing characters in shared folder names over ActiveSync (#2709)
- fixed reply and forward mail templates for Brazilian Portuguese (#2738)
- fixed newline in signature when forwarding a message as attachment in HTML mode (#2787)
- fixed restoration of options (priority & return receipt) when editing a draft (#193)
2.2.3 (2014-04-03)
------------------

View File

@ -266,7 +266,7 @@ static NSString *userAgent = nil;
{
id headerValue;
unsigned int count;
NSString *messageID, *priority, *pureSender, *replyTo;
NSString *messageID, *priority, *pureSender, *replyTo, *receipt;
for (count = 0; count < 8; count++)
{
@ -285,26 +285,57 @@ static NSString *userAgent = nil;
[headers setObject: messageID forKey: @"message-id"];
}
priority = [newHeaders objectForKey: @"priority"];
if (!priority || [priority isEqualToString: @"NORMAL"])
priority = [newHeaders objectForKey: @"X-Priority"];
if (priority)
{
[headers removeObjectForKey: @"X-Priority"];
}
else if ([priority isEqualToString: @"HIGHEST"])
{
[headers setObject: @"1 (Highest)" forKey: @"X-Priority"];
}
else if ([priority isEqualToString: @"HIGH"])
{
[headers setObject: @"2 (High)" forKey: @"X-Priority"];
}
else if ([priority isEqualToString: @"LOW"])
{
[headers setObject: @"4 (Low)" forKey: @"X-Priority"];
// newHeaders come from MIME message; convert X-Priority to Web representation
[headers setObject: priority forKey: @"X-Priority"];
[headers removeObjectForKey: @"priority"];
if ([priority isEqualToString: @"1 (Highest)"])
{
[headers setObject: @"HIGHEST" forKey: @"priority"];
}
else if ([priority isEqualToString: @"2 (High)"])
{
[headers setObject: @"HIGH" forKey: @"priority"];
}
else if ([priority isEqualToString: @"4 (Low)"])
{
[headers setObject: @"LOW" forKey: @"priority"];
}
else if ([priority isEqualToString: @"5 (Lowest)"])
{
[headers setObject: @"LOWEST" forKey: @"priority"];
}
}
else
{
[headers setObject: @"5 (Lowest)" forKey: @"X-Priority"];
// newHeaders come from Web form; convert priority to MIME header representation
priority = [newHeaders objectForKey: @"priority"];
if (!priority || [priority isEqualToString: @"NORMAL"])
{
[headers removeObjectForKey: @"X-Priority"];
}
else if ([priority isEqualToString: @"HIGHEST"])
{
[headers setObject: @"1 (Highest)" forKey: @"X-Priority"];
}
else if ([priority isEqualToString: @"HIGH"])
{
[headers setObject: @"2 (High)" forKey: @"X-Priority"];
}
else if ([priority isEqualToString: @"LOW"])
{
[headers setObject: @"4 (Low)" forKey: @"X-Priority"];
}
else
{
[headers setObject: @"5 (Lowest)" forKey: @"X-Priority"];
}
if (priority)
{
[headers setObject: priority forKey: @"priority"];
}
}
replyTo = [headers objectForKey: @"replyTo"];
@ -314,14 +345,30 @@ static NSString *userAgent = nil;
}
[headers removeObjectForKey: @"replyTo"];
if ([[newHeaders objectForKey: @"receipt"] isEqualToString: @"true"])
receipt = [newHeaders objectForKey: @"Disposition-Notification-To"];
if ([receipt length] > 0)
{
pureSender = [[newHeaders objectForKey: @"from"] pureEMailAddress];
if (pureSender)
[headers setObject: pureSender forKey: @"Disposition-Notification-To"];
[headers setObject: @"true" forKey: @"receipt"];
[headers setObject: receipt forKey: @"Disposition-Notification-To"];
}
else
[headers removeObjectForKey: @"Disposition-Notification-To"];
{
receipt = [newHeaders objectForKey: @"receipt"];
if ([receipt isEqualToString: @"true"])
{
[headers setObject: receipt forKey: @"receipt"];
pureSender = [[newHeaders objectForKey: @"from"] pureEMailAddress];
if (pureSender)
{
[headers setObject: pureSender forKey: @"Disposition-Notification-To"];
}
}
else
{
[headers removeObjectForKey: @"receipt"];
[headers removeObjectForKey: @"Disposition-Notification-To"];
}
}
}
- (NSDictionary *) headers
@ -805,8 +852,10 @@ static NSString *userAgent = nil;
{
NSString *subject, *msgid;
NSMutableDictionary *info;
NSDictionary *h;
NSMutableArray *addresses;
NGImap4Envelope *sourceEnvelope;
id priority, receipt;
[sourceMail fetchCoreInfos];
@ -836,6 +885,15 @@ static NSString *userAgent = nil;
[self _addEMailsOfAddresses: [sourceEnvelope replyTo] toArray: addresses];
if ([addresses count] > 0)
[info setObject: addresses forKey: @"replyTo"];
h = [sourceMail mailHeaders];
priority = [h objectForKey: @"x-priority"];
if ([priority isNotEmpty] && [priority isKindOfClass: [NSString class]])
[info setObject: (NSString*)priority forKey: @"X-Priority"];
receipt = [h objectForKey: @"disposition-notification-to"];
if ([receipt isNotEmpty] && [receipt isKindOfClass: [NSString class]])
[info setObject: (NSString*)receipt forKey: @"Disposition-Notification-To"];
[self setHeaders: info];
[self setText: [sourceMail contentForEditing]];
@ -1708,7 +1766,7 @@ static NSString *userAgent = nil;
NGVCard *card;
Class contactGCSEntry;
NSMutableArray *recipients;
NSString *recipient, *emailAddress, *displayName, *addressBook, *uid;
NSString *recipient, *emailAddress, *addressBook, *uid;
NSArray *matchingContacts;
int i;
@ -1726,7 +1784,6 @@ static NSString *userAgent = nil;
parser = [NGMailAddressParser mailAddressParserWithString: recipient];
parsedRecipient = [parser parse];
emailAddress = [parsedRecipient address];
displayName = [parsedRecipient displayName];
matchingContacts = [contactFolders allContactsFromFilter: emailAddress
excludeGroups: YES
@ -1735,7 +1792,7 @@ static NSString *userAgent = nil;
// If we don't get any results from the autocompletion code, we add it..
if ([matchingContacts count] == 0)
{
/* Get the selected addressbook from the user preferences where the new address will be added */
// Get the selected addressbook from the user preferences where the new address will be added
addressBook = [ud selectedAddressBook];
folder = [contactFolders lookupName: addressBook inContext: context acquire: NO];
uid = [folder globallyUniqueObjectId];

View File

@ -485,6 +485,7 @@ function initMailEditor() {
}
initializePriorityMenu();
initializeReturnReceiptMenu();
configureDragHandle();
@ -563,6 +564,12 @@ function initializePriorityMenu() {
$(chosenNode).addClassName("_chosen");
}
function initializeReturnReceiptMenu() {
var receipt = $("receipt").value.toLowerCase();
if (receipt == "true")
$("optionsMenu").down('li').addClassName("_chosen");
}
function onMenuCheckReturnReceipt(event) {
event.cancelBubble = true;