]> granicus.if.org Git - ejabberd/commitdiff
* src/msgs/ru.msg: Updated (thanks to Sergei Golovan)
authorAlexey Shchepin <alexey@process-one.net>
Tue, 10 Feb 2004 20:50:41 +0000 (20:50 +0000)
committerAlexey Shchepin <alexey@process-one.net>
Tue, 10 Feb 2004 20:50:41 +0000 (20:50 +0000)
* src/mod_irc/mod_irc.erl: Now uses "ejabber:config" namespace
(thanks to Sergei Golovan)

* src/mod_disco.erl: Fixed disco category and type (thanks to
Sergei Golovan)
* src/mod_pubsub/mod_pubsub.erl: Likewise

* src/jlib.hrl: Added "ejabber:config" namespace (thanks to Sergei
Golovan)

SVN Revision: 202

ChangeLog
src/jlib.hrl
src/mod_disco.erl
src/mod_irc/mod_irc.erl
src/mod_pubsub/mod_pubsub.erl
src/msgs/ru.msg

index 0469227e20a37892c680efbbfbe9a497bb2c5fb4..9aa8206ba7b647c2867c39b37918a2afedbd8e74 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2004-02-10  Alexey Shchepin  <alexey@sevcom.net>
+
+       * src/msgs/ru.msg: Updated (thanks to Sergei Golovan)
+
+       * src/mod_irc/mod_irc.erl: Now uses "ejabber:config" namespace
+       (thanks to Sergei Golovan)
+
+       * src/mod_disco.erl: Fixed disco category and type (thanks to
+       Sergei Golovan)
+       * src/mod_pubsub/mod_pubsub.erl: Likewise
+
+       * src/jlib.hrl: Added "ejabber:config" namespace (thanks to Sergei
+       Golovan)
+
 2004-01-27  Alexey Shchepin  <alexey@sevcom.net>
 
        * src/ejabberd_ctl.erl: Added command for log reopening
index 9a0be9ace4e501a9cf944a849d3509f6d3e91e4a..6c9631c5a8057af446c21e1bddea648aaf3939dc 100644 (file)
@@ -33,6 +33,8 @@
 -define(NS_PUBSUB_OWNER, "http://jabber.org/protocol/pubsub#owner").
 -define(NS_PUBSUB_NMI,   "http://jabber.org/protocol/pubsub#node-meta-info").
 
+-define(NS_EJABBERD_CONFIG, "ejabberd:config").
+
 -define(NS_STREAM,       "http://etherx.jabber.org/streams").
 
 -define(NS_STANZAS,      "urn:ietf:params:xml:ns:xmpp-stanzas").
index f0ec53671dcbd676b648b772848cf50d69357f67..1c7f8d0b96332efefa321d0221436316a9b5eda3 100644 (file)
@@ -124,7 +124,7 @@ process_local_iq_info(From, _To, #iq{type = Type, xmlns = XMLNS,
                                     "query",
                                     [{"xmlns", ?NS_DISCO_INFO}],
                                     [{xmlelement, "identity",
-                                      [{"category", "service"},
+                                      [{"category", "server"},
                                        {"type", "im"},
                                        {"name", "ejabberd"}], []}] ++
                                     Features
index 8e70f4d9ac8c9bafd42f552fa7e927975965ac4c..8a5a356726090b4fe10a2c1e53b1453dcad6f296 100644 (file)
@@ -72,9 +72,9 @@ do_route(Host, From, To, Packet) ->
                            ejabberd_router:route(To,
                                                  From,
                                                  jlib:iq_to_xml(Res));
-                       #iq{type = Type, xmlns = ?NS_IQDATA,
+                       #iq{type = Type, xmlns = ?NS_EJABBERD_CONFIG,
                            sub_el = SubEl} = IQ ->
-                           iq_data(From, To, IQ);
+                           ejabberd_config(From, To, IQ);
                        #iq{} = IQ ->
                            Err = jlib:make_error_reply(
                                    Packet, ?ERR_FEATURE_NOT_IMPLEMENTED),
@@ -155,12 +155,12 @@ iq_disco() ->
      {xmlelement, "feature",
       [{"var", ?NS_MUC}], []},
      {xmlelement, "feature",
-      [{"var", ?NS_IQDATA}], []}].
+      [{"var", ?NS_EJABBERD_CONFIG}], []}].
 
 
 
