From: Badlop Date: Wed, 7 Jan 2009 01:38:45 +0000 (+0000) Subject: * src/mod_roster.erl: Show hyperlinks to local contacts when X-Git-Tag: v2.1.0~18^2~487 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=14bc7cf77fc75d9696fbc8735ae4f4c5f823df5d;p=ejabberd * src/mod_roster.erl: Show hyperlinks to local contacts when browsing roster of account in Web Admin (EJAB-480) * src/mod_roster_odbc.erl: Likewise SVN Revision: 1778 --- diff --git a/ChangeLog b/ChangeLog index 0192aa7e0..59403788a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2009-01-07 Badlop + * src/mod_roster.erl: Show hyperlinks to local contacts when + browsing roster of account in Web Admin (EJAB-480) + * src/mod_roster_odbc.erl: Likewise + * src/web/ejabberd_web_admin.erl: WebAdmin serves Guide and links to related sections; the path to guide.html can be configured with option doc_path (EJAB-837) diff --git a/src/mod_roster.erl b/src/mod_roster.erl index 79cfb5199..4521c7df3 100644 --- a/src/mod_roster.erl +++ b/src/mod_roster.erl @@ -815,9 +815,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"}], @@ -855,6 +855,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, _} -> 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, _} ->