aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBadlop <badlop@process-one.net>2007-12-22 13:58:19 +0000
committerBadlop <badlop@process-one.net>2007-12-22 13:58:19 +0000
commitccbc4b0c042e124b051a307ad43aa754450b8977 (patch)
treed230de2a9e47acedea8430d17f7c295509fccc86
parent* src/mod_announce.erl: Fixed unnoticeable bug related to Node (diff)
* src/mod_announce.erl: When editing MOTD, display current value (EJAB-475)
SVN Revision: 1100
-rw-r--r--ChangeLog3
-rw-r--r--src/mod_announce.erl30
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 <christophe.romain@process-one.net>
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() ->