From 0770d6b77ac1164125bddaf3728c55bbf67aac5c Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Wed, 16 Jul 2008 04:17:46 +0000 Subject: [PATCH] Monotone-Parent: c59459e186c2878e5e6d52251e7dc74f9c8c5b2b Monotone-Revision: 10bd36248ea07224b256dcee6fb1ba205a8338d6 Monotone-Author: flachapelle@inverse.ca Monotone-Date: 2008-07-16T04:17:46 Monotone-Branch: ca.inverse.sogo --- UI/Contacts/UIxContactEditor.h | 11 +++ UI/Contacts/UIxContactEditor.m | 72 ++++++++++++++++++++ UI/Templates/ContactsUI/UIxContactEditor.wox | 10 +++ UI/WebServerResources/UIxContactEditor.css | 3 + 4 files changed, 96 insertions(+) diff --git a/UI/Contacts/UIxContactEditor.h b/UI/Contacts/UIxContactEditor.h index ae9d23733..c39196bea 100644 --- a/UI/Contacts/UIxContactEditor.h +++ b/UI/Contacts/UIxContactEditor.h @@ -29,14 +29,25 @@ @class NGVCard; +@class SOGoContactFolder; + @interface UIxContactEditor : UIxComponent { + id addressBookItem; NSString *preferredEmail; NSString *item; NGVCard *card; NSMutableDictionary *snapshot; /* contains the values for editing */ } +- (void) setAddressBookItem: (id) _item; +- (id) addressBookItem; + +- (BOOL) isNew; +- (NSArray *) addressBooksList; +- (SOGoContactFolder *) componentAddressBook; +- (NSString *) addressBookDisplayName; + @end #endif /* __UIxContactEditor_H__ */ diff --git a/UI/Contacts/UIxContactEditor.m b/UI/Contacts/UIxContactEditor.m index caabbd967..4ea1b1053 100644 --- a/UI/Contacts/UIxContactEditor.m +++ b/UI/Contacts/UIxContactEditor.m @@ -21,8 +21,11 @@ #import #import +#import #import +#import +#import #import #import #import @@ -31,6 +34,8 @@ #import #import +#import +#import #import #import #import @@ -59,6 +64,16 @@ /* accessors */ +- (void) setAddressBookItem: (id) _item +{ + ASSIGN (addressBookItem, _item); +} + +- (id) addressBookItem +{ + return addressBookItem; +} + - (NSString *) saveURL { return [NSString stringWithFormat: @"%@/saveAsContact", @@ -142,6 +157,63 @@ return [self completeHrefForMethod:uri]; } +- (BOOL) isNew +{ + return [[self clientObject] isNew]; +} + +- (NSArray *) addressBooksList +{ + NSEnumerator *folders; + NSMutableArray *addressBooksList; + SoSecurityManager *sm; + SOGoContactFolders *folderContainer; + SOGoContactFolder *folder, *currentFolder; + + addressBooksList = [NSMutableArray new]; + sm = [SoSecurityManager sharedSecurityManager]; + folderContainer = [[[self clientObject] container] container]; + folders = [[folderContainer subFolders] objectEnumerator]; + folder = [self componentAddressBook]; + currentFolder = [folders nextObject]; + + while (currentFolder) + { + if ([currentFolder isEqual: folder] || + ![sm validatePermission: SoPerm_AddDocumentsImagesAndFiles + onObject: currentFolder + inContext: context]) + [addressBooksList addObject: currentFolder]; + currentFolder = [folders nextObject]; + } + + return addressBooksList; +} + +- (SOGoContactFolder *) componentAddressBook +{ + SOGoContactFolder *folder; + + folder = [[self clientObject] container]; + + return folder; +} + +- (NSString *) addressBookDisplayName +{ + NSString *fDisplayName; + SOGoContactFolder *folder; + SOGoContactFolders *parentFolder; + + fDisplayName = [addressBookItem displayName]; + folder = [[self clientObject] container]; + parentFolder = [folder container]; + if ([fDisplayName isEqualToString: [parentFolder defaultFolderName]]) + fDisplayName = [self labelForKey: fDisplayName]; + + return fDisplayName; +} + /* actions */ - (BOOL) shouldTakeValuesFromRequest: (WORequest *) request diff --git a/UI/Templates/ContactsUI/UIxContactEditor.wox b/UI/Templates/ContactsUI/UIxContactEditor.wox index 2f49e537a..5aae443a6 100644 --- a/UI/Templates/ContactsUI/UIxContactEditor.wox +++ b/UI/Templates/ContactsUI/UIxContactEditor.wox @@ -12,6 +12,16 @@
+
+ + + +
+
  • diff --git a/UI/WebServerResources/UIxContactEditor.css b/UI/WebServerResources/UIxContactEditor.css index f40ce7429..2340b5aca 100644 --- a/UI/WebServerResources/UIxContactEditor.css +++ b/UI/WebServerResources/UIxContactEditor.css @@ -1,3 +1,6 @@ +DIV#addressBookSelector +{ margin: .5em; } + DIV#editorTabs { position: absolute; top: .5em;