diff --git a/ChangeLog b/ChangeLog index 074ca3d74..7f5431318 100644 --- a/ChangeLog +++ b/ChangeLog @@ -60,6 +60,8 @@ management, for when the url is invalid / not ical / etc. * SoObjects/SOGo/SOGoGCSFolder.m (_fetchAclsForUser: forObjectAtPath:): Ignore group acls if we found acls for the user. + * UI/Contacts/UIxListView.m (propertiesAction): Added to list references + from a vList. 2009-09-10 Wolfgang Sourdeau diff --git a/UI/Contacts/UIxListView.m b/UI/Contacts/UIxListView.m index b075c80c7..d52338179 100644 --- a/UI/Contacts/UIxListView.m +++ b/UI/Contacts/UIxListView.m @@ -119,4 +119,31 @@ return rc; } +- (WOResponse *) propertiesAction +{ + NSMutableArray *data; + NGVCardReference *card; + WOResponse *rc; + int i, count; + + data = [NSMutableArray array]; + co = [self clientObject]; + list = [co vList]; + + count = [[list cardReferences] count]; + for (i = 0; i < count; i++) + { + card = [[list cardReferences] objectAtIndex: i]; + [data addObject: [NSArray arrayWithObjects: [card reference], [card fn], + [card email], nil]]; + } + + rc = [context response]; + [rc setHeader: @"text/plain; charset=utf-8" + forKey: @"content-type"]; + [rc appendContentString: [data jsonRepresentation]]; + + return rc; +} + @end diff --git a/UI/Contacts/product.plist b/UI/Contacts/product.plist index ea753e383..b04a6ef81 100644 --- a/UI/Contacts/product.plist +++ b/UI/Contacts/product.plist @@ -193,6 +193,11 @@ protectedBy = "Access Contents Information"; pageName = "UIxListView"; }; + properties = { + protectedBy = "Access Contents Information"; + pageName = "UIxListView"; + actionName = "properties"; + }; edit = { protectedBy = "Access Contents Information"; pageName = "UIxListEditor"; diff --git a/UI/WebServerResources/ContactsUI.js b/UI/WebServerResources/ContactsUI.js index e13b6f238..e4ac11c27 100644 --- a/UI/WebServerResources/ContactsUI.js +++ b/UI/WebServerResources/ContactsUI.js @@ -568,16 +568,40 @@ function onConfirmContactSelection(event) { var rows = contactsList.getSelectedRows(); for (i = 0; i < rows.length; i++) { var cid = rows[i].getAttribute("id"); - var cname = '' + rows[i].getAttribute("contactname"); - var email = '' + rows[i].cells[1].innerHTML; + if (cid.endsWith (".vlf")) { + addListToOpener (tag, Contact.currentAddressBook, + currentAddressBookName, cid); + } + else { + var cname = '' + rows[i].getAttribute("contactname"); + var email = '' + rows[i].cells[1].innerHTML; - window.opener.addContact(tag, currentAddressBookName + '/' + cname, - cid, cname, email); + window.opener.addContact(tag, currentAddressBookName + '/' + cname, + cid, cname, email); + } } preventDefault(event); } +function addListToOpener (tag, aBookId, aBookName, listId) { + var url = ApplicationBaseURL + "/" + aBookId + "/" + listId + "/properties"; + triggerAjaxRequest (url, addListToOpenerCallback, { + "aBookId": aBookId, + "aBookName": aBookName, + "tag": tag + }); +} +function addListToOpenerCallback (http) { + var data = http.callbackData; + var received = http.responseText.evalJSON (true); + for (var i = 0; i < received.length; i++) { + var contact = received[i]; + window.opener.addContact(data.tag, data.aBookName + '/' + contact[1], + contact[0], contact[1], contact[2]); + } +} + function refreshContacts(cname) { openContactsFolder(Contact.currentAddressBook, true, cname); delete cachedContacts[Contact.currentAddressBook + "/" + cname]; diff --git a/UI/WebServerResources/UIxContactsUserFolders.js b/UI/WebServerResources/UIxContactsUserFolders.js index 4f3dd8972..5cae2c47c 100644 --- a/UI/WebServerResources/UIxContactsUserFolders.js +++ b/UI/WebServerResources/UIxContactsUserFolders.js @@ -11,7 +11,7 @@ function onSearchFormSubmit() { } else { var url = (UserFolderURL - + "usersSearch?search=" + encodedValue + "&excludeGroups=1"); + + "usersSearch?search=" + encodedValue); if (document.userFoldersRequest) { document.userFoldersRequest.aborted = true; document.userFoldersRequest.abort();