Hello all,
The “Formatted Name” field of contacts is not used. Our problem is that we have a very big addressbook, and all contacts only have Formatted Name (no Last Name nor First Name).
Attached is a patch that adds a field named “Display Name”, as most carddav clients call it, that is displayed in the contact window and editable. It is also used by default in the contact list.
Warning: it has not been extensively tested (and only with Davical as a server), but it seems to work well.
It would be very interesting for us if it could be tested by more people and eventually included in an official release.
Best regards,
Hi Jean-Philippe,
thanks for your patch, but unfortunately I cannot add it to the official release :-/
This feature was discussed multiple times, and there are reasons why we don't want it:
1.) FN only duplicates the data in N (which is required attribute and contains the structured representation of data) 2.) there is no guarantee of "referential integrity" between N and FN; e.g. you can create something like: N:Doe;John;;Dr.; FN:Mr. Peter Parker 3.) most of users don't want to write the name multiple times (into the N and then into the FN attribute), and will be confused why there are 2 fields for the same information 4.) we want to be 100% compatible with Apple clients, and Apple uses only the N attribute
For backward compatibility we added support for the globalContactStoreFN option, where you can "format" the content of the FN attribute (this attribute is write-only for "older" clients which use the FN instead of N).
I fully understand your situation and maybe there will be more users who find your patch useful, but the real and good solution is to update all your contacts with fixed N attribute.
If you use DAViCal, it requires only a simple PLPGSQL script which extracts the FN attribute, then format it (e.g. using a simple capturing regex match), remove the current N attribute, then add it back e.g. before the "END:VCARD" line and call the write_sync_change function (with correct parameters). It is much better approach than using unstructured data; personally I used it multiple times to fix common errors in our database (which currently contains 18807 contacts).
Cheers,
JM
On 23 Mar 2016, at 19:42, Jean-Philippe Garcia Ballester jean-philippe@demo-tic.org wrote:
Hello all,
The “Formatted Name” field of contacts is not used. Our problem is that we have a very big addressbook, and all contacts only have Formatted Name (no Last Name nor First Name).
Attached is a patch that adds a field named “Display Name”, as most carddav clients call it, that is displayed in the contact window and editable. It is also used by default in the contact list.
Warning: it has not been extensively tested (and only with Davical as a server), but it seems to work well.
It would be very interesting for us if it could be tested by more people and eventually included in an official release.
Best regards,
-- Jean-Philippe Garcia Ballester Demo-TIC<0001-Add-DisplayName-field.patch>
Hello Ján,
I understand your point, but I think there are some useful usecases where FN is different than N. There is indeed no guarantee of "referential integrity" as you say, and that is exactly the point of FN. I want to store that my contact name is John Doe, but I do want it to display as “My very best friend” in my contact list.
If you take a close look at the patch, you will see that it does not remove the globalContactStoreFN option. So : * if I want FN different from N, I set both, * if I want only FN, N will be empty (and thus it will not work on Apple clients as you say) * if I want only N, FN will be set following globalContactStoreFN option.
I believe it's the way a lot of software work, and I may be wrong, but I can't see how it breaks the way it works now: just don't set DisplayName in the interface and the behavior doesn't change.
I would very much like to see the best of both worlds.
Cheers, and many thanks for your very detailed answer.
Hi Jean-Philippe,
On 24 Mar 2016, at 01:23, Jean-Philippe Garcia Ballester jean-philippe@demo-tic.org wrote:
Hello Ján,
I understand your point, but I think there are some useful usecases where FN is different than N. There is indeed no guarantee of "referential integrity" as you say, and that is exactly the point of FN. I want to store that my contact name is John Doe, but I do want it to display as “My very best friend” in my contact list.
I understand that you use vCard in "your way", but FN is definitely not a "your description of a person". FN is supposed to be a formatted name from the N attribute (formatted N = FN). E.g.:
in Hungary the standard name formatting is: Last Middle First N:Last;First;Middle;; FN:Last Middle First but in Slovakia the standard name formatting is: First Last N:Last;First;;; FN:First Last
If you want to use something like “My very best friend”, you should write it into the NICKNAME attribute (most of software will display the nickname instead of the full name if it is present). But the really correct place for that kind of description is the NOTE field (because your string is not a NICKNAME).
If you take a close look at the patch, you will see that it does not remove the globalContactStoreFN option. So :
- if I want FN different from N, I set both,
- if I want only FN, N will be empty (and thus it will not work on Apple clients as you say)
and that's exactly what we don't want to have (software not compatible with Apple)
- if I want only N, FN will be set following globalContactStoreFN option.
95% of users will not understand your 3 points above. They will ask: - When I need to fill FN? - Why FN is here if I don't need to fill it? - If someone will fill only the FN how I will know which name is the First, Last, Middle if the name format is different in each country? - If FN is added automatically from the N what will happen if I later edit the N attribute in the contact? ... do I need to edit the FN too?
I believe it's the way a lot of software work, and I may be wrong, but I can't see how it breaks the way it works now: just don't set DisplayName in the interface and the behavior doesn't change.
See the questions above ... it will confuse most of our users without any real benefit.
I would very much like to see the best of both worlds.
If somebody wants to have FN he/she can use your patch, but we really don't want to add it into the official release.
Cheers,
JM
Cheers, and many thanks for your very detailed answer.
-- Jean-Philippe Garcia Ballester
Le Wednesday, March 23, 2016 10:29:44 PM CET Ján Máté a écrit :
Hi Jean-Philippe,
thanks for your patch, but unfortunately I cannot add it to the official release :-/
This feature was discussed multiple times, and there are reasons why we don't want it:
1.) FN only duplicates the data in N (which is required attribute and contains the structured representation of data) 2.) there is no guarantee of "referential integrity" between N and FN; e.g. you can create something like: N:Doe;John;;Dr.; FN:Mr. Peter Parker 3.) most of users don't want to write the name multiple times (into the N and then into the FN attribute), and will be confused why there are 2 fields for the same information 4.) we want to be 100% compatible with Apple clients, and Apple uses only the N attribute
For backward compatibility we added support for the globalContactStoreFN option, where you can "format" the content of the FN attribute (this attribute is write-only for "older" clients which use the FN instead of N).
I fully understand your situation and maybe there will be more users who find your patch useful, but the real and good solution is to update all your contacts with fixed N attribute.
If you use DAViCal, it requires only a simple PLPGSQL script which extracts the FN attribute, then format it (e.g. using a simple capturing regex match), remove the current N attribute, then add it back e.g. before the "END:VCARD" line and call the write_sync_change function (with correct parameters). It is much better approach than using unstructured data; personally I used it multiple times to fix common errors in our database (which currently contains 18807 contacts).
Cheers,
JM
On 23 Mar 2016, at 19:42, Jean-Philippe Garcia Ballester jean-philippe@demo-tic.org wrote:
Hello all,
The “Formatted Name” field of contacts is not used. Our problem is that we have a very big addressbook, and all contacts only have Formatted Name (no Last Name nor First Name).
Attached is a patch that adds a field named “Display Name”, as most carddav clients call it, that is displayed in the contact window and editable. It is also used by default in the contact list.
Warning: it has not been extensively tested (and only with Davical as a server), but it seems to work well.
It would be very interesting for us if it could be tested by more people and eventually included in an official release.
Best regards,
Hello Ján,
On Friday, March 25, 2016 1:26:20 AM CEST Ján Máté wrote:
On 24 Mar 2016, at 01:23, Jean-Philippe Garcia Ballester jean-philippe@demo-tic.org wrote: I understand your point, but I think there are some useful usecases where FN is different than N. There is indeed no guarantee of "referential integrity" as you say, and that is exactly the point of FN. I want to store that my contact name is John Doe, but I do want it to display as “My very best friend” in my contact list.
I understand that you use vCard in "your way", but FN is definitely not a "your description of a person". FN is supposed to be a formatted name from the N attribute (formatted N = FN). E.g.:
I read the RFC and you are right on what FN is supposed to be. I fixed my addressbook. I'm not using my patch anymore, but anyone interested can use it. No regret though, it was fun hacking InfCloud ;)
Best regards, and thank you again for your time and detailed answers,