-iq_data(From, To, #iq{type = Type} = IQ) ->
-    case catch process_iq_data(From, To, IQ) of
+ejabberd_config(From, To, #iq{type = Type} = IQ) ->
+    case catch process_ejabberd_config(From, To, IQ) of
        {'EXIT', Reason} ->
            ?ERROR_MSG("~p", [Reason]);
        ResIQ ->
@@ -173,42 +173,64 @@ iq_data(From, To, #iq{type = Type} = IQ) ->
            end
     end.
 
+find_xdata_el({xmlelement, _Name, _Attrs, SubEls}) ->
+    find_xdata_el1(SubEls).
 
-process_iq_data(From, To,
+find_xdata_el1([]) ->
+    false;
+
+find_xdata_el1([{xmlelement, Name, Attrs, SubEls} | Els]) ->
+    case xml:get_attr_s("xmlns", Attrs) of
+       ?NS_XDATA ->
+           {xmlelement, Name, Attrs, SubEls};
+       _ ->
+           find_xdata_el1(Els)
+    end;
+
+find_xdata_el1([_ | Els]) ->
+    find_xdata_el1(Els).
+
+process_ejabberd_config(From, To,
                #iq{type = Type, xmlns = XMLNS, sub_el = SubEl} = IQ) ->
     Lang = xml:get_tag_attr_s("xml:lang", SubEl),
     case Type of
        set ->
-           case xml:get_tag_attr_s("type", SubEl) of
-               "cancel" ->
-                   IQ#iq{type = result,
-                         sub_el = [{xmlelement, "query",
-                                    [{"xmlns", XMLNS}], []}]};
-               "submit" ->
-                   XData = jlib:parse_xdata_submit(SubEl),
-                   case XData of
-                       invalid ->
-                           IQ#iq{type = error,
-                                 sub_el = [SubEl, ?ERR_BAD_REQUEST]};
-                       _ ->
-                           Node =
-                               string:tokens(
-                                 xml:get_tag_attr_s("node", SubEl),
-                                 "/"),
-                           case set_form(From, Node, Lang, XData) of
-                               {result, Res} ->
-                                   IQ#iq{type = result,
-                                         sub_el = [{xmlelement, "query",
-                                                    [{"xmlns", XMLNS}],
-                                                    Res
-                                                   }]};
-                               {error, Error} ->
+           XDataEl = find_xdata_el(SubEl),
+           case XDataEl of
+               false ->
+                   IQ#iq{type = error, sub_el = [SubEl, ?ERR_NOT_ACCEPTABLE]};
+               {xmlelement, _Name, Attrs, SubEls} ->
+                   case xml:get_attr_s("type", Attrs) of
+                       "cancel" ->
+                           IQ#iq{type = result,
+                               sub_el = [{xmlelement, "query",
+                                          [{"xmlns", XMLNS}], []}]};
+                       "submit" ->
+                           XData = jlib:parse_xdata_submit(XDataEl),
+                           case XData of
+                               invalid ->
                                    IQ#iq{type = error,
-                                         sub_el = [SubEl, Error]}
-                           end
-                   end;
-               _ ->
-                   IQ#iq{type = error, sub_el = [SubEl, ?ERR_NOT_ALLOWED]}
+                                         sub_el = [SubEl, ?ERR_BAD_REQUEST]};
+                               _ ->
+                                   Node = string:tokens(
+                                            xml:get_tag_attr_s("node", SubEl),
+                                            "/"),
+                                   case set_form(From, Node, Lang, XData) of
+                                       {result, Res} ->
+                                           IQ#iq{type = result,
+                                                 sub_el = [{xmlelement, "query",
+                                                            [{"xmlns", XMLNS}],
+                                                            Res
+                                                           }]};
+                                       {error, Error} ->
+                                           IQ#iq{type = error,
+                                                 sub_el = [SubEl, Error]}
+                                   end
+                           end;
+                       _ ->
+                           IQ#iq{type = error,
+                                 sub_el = [SubEl, ?ERR_BAD_REQUEST]}
+                   end
            end;
        get ->
            Node =
@@ -246,54 +268,61 @@ get_form(From, [], Lang) ->
            Customs;
        {Username, Encodings} ->
            {result,
-            [{xmlelement, "title", [],
+            [{xmlelement, "instructions", [],
               [{xmlcdata,
-                User ++ "@" ++ Server ++ " " ++
-                translate:translate(Lang, "Configuration")}]},
+                translate:translate(
+                  Lang,
+                  "You need an x:data capable client "
+                  "to configure mod_irc settings")}]},
+             {xmlelement, "x", [{"xmlns", ?NS_XDATA}],
+              [{xmlelement, "title", [],
+                [{xmlcdata,
+                  translate:translate(Lang, "mod_irc configuration for") ++
+                  " " ++ User ++ "@" ++ Server}]},
                      %{xmlelement, "instructions", [],
                      % [{xmlcdata,
                      %   translate:translate(
                      %     Lang, "")}]},
-             {xmlelement, "field", [{"type", "text-single"},
-                                    {"label",
-                                     translate:translate(
-                                       Lang, "IRC Username")},
-                                    {"var", "username"}],
-              [{xmlelement, "value", [], [{xmlcdata, Username}]}]},
-             {xmlelement, "field", [{"type", "fixed"}],
-              [{xmlelement, "value", [],
-                [{xmlcdata,
-                  lists:flatten(
-                    io_lib:format(
-                      translate:translate(
-                        Lang,
-                        "If you want to specify different encodings "
-                        "for IRC servers, fill this list with values "
-                        "in format '{\"irc server\", \"encoding\"}'.  "
-                        "By default this service use \"~s\" encoding."),
-                      [?DEFAULT_IRC_ENCODING]))}]}]},
-             {xmlelement, "field", [{"type", "fixed"}],
-              [{xmlelement, "value", [],
-                [{xmlcdata,
-                  translate:translate(
-                    Lang,
-                    "Example: [{\"irc.lucky.net\", \"koi8-r\"}, "
-                    "{\"vendetta.fef.net\", \"iso8859-1\"}]."
-                 )}]}]},
-             {xmlelement, "field", [{"type", "text-multi"},
-                                    {"label",
-                                     translate:translate(Lang, "Encodings")},
-                                    {"var", "encodings"}],
-                      lists:map(
-                        fun(S) ->
-                                {xmlelement, "value", [], [{xmlcdata, S}]}
-                        end,
-                        string:tokens(
-                          lists:flatten(
-                            io_lib:format("~p.", [Encodings])),
-                          "\n"))
-             }
-            ]}
+               {xmlelement, "field", [{"type", "text-single"},
+                                      {"label",
+                                       translate:translate(
+                                         Lang, "IRC Username")},
+                                      {"var", "username"}],
+                [{xmlelement, "value", [], [{xmlcdata, Username}]}]},
+               {xmlelement, "field", [{"type", "fixed"}],
+                [{xmlelement, "value", [],
+                  [{xmlcdata,
+                    lists:flatten(
+                      io_lib:format(
+                        translate:translate(
+                          Lang,
+                          "If you want to specify different encodings "
+                          "for IRC servers, fill this list with values "
+                          "in format '{\"irc server\", \"encoding\"}'.  "
+                          "By default this service use \"~s\" encoding."),
+                        [?DEFAULT_IRC_ENCODING]))}]}]},
+               {xmlelement, "field", [{"type", "fixed"}],
+                [{xmlelement, "value", [],
+                  [{xmlcdata,
+                    translate:translate(
+                      Lang,
+                      "Example: [{\"irc.lucky.net\", \"koi8-r\"}, "
+                      "{\"vendetta.fef.net\", \"iso8859-1\"}]."
+                   )}]}]},
+               {xmlelement, "field", [{"type", "text-multi"},
+                                      {"label",
+                                       translate:translate(Lang, "Encodings")},
+                                      {"var", "encodings"}],
+                        lists:map(
+                          fun(S) ->
+                                  {xmlelement, "value", [], [{xmlcdata, S}]}
+                          end,
+                          string:tokens(
+                            lists:flatten(
+                              io_lib:format("~p.", [Encodings])),
+                            "\n"))
+               }
+              ]}]}
     end;
 
 
index 98125e0c6c0358c7dfd4a2540d7fd1aae20c1498..75c6c10dab14e8322445c78c6d86da7898cf681b 100644 (file)
@@ -213,8 +213,8 @@ iq_disco_info(SNode) ->
     case Node of
        [] ->
            [{xmlelement, "identity",
-             [{"category", "service"},
-              {"type", "pubsub"},
+             [{"category", "pubsub"},
+              {"type", "generic"},
               {"name", "ejabberd/mod_pubsub"}], []},
             %{xmlelement, "feature", [{"var", ?NS_REGISTER}], []},
             {xmlelement, "feature", [{"var", ?NS_PUBSUB}], []},
index 782b6acd2e804733e5cdef594e3dbc7013603e0e..dec81d2019a40025376d5c53e530aa193a4a1207 100644 (file)
 {"Make room anonymous?", "Сделать комнату анонимной?"}.
 {"Enable logging?", "Включить журналирование?"}.
 
-
+% mod_irc/mod_irc.erl
+{"You need an x:data capable client to configure mod_irc settings",
+ "Чтобы настроить параметры mod_irc, нужен x:data-совместимый клиент"}.
+{"mod_irc configuration for", "Конфигурация mod_irc для"}.
+{"IRC Username", "Имя пользователя IRC"}.
+{"If you want to specify different encodings for IRC servers, fill this list with values in format '{\"irc server\", \"encoding\"}'.  By default this service use \"~s\" encoding.", "Чтобы указать различные кодировки для разных серверов IRC, заполните список значениями в формате '{\"irc server\", \"encoding\"}'. По умолчанию эта служба использует кодировку \"~s\"."}.
+{"Example: [{\"irc.lucky.net\", \"koi8-r\"}, {\"vendetta.fef.net\", \"iso8859-1\"}].", "Примеры: [{\"irc.lucky.net\", \"koi8-r\"}, {\"vendetta.fef.net\", \"iso8859-1\"}]."}.
+{"Encodings", "Кодировки"}.
 
 % Local Variables:
 % mode: erlang