Hallo Liste, ich poste das nochmal, diesmal direkt an die Mailing-Liste,
irgendwie ist das Posting nur auf “nabble” zu finden.
Hänge auch gleich das diff mit dran. (Damit haben sich die Fragen
nachdem wie erledigt :-D)
Gruß
Kay
Also, nachdem ich mich jetzt 1,5 Wochen mit dem Synchronisieren meines
PDA’s beschäftigt habe und dabei die Adressen den größten Ärger bereitet
haben, habe ich mal dran gegeben den Problemen auf den Grund zu gehen.
Mein Setup ist folgendes:
eGroupware-Server (aus dem svn - revision 25983)
Funambol - DS 7.06 mit GroupDAV-Connector groupdav-2.3.s4j
(bionicmessage.net)
Auf dem PDA ist das Funambol-Windows-Mobile-Plugin Version 7.0.8
Zu erst habe ich mal die dummi-Methode angewandt: das Groupdav-plugin im
DS mit den nötigen URL’s und Pfaden gefüttert, das Datei-Format auf
SIF-C eingestellt und gehofft, dass mein PDA das schon hinkriegt.
Dabei kam folgendes raus:
1.) Die eGroupware hatte danach nur noch meine Kontakte.
2.) Die Adressen waren vollständig, die Telefonnummner leider nicht.
3.) email-Adressen und URL’s wurden überhaupt nicht übertragen.
4.) Da wir unsere eGroupware so eingestellt haben, dass als
default-Einstellung die Adressen in dem default-Gruppen Adressbuch
landen, waren alle meine privaten Adressen im default-Adressbuch.
also Backup in die eGW zurückgespielt, die default-Einstellung so
gedreht, dass Adressen erstmal im persönlichen Adressbuch landen. Alle
meine Adressen erstmal per Hand in der eGW angelegt, sodass ich erstmal
die Richtung vom Server zum Handy testen kann. (PDA komplett aufgeräumt
und immer nur “vom Server zum PDA” eingestellt).
Das Daten-Format vom Funambol sowohl auf dem Handy als auch im
GroupDAV-Plugin auf vcard gestellt.
Ergebniss:
1.) Die Adressen werden aus allen Adressbüchern geholt (ist ja gut so)
2.) email-Adressen waren zum teil da
3.) Handy-Nummern leider nicht
4.) Adressen wurden komplett übertragen
5.) Kategorien wurden auch angelegt.
So jetzt wurde die Sache langsam interessant. Warum werden z.B. email
Adressen in die eine Richtung übertragen, in die andere nicht?
Also ran an den Source-Code und mal in die beiden Dateien
egroupware/addressbook/inc/class.addressbook_bo.inc.php und
egroupware/addressbook/inc/class.addressbook_vcal.inc.php genauer studiert.
Hier ist mir dann das unterschiedliche Mapping aufgefallen, was
allerdings überhaupt nicht verwendet wird, da die Mapping-Auswahl immer
multisync auswählt (das hatte Ralf mir in einem Post hier in der
Mailing-Liste schon mitgeteilt). Also erstmal das multisync-mapping ein
bisschen angepasst, und siehe da die email-Adressen wurden alle
übertragen. Weiter gebastelt und schwupp die Handy-Nummern waren auch da.
Jetzt war mein Ehrgeiz geweckt. Also etwas mehr Analyse am VCard Format
von Funambol ergab folgenden Satz-Aufbau:
BEGIN:VCARD
VERSION:2.1
N:;;;;
FN:
NICKNAME:
ADR;HOME:;;;;;;
ADR:;;;;;;
BDAY:
TEL;CAR;VOICE:
TEL;VOICE;HOME:
TEL;VOICE;HOME:
TEL;FAX;HOME:
TEL;CELL:
TEL;VOICE;X-FUNAMBOL-RADIO=null:
EMAIL;INTERNET:
EMAIL;INTERNET;HOME:
EMAIL;INTERNET;HOME;X-FUNAMBOL-INSTANTMESSENGER=null:
EMAIL;INTERNET;HOME;X-FUNAMBOL-INSTANTMESSENGER=null:
EMAIL;INTERNET;HOME;X-FUNAMBOL-INSTANTMESSENGER=null:
URL:
ADR;WORK:;;;;;;;
TITLE:
ORG:;
TEL;FAX;WORK:
TEL;VOICE;WORK:
TEL;VOICE;WORK:
TEL;WORK;PREF:
TEL;PAGER:
EMAIL;INTERNET;WORK:
NOTE:
X-FUNAMBOL-ANNIVERSARY:
X-FUNAMBOL-CHILDREN:
X-FUNAMBOL-CUSTOMERID:
X-FUNAMBOL-GOVERNMENTID:
X-FUNAMBOL-MANAGER:
X-FUNAMBOL-SPOUSE:
X-FUNAMBOL-YOMICOMPANYNAME:
X-FUNAMBOL-YOMIFIRSTNAME:
X-FUNAMBOL-YOMILASTNAME:
CATEGORIES:
PHOTO:
UID:
END:VCARD
Man beachte: “TEL;VOICE;HOME” gibts zweimal wie auch “TEL;VOICE;WORK”.
“TEL;CELL” hat keine “HOME” oder “WORK” Spezialisierung.
Also wieder ran an den Sourcecode und das mapping angepasst:
$defaultFields[12] = array( // all entries,
bionicmessage.net
’N’ =>
array(‘n_family’,‘n_given’,‘n_middle’,‘n_prefix’,‘n_suffix’),
‘FN’ => array(‘n_fileas’),
‘ADR;HOME’ =>
array(’’,’’,‘adr_two_street’,‘adr_two_locality’,‘adr_two_region’,
‘adr_two_postalcode’,‘adr_two_countryname’),
‘BDAY’ => array(‘bday’),
‘TEL;CAR;VOICE’ => array(‘tel_car’),
‘TEL;VOICE;HOME’=> array(‘tel_home’),
‘TEL;VOICE;HOME;2’ => array(‘tel_cell_private’),
‘TEL;FAX;HOME’ => array(‘tel_fax_home’),
‘TEL;CELL’ => array(‘tel_cell’),
‘EMAIL;INTERNET’=> array(‘email’),
‘EMAIL;INTERNET;HOME’ => array(‘email_home’),
‘URL’ => array(‘url’),
‘ADR;WORK’ =>
array(’’,’’,‘adr_one_street’,‘adr_one_locality’,‘adr_one_region’,
‘adr_one_postalcode’,‘adr_one_countryname’),
‘TITLE’ => array(‘title’),
‘ORG’ => array(‘org_name’,‘org_unit’),
‘TEL;FAX;WORK’ => array(‘tel_fax’),
‘TEL;VOICE;WORK’=> array(‘tel_work’),
‘TEL;PAGER’ => array(‘tel_pager’),
‘NOTE’ => array(‘note’),
‘CATEGORIES’ => array(‘cat_id’),
‘PHOTO’ => array(‘jpegphoto’),
‘UID’ => array(‘uid’),
// special Funambol
'X-FUNAMBOL-ANNIVERSARY'=> array(''),
'X-FUNAMBOL-CHILDREN'=> array(''),
'X-FUNAMBOL-CUSTOMERID'=> array(''),
'X-FUNAMBOL-GOVERNMENTID'=> array(''),
'X-FUNAMBOL-MANAGER'=> array(''),
'X-FUNAMBOL-SPOUSE'=> array(''),
'X-FUNAMBOL-YOMICOMPANYNAME'=> array(''),
'X-FUNAMBOL-YOMIFIRSTNAME'=> array(''),
'X-FUNAMBOL-YOMILASTNAME'=> array(''),
);
Der Trick mit dem “;2” hinter dem zweiten ‘TEL;VOICE;HOME’ funktioniert,
da der Funambol Client auf dem Handy das einfach abschneidet und somit
sauber in das Handy importiert. Es gibt noch mehr Änderungen, die z.B.
das Mapping auswählen. (Ich kann das diff-File zur Verfügung stellen,
ich weiß nur nicht wie).
Nach dieser Änderung waren alle meine Adressen sauber in meinem PDA
angekommen incl. Photos.
So jetzt zur Rückrichtung (erstmal ein backup angelegt :-D).
Auch hier gabs noch ein paar Änderungen zu machen, so musste der Trick
mit der “;2” implementiert werden und auch das umbauen in das Array
$finalRowNames bedurfte noch ein paar Anpassungen, die allerdings
kompatibel sein sollten.
Und schwupp auch neu angelegte Adressen auf dem Handy wurden sauber in
die eGW importiert, Änderungen an bestehenden wurden sauber gesynct. Na
super fertig…
Nee eben doch noch nicht. Bei einigen Kontakten kam es vor, dass diese
mehrfach gesynct wurden. Das waren die Kontakte, die mehrere Kategorien
hatten.
Bei uns in der eGW gibt es z.B. folgende Kategorien:
Kunden (hat die Datenbank ID 6) und Firmen (hat die Datenbank ID 10).
Wenn jetzt eine Firma auch ein Kunde ist (also kein Lieferant :-D), dann
ist dieser Kontakt in beiden Kategorien. Die eGW sortiert diese
Kategorien, wenn sie denn dann ausgewählt sind, alphabetisch, also
"Firmen, Kunden", groupdav überträgt das ganze aber in der Reihenfolge
der Datenbank ID’s also “Kunden, Firmen”, das habe ich umgebaut, damit
das auf dem Handy auch so ankommt.
Mein Funambol speichert diese Kategorienen in meinen Kontakten auf dem
PDA allerdings trotzdem als “Kunden, Firmen”, was wahrscheinlich daran
liegt, das die Kategorie “Kunden” vor “Firmen” angelegt wurde, also erst
ein Kontakt übertragen wurde, der nur in der Gruppe “Kunden” war.
Jetzt merkt Funambol, dass sich da was geändert hat (nämlich die
Reihenfolge der Kategorien) und synct wieder zurück.
Dabei ist raus gekommen, dass immer nur eine Kategorie abgespeichert
wird und dieser Kontakt dann in der Egw nur noch in der Gruppe "Kunden"
ist.
Also auch hier den Source-Code gefixed (wobei ich nicht weiß, ob dass
eine allgemeingültige Änderung ist.) und die Sortierung der Gruppen eGW
konform angepasst (da bei uns die Gruppe Firmen eine andere Farbe hat
als die Gruppe Kunden fällt das sofort auf, wenn die Sortierung nicht
stimmt!). Und jetzt werden die Kontakte auch ordentlich mit den
Kategorien gesynct, Allerdings mein Funambol dreht das immer noch und
will noch einmal zurück syncen (heißt’s eigendlich syncen synken oder
synchen ? :-D). Wahrscheinlich muss ich die Kategorien einmal per Hand
in der gleichen Reihenfolge anlegen wie die Egroupware die liefert.
Ansonsten klappt das jetzt bei mir!
Dabei habe ich gleich noch raus gefunden, dass der Thunderbird /
Lightning GroupDAV_Client mit dem “PHOTO” Attribut nichts anfangen kann!
Also habe ich auch noch das Mapping für den angepasst.
Ich hoffe das war jetzt nicht zuviel, sollte aber helfen.
PS: Wie kann ich jetzt so ein diff-File anhängen? Oder geht das nicht?
Wenn das geklärt ist, werde ich das entweder hoch laden oder irgendwie
anderes zur Verfügung stellen, falls Interesse besteht.
Gruß an die Liste
Kay