2006-06-07 Mickael Remond <mickael.remond@process-one.net>
- * src/mod_pubsub/mod_pubsub.erl: Support for pubsub node creation ACL.
- It is now possible to limit the node creation rights using an ACL from
- ejabberd config file (Thanks to Christophe Romain).
+ * src/mod_pubsub/mod_pubsub.erl: Support for pubsub node creation
+ ACL. It is now possible to limit the node creation rights using an
+ ACL from ejabberd config file (Thanks to Christophe Romain).
* doc/guide.tex: Likewise.
* src/ejabberd.cfg.example.
+ * src/mod_pubsub/mod_pubsub.erl: Discovery query on an item does
+ no more return an "item not found error". Discovery stop correctly
+ at the item level (Thanks to Christophe Romain).
+
2006-06-02 Mickael Remond <mickael.remond@process-one.net>
* src/web/ejabberd_http_poll.erl: Messages polled between the
[]
end.
-
iq_disco_items(Host, From, SNode) ->
- Node = string:tokens(SNode, "/"),
+ {Node,ItemID} = case SNode of
+ [] ->
+ {[],none};
+ _ ->
+ Tokens = string:tokens(SNode, "!"),
+ NodeList = string:tokens(lists:nth(1, Tokens), "/"),
+ ItemName = case length(Tokens) of
+ 2 -> lists:nth(2, Tokens);
+ _ -> none
+ end,
+ {NodeList, ItemName}
+ end,
+ NodeFull = string:tokens(SNode,"/"),
F = fun() ->
case mnesia:read({pubsub_node, {Host, Node}}) of
[#pubsub_node{info = Info}] ->
- SubNodes = mnesia:index_read(pubsub_node,
+ case ItemID of
+ none ->
+ SubNodes = mnesia:index_read(pubsub_node,
{Host, Node},
#pubsub_node.host_parent),
- SubItems =
- lists:map(fun(#pubsub_node{host_node = {_, N}}) ->
+ SubItems = lists:map(fun(#pubsub_node{host_node = {_, N}}) ->
SN = node_to_string(N),
{xmlelement, "item",
[{"jid", Host},
{"node", SN},
{"name", lists:last(N)}], []}
end, SubNodes),
- SN = node_to_string(Node),
- Items =
- lists:map(fun(#item{id = Name}) ->
+ SN = node_to_string(Node),
+ Items = lists:map(fun(#item{id = Name}) ->
+ RealName = case Name of
+ [] -> "item";
+ _ -> Name
+ end,
{xmlelement, "item",
[{"jid", Host},
{"node", SN ++ "!" ++ Name},
- {"name", Name}], []}
+ {"name", RealName}], []}
end, Info#nodeinfo.items),
- SubItems ++ Items;
+ SubItems ++ Items;
+ _ ->
+ []
+ end;
[] ->
case Node of
[] ->
{error, ?ERR_INTERNAL_SERVER_ERROR}
end.
-
-
iq_get_vcard(Lang) ->
[{xmlelement, "FN", [],
[{xmlcdata, "ejabberd/mod_pubsub"}]},