From a8f4e8450339ab1f15af2fcfc5b919d9ebc57a50 Mon Sep 17 00:00:00 2001 From: Alexey Shchepin Date: Mon, 2 Aug 2004 22:17:05 +0000 Subject: * src/web/ejabberd_web_admin.erl: Added user's roster page * src/mod_irc/mod_irc_connection.erl: Bugfix SVN Revision: 253 --- src/web/ejabberd_web_admin.erl | 66 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) (limited to 'src/web/ejabberd_web_admin.erl') diff --git a/src/web/ejabberd_web_admin.erl b/src/web/ejabberd_web_admin.erl index 457ebee58..550d3ecd0 100644 --- a/src/web/ejabberd_web_admin.erl +++ b/src/web/ejabberd_web_admin.erl @@ -777,6 +777,13 @@ process_admin(#request{user = User, Res = user_info(U, Query, Lang), make_xhtml(Res, Lang); +process_admin(#request{user = User, + path = ["user", U, "roster"], + q = Query, + lang = Lang} = Request) -> + Res = user_roster(U, Query, Lang), + make_xhtml(Res, Lang); + process_admin(#request{user = User, path = ["nodes"], q = Query, @@ -1135,6 +1142,65 @@ user_parse_query(User, Query) -> end. +-record(roster, {uj, + user, + jid, + name = "", + subscription = none, + ask = none, + groups = [], + xattrs = [], + xs = []}). + +ask_to_pending(subscribe) -> out; +ask_to_pending(unsubscribe) -> none; +ask_to_pending(Ask) -> Ask. + +user_roster(User, Query, Lang) -> + %Res = user_parse_query(User, Query), + Res = nothing, % TODO + LUser = jlib:nameprep(User), + Items = mnesia:dirty_index_read(roster, LUser, #roster.user), + SItems = lists:sort(Items), + FItems = + case SItems of + [] -> + [?CT("None")]; + _ -> + [?XE("table", + [?XE("thead", + [?XE("tr", + [?XCT("td", "JID"), + ?XCT("td", "Name"), + ?XCT("td", "Subscription"), + ?XCT("td", "Pending") + ])]), + ?XE("tbody", + lists:map( + fun(R) -> + ?XE("tr", + [?XE("td", [?C(jlib:jid_to_string( + R#roster.jid))]), + ?XE("td", [?C(R#roster.name)]), + ?XE("td", + [?C(atom_to_list( + R#roster.subscription))]), + ?XE("td", + [?C(atom_to_list( + ask_to_pending( + R#roster.ask)))])]) + end, SItems))])] + end, + [?XC("h1", "Roster of " ++ User)] ++ + case Res of + ok -> [?CT("submitted"), ?P]; + error -> [?CT("bad format"), ?P]; + nothing -> [] + end ++ + [?XAE("form", [{"method", "post"}], + FItems)]. + + get_nodes(Lang) -> RunningNodes = mnesia:system_info(running_db_nodes), StoppedNodes = lists:usort(mnesia:system_info(db_nodes) ++ -- cgit v1.2.3