diff options
Diffstat (limited to 'src/mod_roster_odbc.erl')
-rw-r--r-- | src/mod_roster_odbc.erl | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/src/mod_roster_odbc.erl b/src/mod_roster_odbc.erl index 5b190671f..25c54b01c 100644 --- a/src/mod_roster_odbc.erl +++ b/src/mod_roster_odbc.erl @@ -915,9 +915,9 @@ user_roster(User, Server, Query, Lang) -> [?C(Group), ?BR] end, R#roster.groups), Pending = ask_to_pending(R#roster.ask), + TDJID = build_contact_jid_td(R#roster.jid), ?XE("tr", - [?XAC("td", [{"class", "valign"}], - jlib:jid_to_string(R#roster.jid)), + [TDJID, ?XAC("td", [{"class", "valign"}], R#roster.name), ?XAC("td", [{"class", "valign"}], @@ -955,6 +955,24 @@ user_roster(User, Server, Query, Lang) -> ?INPUTT("submit", "addjid", "Add Jabber ID") ])]. +build_contact_jid_td(RosterJID) -> + %% Convert {U, S, R} into {jid, U, S, R, U, S, R}: + ContactJID = jlib:make_jid(RosterJID), + JIDURI = case {ContactJID#jid.luser, ContactJID#jid.lserver} of + {"", _} -> ""; + {CUser, CServer} -> + case lists:member(CServer, ?MYHOSTS) of + false -> ""; + true -> "/admin/server/" ++ CServer ++ "/user/" ++ CUser ++ "/" + end + end, + case JIDURI of + [] -> + ?XAC("td", [{"class", "valign"}], jlib:jid_to_string(RosterJID)); + URI when is_list(URI) -> + ?XAE("td", [{"class", "valign"}], [?AC(JIDURI, jlib:jid_to_string(RosterJID))]) + end. + user_roster_parse_query(User, Server, Items, Query) -> case lists:keysearch("addjid", 1, Query) of {value, _} -> |