* 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 <christophe.romain@process-one.net>
#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,
-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"}],
[{"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([]) ->
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() ->