mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-10-07 04:47:14 +00:00
Merge pull request #29 from alexcloutier/feat/1496
New feature : 1496 Don't forget to fix the typo.
This commit is contained in:
commit
bf64076b87
19 files changed
+430
-127
No files matched your search
@@ -158,88 +158,23 @@ Class SOGoContactSourceFolderK, SOGoGCSFolderK;
|
||||
- (id <WOActionResults>) allContactSearchAction
|
||||
{
|
||||
id <WOActionResults> result;
|
||||
SOGoFolder <SOGoContactFolder> *folder;
|
||||
NSString *searchText, *mail, *domain;
|
||||
NSString *searchText;
|
||||
NSDictionary *data;
|
||||
NSArray *folders, *contacts, *descriptors, *sortedContacts;
|
||||
NSMutableArray *sortedFolders;
|
||||
NSMutableDictionary *contact, *uniqueContacts;
|
||||
unsigned int i, j, max;
|
||||
NSSortDescriptor *commonNameDescriptor;
|
||||
NSArray *sortedContacts;
|
||||
|
||||
BOOL excludeGroups, excludeLists;
|
||||
|
||||
searchText = [self queryParameterForKey: @"search"];
|
||||
if ([searchText length] > 0)
|
||||
{
|
||||
// NSLog(@"Search all contacts: %@", searchText);
|
||||
excludeGroups = [[self queryParameterForKey: @"excludeGroups"] boolValue];
|
||||
excludeLists = [[self queryParameterForKey: @"excludeLists"] boolValue];
|
||||
domain = [[context activeUser] domain];
|
||||
folders = nil;
|
||||
NS_DURING
|
||||
folders = [[self clientObject] subFolders];
|
||||
NS_HANDLER
|
||||
/* We need to specifically test for @"SOGoDBException", which is
|
||||
raised explicitly in SOGoParentFolder. Any other exception should
|
||||
be re-raised. */
|
||||
if ([[localException name] isEqualToString: @"SOGoDBException"])
|
||||
folders = nil;
|
||||
else
|
||||
[localException raise];
|
||||
NS_ENDHANDLER;
|
||||
max = [folders count];
|
||||
sortedFolders = [NSMutableArray arrayWithCapacity: max];
|
||||
uniqueContacts = [NSMutableDictionary dictionary];
|
||||
for (i = 0; i < max; i++)
|
||||
{
|
||||
folder = [folders objectAtIndex: i];
|
||||
/* We first search in LDAP folders (in case of duplicated entries in GCS folders) */
|
||||
if ([folder isKindOfClass: SOGoContactSourceFolderK])
|
||||
[sortedFolders insertObject: folder atIndex: 0];
|
||||
else
|
||||
[sortedFolders addObject: folder];
|
||||
}
|
||||
for (i = 0; i < max; i++)
|
||||
{
|
||||
folder = [sortedFolders objectAtIndex: i];
|
||||
//NSLog(@" Address book: %@ (%@)", [folder displayName], [folder class]);
|
||||
contacts = [folder lookupContactsWithFilter: searchText
|
||||
onCriteria: @"name_or_address"
|
||||
sortBy: @"c_cn"
|
||||
ordering: NSOrderedAscending
|
||||
inDomain: domain];
|
||||
for (j = 0; j < [contacts count]; j++)
|
||||
{
|
||||
contact = [contacts objectAtIndex: j];
|
||||
mail = [contact objectForKey: @"c_mail"];
|
||||
//NSLog(@" found %@ (%@) ? %@", [contact objectForKey: @"c_name"], mail,
|
||||
// [contact description]);
|
||||
if (!excludeLists && [[contact objectForKey: @"c_component"]
|
||||
isEqualToString: @"vlist"])
|
||||
{
|
||||
[contact setObject: [folder nameInContainer]
|
||||
forKey: @"container"];
|
||||
[uniqueContacts setObject: contact
|
||||
forKey: [contact objectForKey: @"c_name"]];
|
||||
}
|
||||
else if ([mail length]
|
||||
&& [uniqueContacts objectForKey: mail] == nil
|
||||
&& !(excludeGroups && [contact objectForKey: @"isGroup"]))
|
||||
[uniqueContacts setObject: contact forKey: mail];
|
||||
}
|
||||
}
|
||||
if ([uniqueContacts count] > 0)
|
||||
{
|
||||
// Sort the contacts by display name
|
||||
commonNameDescriptor = [[NSSortDescriptor alloc] initWithKey: @"c_cn"
|
||||
ascending:YES];
|
||||
descriptors = [NSArray arrayWithObjects: commonNameDescriptor, nil];
|
||||
[commonNameDescriptor release];
|
||||
sortedContacts = [[uniqueContacts allValues]
|
||||
sortedArrayUsingDescriptors: descriptors];
|
||||
}
|
||||
else
|
||||
sortedContacts = [NSArray array];
|
||||
|
||||
sortedContacts = [[self clientObject] allContactsFromFilter: searchText
|
||||
excludeGroups: excludeGroups
|
||||
excludeLists: excludeLists];
|
||||
|
||||
|
||||
data = [NSDictionary dictionaryWithObjectsAndKeys: searchText, @"searchText",
|
||||
sortedContacts, @"contacts",
|
||||
nil];
|
||||
|
||||
@@ -97,8 +97,7 @@
|
||||
"Show time as busy outside working hours" = "Show time as busy outside working hours";
|
||||
"First week of year :" = "First week of year:";
|
||||
"Enable reminders for Calendar items" = "Enable reminders for Calendar items";
|
||||
"Play a sound when a reminder comes due"
|
||||
= "Play a sound when a reminder comes due";
|
||||
"Play a sound when a reminder comes due" = "Play a sound when a reminder comes due";
|
||||
"Default reminder :" = "Default reminder:";
|
||||
|
||||
"firstWeekOfYear_January1" = "Starts on january 1";
|
||||
@@ -157,6 +156,10 @@
|
||||
"displayremoteinlineimages_never" = "Never";
|
||||
"displayremoteinlineimages_always" = "Always";
|
||||
|
||||
/* Contact */
|
||||
"Personal Address Book" = "Personal Address Book";
|
||||
"Collected Address Book" = "Collected Address Book";
|
||||
|
||||
/* IMAP Accounts */
|
||||
"New Mail Account" = "New Mail Account";
|
||||
|
||||
|
||||
@@ -157,6 +157,10 @@
|
||||
"displayremoteinlineimages_never" = "Jamais";
|
||||
"displayremoteinlineimages_always" = "Toujours";
|
||||
|
||||
/* Contact */
|
||||
"Personal Address Book" = "Carnet d'adresses personnel";
|
||||
"Collected Address Book" = "Carnet d'adresses collectés";
|
||||
|
||||
/* IMAP Accounts */
|
||||
"New Mail Account" = "Nouveau compte";
|
||||
|
||||
|
||||
@@ -33,6 +33,9 @@
|
||||
id item;
|
||||
SOGoUser *user;
|
||||
|
||||
// Addressbook
|
||||
NSMutableDictionary *addressBooksIDWithDisplayName;
|
||||
|
||||
// Calendar categories
|
||||
NSString *category;
|
||||
NSArray *calendarCategories;
|
||||
|
||||
@@ -51,6 +51,8 @@
|
||||
#import <Mailer/SOGoMailAccounts.h>
|
||||
#import <Mailer/SOGoMailLabel.h>
|
||||
|
||||
#import <Contacts/SOGoContactGCSFolder.h>
|
||||
|
||||
#import "UIxPreferences.h"
|
||||
|
||||
#warning this class is not finished
|
||||
@@ -115,6 +117,7 @@ static NSArray *reminderValues = nil;
|
||||
if ((self = [super init]))
|
||||
{
|
||||
item = nil;
|
||||
addressBooksIDWithDisplayName = nil;
|
||||
#warning user should be the owner rather than the activeUser
|
||||
ASSIGN (user, [context activeUser]);
|
||||
ASSIGN (today, [NSCalendarDate date]);
|
||||
@@ -175,6 +178,7 @@ static NSArray *reminderValues = nil;
|
||||
[contactsCategories release];
|
||||
[forwardOptions release];
|
||||
[daysOfWeek release];
|
||||
[addressBooksIDWithDisplayName release];
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
@@ -657,6 +661,16 @@ static NSArray *reminderValues = nil;
|
||||
}
|
||||
|
||||
/* Mailer */
|
||||
- (void) setAddOutgoingAddresses: (BOOL) addOutgoingAddresses
|
||||
{
|
||||
[userDefaults setMailAddOutgoingAddresses: addOutgoingAddresses];
|
||||
}
|
||||
|
||||
- (BOOL) addOutgoingAddresses
|
||||
{
|
||||
return [userDefaults mailAddOutgoingAddresses];
|
||||
}
|
||||
|
||||
- (void) setShowSubscribedFoldersOnly: (BOOL) showSubscribedFoldersOnly
|
||||
{
|
||||
[userDefaults setMailShowSubscribedFoldersOnly: showSubscribedFoldersOnly];
|
||||
@@ -677,6 +691,67 @@ static NSArray *reminderValues = nil;
|
||||
return [userDefaults mailSortByThreads];
|
||||
}
|
||||
|
||||
- (NSArray *) addressBookList
|
||||
{
|
||||
/* We want all the SourceIDS */
|
||||
NSMutableArray *folders, *contactFolders, *availableAddressBooksID, *availableAddressBooksName;
|
||||
int i, count;
|
||||
BOOL collectedAlreadyExist;
|
||||
|
||||
contactFolders = [[[context activeUser] homeFolderInContext: context]
|
||||
lookupName: @"Contacts"
|
||||
inContext: context
|
||||
acquire: NO];
|
||||
folders = [NSMutableArray arrayWithArray: [contactFolders subFolders]];
|
||||
count = [folders count]-1;
|
||||
|
||||
// Inside this loop we remove all the public or shared addressbooks
|
||||
for (count; count >= 0; count--)
|
||||
{
|
||||
if (![[folders objectAtIndex: count] isKindOfClass: [SOGoContactGCSFolder class]])
|
||||
[folders removeObjectAtIndex: count];
|
||||
}
|
||||
|
||||
// Parse the objects in order to have only the displayName of the addressbooks to be displayed on the preferences interface
|
||||
availableAddressBooksID = [NSMutableArray arrayWithCapacity: [folders count]];
|
||||
availableAddressBooksName = [NSMutableArray arrayWithCapacity: [folders count]];
|
||||
count = [folders count]-1;
|
||||
collectedAlreadyExist = false;
|
||||
|
||||
for (i = 0; i <= count ; i++) {
|
||||
[availableAddressBooksID addObject:[[folders objectAtIndex:i] realNameInContainer]];
|
||||
[availableAddressBooksName addObject:[[folders objectAtIndex:i] displayName]];
|
||||
|
||||
if ([[availableAddressBooksID objectAtIndex:i] isEqualToString: @"collected"])
|
||||
collectedAlreadyExist = true;
|
||||
}
|
||||
// Create the dictionary for the next function : itemAddressBookText.
|
||||
if (!addressBooksIDWithDisplayName)
|
||||
addressBooksIDWithDisplayName = [[NSMutableDictionary alloc] initWithObjects:availableAddressBooksName
|
||||
forKeys:availableAddressBooksID];
|
||||
if (!collectedAlreadyExist)
|
||||
{
|
||||
[availableAddressBooksID addObject: @"collected"];
|
||||
[addressBooksIDWithDisplayName setObject: [self labelForKey: @"Collected Address Book"] forKey: @"collected"];
|
||||
}
|
||||
|
||||
return availableAddressBooksID;
|
||||
}
|
||||
- (NSString *) itemAddressBookText
|
||||
{
|
||||
return [addressBooksIDWithDisplayName objectForKey: item];
|
||||
}
|
||||
|
||||
- (NSString *) userAddressBook
|
||||
{
|
||||
return [userDefaults selectedAddressBook];
|
||||
}
|
||||
|
||||
- (void) setUserAddressBook: (NSString *) newSelectedAddressBook
|
||||
{
|
||||
[userDefaults setSelectedAddressBook: newSelectedAddressBook];
|
||||
}
|
||||
|
||||
- (NSArray *) messageCheckList
|
||||
{
|
||||
NSArray *intervalsList;
|
||||
|
||||
@@ -296,6 +296,16 @@
|
||||
const:id="sortByThreads"
|
||||
var:checked="sortByThreads" />
|
||||
<var:string label:value="Sort messages by threads"/></dd>
|
||||
<dd><input type="checkbox"
|
||||
const:name="addOutgoingAddresses"
|
||||
const:id="addOutgoingAddresses"
|
||||
var:checked="addOutgoingAddresses" />
|
||||
<var:string label:value="Automatically add outgoing e-mail addresses to my :"/>
|
||||
<var:popup list="addressBookList" item="item"
|
||||
const:id="addressBookList"
|
||||
const:name="addressBookList"
|
||||
string="itemAddressBookText" selection="userAddressBook"/></dd>
|
||||
<dt></dt>
|
||||
<dt><var:string label:value="Check for new mail:"/></dt>
|
||||
<dd><var:popup list="messageCheckList" item="item"
|
||||
const:id="messageCheck"
|
||||
|
||||
Reference in new issue
Block a user