При добавлении пользователей в группу общих контактов, в ростере отображаются полные адреса, а хотелось бы чтобы выводилось имя с vcard-ldap
Нашел фикс, но он для внутренней базы и для odbc:
+get_rosteritem_name({U, S, _}) ->
+ From = jlib:make_jid("", S, mod_shared_roster),
+ To = jlib:make_jid(U, S, ""),
+ IQ = {iq,"",get,"vcard-temp","",
+ {xmlelement,"vCard",[{"xmlns","vcard-temp"}],[]}},
+ IQ_Vcard = mod_vcard:process_sm_iq(From, To, IQ),
+ case IQ_Vcard#iq.sub_el of
+ [] -> "";
+ [Vcard] ->
+ case xml:get_path_s(Vcard, [{elem, "NICKNAME"}, cdata]) of
+ "" -> xml:get_path_s(Vcard, [{elem, "FN"}, cdata]);
+ Nickname -> Nickname
+ end
+ end.
in_subscription(_, User, Server, JID, Type, Reason) ->
process_subscription(in, User, Server, JID, Type, Reason).
@@ -429,6 +443,7 @@
{Subscription, Pending} ->
NewItem = Item#roster{subscription = Subscription,
ask = Pending,
+ name = get_rosteritem_name(Item#roster.jid),
askmessage = list_to_binary(AskMessage)},
mnesia:write(NewItem),
{{push, NewItem}, AutoReply}
Index: src/mod_roster_odbc.erl
===================================================================
--- src/mod_roster_odbc.erl (revisi�n: 751)
+++ src/mod_roster_odbc.erl (copia de trabajo)
@@ -400,6 +400,20 @@
ask_to_pending(Ask) -> Ask.
+get_rosteritem_name({U, S, _}) ->
+ From = jlib:make_jid("", S, mod_shared_roster),
+ To = jlib:make_jid(U, S, ""),
+ IQ = {iq,"",get,"vcard-temp","",
+ {xmlelement,"vCard",[{"xmlns","vcard-temp"}],[]}},
+ IQ_Vcard = mod_vcard_odbc:process_sm_iq(From, To, IQ),
+ case IQ_Vcard#iq.sub_el of
+ [] -> "";
+ [Vcard] ->
+ case xml:get_path_s(Vcard, [{elem, "NICKNAME"}, cdata]) of
+ "" -> xml:get_path_s(Vcard, [{elem, "FN"}, cdata]);
+ Nickname -> Nickname
+ end
+ end.
in_subscription(_, User, Server, JID, Type, Reason) ->
process_subscription(in, User, Server, JID, Type, Reason).
@@ -466,6 +480,7 @@
{Subscription, Pending} ->
NewItem = Item#roster{subscription = Subscription,
ask = Pending,
+ name = get_rosteritem_name(Item#roster.jid),
askmessage = AskMessage},
ItemVals = record_to_string(NewItem),
odbc_queries:roster_subscribe(LServer, Username, SJID, ItemVals),
Есть ли нечто подобное для Ldap-а?
Пробовал менять mod_vcard на mod_vcard_ldap: не помогло.
а можно ли по
а можно ли по подробнее о патче? у меня внутренняя база и некоторые жаловались на это
вот, клиенты JAJC и Psi (что популярные на наших серверах) не поддерживают XEP-0172, если я конечно не ошибаюсь в протоколе
https://support.process-one.n
дык
https://support.process-one.net/browse/EJAB-114
у меня вот 1.1.4_2 версия стоит, тут на сколько я понял по описанию этот баг уже устранен, но я не наблюдаю того, что в ростере я должен иметь Ник, а вижу имя из JID до "@". Возможно в конфиге что-то надо поправить/дополнить? Поиск не помог, тыкните носом, если не трудно
K0NCTANT1N wrote: а
а можно ли по подробнее о патче? у меня внутренняя база и некоторые жаловались на это
вот, клиенты JAJC и Psi (что популярные на наших серверах) не поддерживают XEP-0172, если я конечно не ошибаюсь в протоколе
Да тут вроде дело не в протоколе. Это сам мод ростерс выдает.
http://support.process-one.net/browse/EJAB-114;jsessionid=A2029C7214282E...
Для внутренней базы вроде проблем нету: