Merge of following commits from Trunk:
r32609: * GroupDAV preference for addressbook-home-set (requires to register hooks)
r32610: missing groupdav hooks
r32611: fixed missing "users" of principal url in calendar-user-address-set
r32615: as the pricipal of current user is influenced by GroupDAV prefs, we have to include them in the etag
r32619: loop over existing addressbooks, to make sure each ab is only once in addressbook-home-set, even when selected multiple times in the prefs because of symbolic ab like "primary group"
r32620: urlencode and decode account_lid in url to cope with group-names with space in it, which stall iPhone OS 4.2 devices
r32621: fixed bug: GroupDAV/CardDAV PUT request to /addressbook/ changes owner, also checking now required ACL for moving contacts between addressbooks
r32622: returning "403 Forbidden" if addressbook_bo->save() fails, happens when writing new entries in ABs without ADD rights
r32623: * iCal on iPhone detects URL now correct
reverted calendar-home-set to report only users calendar, as reporting multiple break propfind
r32624: we need a real redirect, not just a proxy
r32631: fixed working in GroupDAV prefs and translation
Addressbook does NOT allow to specify the URL, unlike iCal which allows it after autodetection fails.
This, some XML specifics set now for Apple addressbook user-agents and etags for addressbook collection itself
allow now to use EGroupware with iPhone or Mac addressbook. The later was working before, if you edited the URL
into a decompiled plist file, but failed now because of a new REPORT it tries on the principal, to find out shared
addessbooks, which we not yet support, but failed to tell in the correct way (501 Not Implemented).
Addressbook sync now the personal addressbook, because that is what we tell it as addressbook-home-set.
We should add some configuration so user can choose what addressbook to set as addressbook-home-set, or to set
the "all" addressbook (/addressbook). For the later we could add some prefs like SyncML to specify filters or
eg. a distribution list.
WebDAV RFC 4918 allows a full url or a path as <D:href>:
http://www.webdav.org/specs/rfc4918.html#ELEMENT_href
Some clients can NOT deal with one or the other:
- KAddressbook (at least in 3.5) can NOT subscribe to addressbooks (it
does not find them) if just a path is used
- iCal in OS X 10.6 generates wrong requests, if a full url is used
- new GroupDAV v2 component-set attribute for collections
- getlastmodified & getcontentlength properties for infolog propfind
- fixed propfind on a single infolog entry to return just that entry
- getcontenttype of vevent and vtodo collection returns extra component
addressbook (infolog will follow).
CalDAV is tested so far with lightning 0.8 and Apple's iCal. Please note
that both distinguish between iCalServer and CalDAV!
The URL is currently http://domain.com/egroupware/groupdav.php/calendar/