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;