diff --git a/UI/MailerUI/English.lproj/Localizable.strings b/UI/MailerUI/English.lproj/Localizable.strings index 345d4c09b..3175b293b 100644 --- a/UI/MailerUI/English.lproj/Localizable.strings +++ b/UI/MailerUI/English.lproj/Localizable.strings @@ -13,6 +13,7 @@ "Print" = "Print"; "Stop" = "Stop"; "Write" = "Write"; +"Search" = "Search"; "Send" = "Send"; "Contacts" = "Contacts"; @@ -41,6 +42,7 @@ "Attachment" = "Attachment"; "Unread" = "Unread"; "Flagged" = "Flagged"; +"Search inbox" = "Search inbox"; /* Main Frame */ @@ -94,8 +96,9 @@ "To" = "To"; "Cc" = "Cc"; "Bcc" = "Bcc"; -"Reply-To" = "Reply-To"; +"Reply-To" = "Reply-To"; "Add address" = "Add address"; +"Body" = "Body"; "Open" = "Open"; "Select All" = "Select All"; @@ -237,6 +240,17 @@ "As Not Junk" = "As Not Junk"; "Run Junk Mail Controls" = "Run Junk Mail Controls"; +"Search messages in" = "Search messages in"; +"Search" = "Search"; +"Search subfolders" = "Search subfolders"; +"Match any of the following" = "Match any of the following"; +"Match all of the following" = "Match all of the following"; +"contains" = "contains"; +"does not contain" = "does not contain"; +"No matches found" = "No matches found"; +"results found" = "results found"; +"result found" = "result found"; + /* Folder operations */ "Name :" = "Name :"; "Enter the new name of your folder :" diff --git a/UI/MailerUI/UIxMailListActions.m b/UI/MailerUI/UIxMailListActions.m index 4dd20ad95..ac7e59171 100644 --- a/UI/MailerUI/UIxMailListActions.m +++ b/UI/MailerUI/UIxMailListActions.m @@ -323,35 +323,20 @@ return @"ARRIVAL"; } -- (NSString *) imap4SortKey -{ - NSString *sort; - NSDictionary *urlParams, *sortingAttributes; - WORequest *request; - - request = [context request]; - urlParams = [[request contentAsString] objectFromJSONString]; - sortingAttributes = [urlParams objectForKey:@"sortingAttributes"]; - sort = [sortingAttributes objectForKey:@"sort"]; - - return [sort uppercaseString]; -} - - (NSString *) imap4SortOrdering { - NSString *sort; - NSString *module; + WORequest *request; + NSString *sort, *module; NSMutableDictionary *moduleSettings; NSDictionary *urlParams, *sortingAttributes; - WORequest *request; - BOOL asc; SOGoUser *activeUser; SOGoUserSettings *us; + BOOL asc; - sort = [self imap4SortKey]; request = [context request]; urlParams = [[request contentAsString] objectFromJSONString]; sortingAttributes = [urlParams objectForKey:@"sortingAttributes"]; + sort = [[sortingAttributes objectForKey:@"sort"] uppercaseString]; asc = [[sortingAttributes objectForKey:@"asc"] boolValue]; activeUser = [context activeUser]; @@ -409,14 +394,12 @@ NSArray *filters; NSString *searchBy, *searchArgument, *searchInput, *searchString, *match; NSMutableArray *searchArray; - int nbFilters, i; + int nbFilters = 0, i; request = [context request]; content = [[request contentAsString] objectFromJSONString]; qualifier = nil; searchString = nil; - nbFilters = 0; - searchArray = [[NSMutableArray alloc] init]; if ([content objectForKey:@"filters"]) { @@ -425,6 +408,7 @@ nbFilters = [filters count]; match = [NSString stringWithString:[sortingAttributes objectForKey:@"match"]]; // AND, OR + searchArray = [NSMutableArray arrayWithCapacity:nbFilters]; for (i = 0; i < nbFilters; i++) { searchBy = [NSString stringWithString:[[filters objectAtIndex:i] objectForKey:@"searchBy"]]; @@ -443,17 +427,15 @@ qualifier = [[EOOrQualifier alloc] initWithQualifierArray: searchArray]; else qualifier = [[EOAndQualifier alloc] initWithQualifierArray: searchArray]; - - [searchArray release]; - [qualifier autorelease]; } + return qualifier; } - (NSArray *) getSortedUIDsInFolder: (SOGoMailFolder *) mailFolder { EOQualifier *qualifier, *fetchQualifier, *notDeleted; - + if (!sortedUIDs) { notDeleted = [EOQualifier qualifierWithQualifierFormat: @"(not (flags = %@))", @"deleted"]; @@ -472,7 +454,7 @@ [sortedUIDs retain]; } - + return sortedUIDs; } @@ -689,7 +671,7 @@ - (id ) getUIDsAction { - NSDictionary *data; + NSDictionary *data, *requestContent; NSString *noHeaders; SOGoMailFolder *folder; WORequest *request; @@ -697,12 +679,14 @@ request = [context request]; response = [context response]; + requestContent = [[request contentAsString] objectFromJSONString]; + [response setHeader: @"text/plain; charset=utf-8" - forKey: @"content-type"]; + forKey: @"content-type"]; folder = [self clientObject]; - noHeaders = [request formValueForKey: @"no_headers"]; + noHeaders = [[requestContent objectForKey: @"sortingAttributes"] objectForKey:@"no_headers"]; data = [self getUIDsInFolder: folder withHeaders: ([noHeaders length] == 0)]; diff --git a/UI/MailerUI/UIxMailSearch.m b/UI/MailerUI/UIxMailSearch.m index 3de88e00d..9a468248c 100644 --- a/UI/MailerUI/UIxMailSearch.m +++ b/UI/MailerUI/UIxMailSearch.m @@ -32,87 +32,61 @@ - (id) init { - item = nil; - - return self; + item = nil; + + return self; } - (void) dealloc { - [item release]; + [item release]; } - (void) setItem: (NSString *) newItem { - ASSIGN(item, newItem); + ASSIGN(item, newItem); } - (NSString *) item { - return item; + return item; } - (NSArray *) mailAccountsList { - SOGoMailAccount *co, *accountFolder; - SOGoMailAccounts *accountsFolder; - SOGoUserFolder *userFolder; - NSString *userName, *option, *lookup; - NSArray *folders; - NSMutableArray *mailboxes; - NSDictionary *mailAccount; - int nbMailboxes, nbMailAccounts, i, j; - - - userFolder = [[context activeUser] homeFolderInContext: context]; - accountsFolder = [userFolder lookupName: @"Mail" inContext: context acquire: NO]; - nbMailAccounts = [[accountsFolder mailAccounts] count]; + SOGoMailAccount *mAccount; + SOGoMailAccounts *mAccounts; + NSString *userName, *option, *aString; + NSArray *accountFolders; + NSMutableArray *mailboxes; + NSDictionary *accountName; + int nbMailboxes, nbMailAccounts, i, j; - mailboxes = [[NSMutableArray alloc] init]; - for (i = 0; i < nbMailAccounts; i++) - { - mailAccount = [[[accountsFolder mailAccounts] objectAtIndex:i] objectForKey:@"name"]; // Keys on this account = (name, port, encryption, mailboxes, serverName, identities, userName) - userName = [[[accountsFolder mailAccounts] objectAtIndex:i] objectForKey:@"userName"]; - lookup = [NSString stringWithFormat:@"%i", i]; - accountFolder = [accountsFolder lookupName:lookup inContext: context acquire: NO]; - folders = [accountFolder allFoldersMetadata]; - nbMailboxes = [folders count]; - [mailboxes addObject:mailAccount]; - for (j = 0; j < nbMailboxes; j++) - { - option = [NSString stringWithFormat:@"%@%@", userName, [[folders objectAtIndex:j] objectForKey:@"displayName"]]; - [mailboxes addObject:option]; - } - } - return mailboxes; - [mailboxes release]; -} + // Number of accounts linked with the current user + mAccounts = [self clientObject]; + nbMailAccounts = [[mAccounts mailAccounts] count]; -// -// The objective here is to return the parent view layout and select the print -// layout corresponding. Default print view: list view -/* -- (NSString *) mailAccountSelected -{ - SOGoUser *activeUser; - NSString *parentView; - - activeUser = [context activeUser]; - us = [activeUser userSettings]; - parentView = [[us objectForKey:@"Calendar"] objectForKey:@"View" ]; - - if ([parentView isEqualToString:@"dayview"]) - return @"Daily"; - - else if ([parentView isEqualToString:@"weekview"]) - return @"Weekly"; - - else if ([parentView isEqualToString:@"multicolumndayview"]) - return @"Multi-Columns"; - - else - return @"LIST"; + mailboxes = [[NSMutableArray alloc] init]; + for (i = 0; i < nbMailAccounts; i++) + { + accountName = [[[mAccounts mailAccounts] objectAtIndex:i] objectForKey:@"name"]; // Keys on this account = (name, port, encryption, mailboxes, serverName, identities, userName) + userName = [[[mAccounts mailAccounts] objectAtIndex:i] objectForKey:@"userName"]; + + aString = [NSString stringWithFormat:@"%i", i]; + mAccount = [mAccounts lookupName:aString inContext: context acquire: NO]; + accountFolders = [mAccount allFoldersMetadata]; + + // Number of mailboxes inside the current account + nbMailboxes = [accountFolders count]; + [mailboxes addObject:accountName]; + for (j = 0; j < nbMailboxes; j++) + { + option = [NSString stringWithFormat:@"%@%@", userName, [[accountFolders objectAtIndex:j] objectForKey:@"displayName"]]; + [mailboxes addObject:option]; + } + } + return mailboxes; + [mailboxes release]; } -*/ @end \ No newline at end of file diff --git a/UI/WebServerResources/UIxMailSearch.js b/UI/WebServerResources/UIxMailSearch.js index aecbc9400..0c52be72a 100644 --- a/UI/WebServerResources/UIxMailSearch.js +++ b/UI/WebServerResources/UIxMailSearch.js @@ -100,9 +100,9 @@ function searchMails() { var accountNumber = "/" + userNames.indexOf(accountUser); var position = searchLocation.length; - var folderName = accountNumber + "/folder" + searchLocation[1]; + var folderName = accountNumber + "/folder" + searchLocation[1].replace(" ", "_SP_"); for (i = 2; i < position; i++) - folderName += accountNumber + "/folder" + searchLocation[i]; + folderName += "/folder" + searchLocation[i]; var folderPath = optionsList[selectedIndex].innerText;