diff options
author | Alexey Shchepin <alexey@process-one.net> | 2004-08-02 22:17:05 +0000 |
---|---|---|
committer | Alexey Shchepin <alexey@process-one.net> | 2004-08-02 22:17:05 +0000 |
commit | a8f4e8450339ab1f15af2fcfc5b919d9ebc57a50 (patch) | |
tree | ed199487ca7b8af258cfb5fece2dd985d2350ea7 /src/web/ejabberd_web_admin.erl | |
parent | * src/tls/tls.erl: Added recv_data/2 function (diff) |
* src/web/ejabberd_web_admin.erl: Added user's roster page
* src/mod_irc/mod_irc_connection.erl: Bugfix
SVN Revision: 253
Diffstat (limited to 'src/web/ejabberd_web_admin.erl')
-rw-r--r-- | src/web/ejabberd_web_admin.erl | 66 |
1 files changed, 66 insertions, 0 deletions
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 @@ -778,6 +778,13 @@ process_admin(#request{user = User, 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, lang = Lang} = Request) -> @@ -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) ++ |