]> granicus.if.org Git - ejabberd/commitdiff
* src/mod_announce.erl: When editing MOTD, display current value (EJAB-475)
authorBadlop <badlop@process-one.net>
Sat, 22 Dec 2007 13:58:19 +0000 (13:58 +0000)
committerBadlop <badlop@process-one.net>
Sat, 22 Dec 2007 13:58:19 +0000 (13:58 +0000)
SVN Revision: 1100

ChangeLog
src/mod_announce.erl

index b04645d0f7f3283d345da4f2f2d81ebf7684deb6..56279b99bbf61aec8f386e3b3d2dc2b5ca842b61 100644 (file)
--- 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>
 
index 3167443110606192bc516a05e07889ac062458f6..7579cfaf027e51cf8f8ce802386e1e6c6269377f 100644 (file)
@@ -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() ->