Software /
code /
prosody
Comparison
plugins/adhoc/adhoc.lib.lua @ 5024:d25e1b9332cc
Merge with Florob
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Sat, 28 Jul 2012 01:14:31 +0100 |
parent | 4993:5243b74a4cbb |
child | 5075:4d939d2b1574 |
comparison
equal
deleted
inserted
replaced
5023:dcc8e789df36 | 5024:d25e1b9332cc |
---|---|
10 | 10 |
11 local states = {} | 11 local states = {} |
12 | 12 |
13 local _M = {}; | 13 local _M = {}; |
14 | 14 |
15 function _cmdtag(desc, status, sessionid, action) | 15 local function _cmdtag(desc, status, sessionid, action) |
16 local cmd = st.stanza("command", { xmlns = xmlns_cmd, node = desc.node, status = status }); | 16 local cmd = st.stanza("command", { xmlns = xmlns_cmd, node = desc.node, status = status }); |
17 if sessionid then cmd.attr.sessionid = sessionid; end | 17 if sessionid then cmd.attr.sessionid = sessionid; end |
18 if action then cmd.attr.action = action; end | 18 if action then cmd.attr.action = action; end |
19 | 19 |
20 return cmd; | 20 return cmd; |
33 dataIn.form = stanza.tags[1]:child_with_ns("jabber:x:data"); | 33 dataIn.form = stanza.tags[1]:child_with_ns("jabber:x:data"); |
34 | 34 |
35 local data, state = command:handler(dataIn, states[sessionid]); | 35 local data, state = command:handler(dataIn, states[sessionid]); |
36 states[sessionid] = state; | 36 states[sessionid] = state; |
37 local stanza = st.reply(stanza); | 37 local stanza = st.reply(stanza); |
38 local cmdtag; | |
38 if data.status == "completed" then | 39 if data.status == "completed" then |
39 states[sessionid] = nil; | 40 states[sessionid] = nil; |
40 cmdtag = command:cmdtag("completed", sessionid); | 41 cmdtag = command:cmdtag("completed", sessionid); |
41 elseif data.status == "canceled" then | 42 elseif data.status == "canceled" then |
42 states[sessionid] = nil; | 43 states[sessionid] = nil; |
62 local actions = st.stanza("actions"); | 63 local actions = st.stanza("actions"); |
63 for _, action in ipairs(content) do | 64 for _, action in ipairs(content) do |
64 if (action == "prev") or (action == "next") or (action == "complete") then | 65 if (action == "prev") or (action == "next") or (action == "complete") then |
65 actions:tag(action):up(); | 66 actions:tag(action):up(); |
66 else | 67 else |
67 module:log("error", 'Command "'..command.name.. | 68 module:log("error", "Command %q at node %q provided an invalid action %q", |
68 '" at node "'..command.node..'" provided an invalid action "'..action..'"'); | 69 command.name, command.node, action); |
69 end | 70 end |
70 end | 71 end |
71 cmdtag:add_child(actions); | 72 cmdtag:add_child(actions); |
72 elseif name == "form" then | 73 elseif name == "form" then |
73 cmdtag:add_child((content.layout or content):form(content.values)); | 74 cmdtag:add_child((content.layout or content):form(content.values)); |