diff --git a/ChangeLog b/ChangeLog index efd66a355..024d73626 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,20 @@ +2012-02-14 Francis Lachapelle + + * UI/WebServerResources/ContactsUI.js (contactsListCallback): when + restoring selection after the folder refresh, call "selectElement" + on each row. This fixes the contacts selection retrieval when using the + contextual menu. + 2012-02-14 Wolfgang Sourdeau + * SoObjects/SOGo/SOGoUserManager.m (_compactAndCompleteContacts:): + we make sure that "source" is not nil before assigning it to the + compact record. + + * SoObjects/SOGo/SQLSource.m (_lookupContactEntry:considerEmail:): + assign self as value for "source" in the returned record. + (-fetchContactsMatching): same as above. + * SoObjects/SOGo/SOGoSQLUserProfile.m (_sqlJsonRepresentation:): removed obsolete method. (-storeJSONProfileInDB:): we now properly escape the stored value diff --git a/NEWS b/NEWS index 42055f741..f4da8d0c6 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,20 @@ +1.3.12b (2012-02-14) +------------------- + +Bug Fixes + - we now properly escape strings via the database adapator methods when + saving users settings + - fixed a crash when exporting a vCard without specifying a UID + - fixed the contextual menu on newly created contacts and lists + +1.3.12a (2012-02-13) +------------------- + +Bug Fixes + - the plus sign (+) is now properly escaped in JavaScript (fixes issue when + loading the mailboxes list) + - added missing migration script in Debian/Ubuntu packages + 1.3.12 (2012-02-13) ------------------- New Features diff --git a/SoObjects/SOGo/SOGoUserManager.m b/SoObjects/SOGo/SOGoUserManager.m index 061dd0aff..b857d7764 100644 --- a/SoObjects/SOGo/SOGoUserManager.m +++ b/SoObjects/SOGo/SOGoUserManager.m @@ -819,6 +819,7 @@ NSMutableArray *emails; NSString *uid, *email, *info; NSNumber *isGroup; + id source; compactContacts = [NSMutableDictionary dictionary]; while ((userEntry = [contacts nextObject])) @@ -831,7 +832,9 @@ { returnContact = [NSMutableDictionary dictionary]; [returnContact setObject: uid forKey: @"c_uid"]; - [returnContact setObject: [userEntry objectForKey: @"source"] forKey: @"source"]; + source = [userEntry objectForKey: @"source"]; + if (source) + [returnContact setObject: source forKey: @"source"]; [compactContacts setObject: returnContact forKey: uid]; } if (![[returnContact objectForKey: @"c_name"] length]) diff --git a/UI/WebServerResources/ContactsUI.js b/UI/WebServerResources/ContactsUI.js index 9417f80e8..0c4f8e508 100644 --- a/UI/WebServerResources/ContactsUI.js +++ b/UI/WebServerResources/ContactsUI.js @@ -115,7 +115,6 @@ function contactsListCallback(http) { { categories: contact["c_categories"], contactname: contact["c_cn"] }, tbody); - var cell = createElement("td", null, ( "displayName" ), @@ -197,6 +196,7 @@ function contactsListCallback(http) { var rowPosition = row.rowIndex * row.getHeight(); if (div.getHeight() < rowPosition) div.scrollTop = rowPosition; // scroll to selected contact + row.selectElement(); break; } } @@ -300,9 +300,9 @@ function onMenuExportContact (event) { var canExport = (selectedFolders[0].getAttribute("owner") != "nobody"); if (canExport) { var selectedFolderId = $(selectedFolders[0]).readAttribute("id"); - var contactIds = $(document.menuTarget).collect(function(row) { - return row.getAttribute("id"); - }); + var contactIds = document.menuTarget.collect(function(row) { + return row.readAttribute("id"); + }); var url = ApplicationBaseURL + selectedFolderId + "/export" + "?uid=" + contactIds.join("&uid="); window.location.href = url;