From ccbc4b0c042e124b051a307ad43aa754450b8977 Mon Sep 17 00:00:00 2001 From: Badlop Date: Sat, 22 Dec 2007 13:58:19 +0000 Subject: [PATCH] * src/mod_announce.erl: When editing MOTD, display current value (EJAB-475) SVN Revision: 1100 --- ChangeLog | 3 ++- src/mod_announce.erl | 30 +++++++++++++++++++++++++----- 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index b04645d0f..56279b99b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,7 +2,8 @@ * src/mod_announce.erl: Fixed unnoticeable bug related to Node matching. Renamed some nonstandard node names according to - XEP-0133. Small reordering of clauses. + XEP-0133. Small reordering of clauses. When editing MOTD, display + current value (EJAB-475) 2007-12-22 Christophe Romain diff --git a/src/mod_announce.erl b/src/mod_announce.erl index 316744311..7579cfaf0 100644 --- a/src/mod_announce.erl +++ b/src/mod_announce.erl @@ -434,7 +434,7 @@ announce_commands(From, To, #adhoc_response{status = canceled}); XData == false, ActionIsExecute -> %% User requests form - Elements = generate_adhoc_form(Lang, Node), + Elements = generate_adhoc_form(Lang, Node, To#jid.lserver), adhoc:produce_response( Request, #adhoc_response{status = executing, @@ -453,14 +453,25 @@ announce_commands(From, To, -define(VVALUE(Val), {xmlelement, "value", [], [{xmlcdata, Val}]}). +-define(VVALUEL(Val), + case Val of + "" -> []; + _ -> [?VVALUE(Val)] + end). -define(TVFIELD(Type, Var, Val), {xmlelement, "field", [{"type", Type}, {"var", Var}], - [?VVALUE(Val)]}). + ?VVALUEL(Val)}). -define(HFIELD(), ?TVFIELD("hidden", "FORM_TYPE", ?NS_ADMIN)). -generate_adhoc_form(Lang, Node) -> +generate_adhoc_form(Lang, Node, ServerHost) -> LNode = tokenize(Node), + {OldSubject, OldBody} = if (LNode == ?NS_ADMINL("edit-motd")) + or (LNode == ?NS_ADMINL("edit-motd-allhosts")) -> + get_stored_motd(ServerHost); + true -> + {[], []} + end, {xmlelement, "x", [{"xmlns", ?NS_XDATA}, {"type", "form"}], @@ -481,12 +492,12 @@ generate_adhoc_form(Lang, Node) -> [{"var", "subject"}, {"type", "text-single"}, {"label", translate:translate(Lang, "Subject")}], - []}, + ?VVALUEL(OldSubject)}, {xmlelement, "field", [{"var", "body"}, {"type", "text-multi"}, {"label", translate:translate(Lang, "Message body")}], - []}] + ?VVALUEL(OldBody)}] end}. join_lines([]) -> @@ -807,6 +818,15 @@ send_motd(#jid{luser = LUser, lserver = LServer} = JID) -> ok end. +get_stored_motd(LServer) -> + case catch mnesia:dirty_read({motd, LServer}) of + [#motd{packet = Packet}] -> + {xml:get_subtag_cdata(Packet, "subject"), + xml:get_subtag_cdata(Packet, "body")}; + _ -> + {"", ""} + end. + %%------------------------------------------------------------------------- update_tables() ->