X-Git-Url: http://cgit.babelmonkeys.de/?p=adhocweb.git;a=blobdiff_plain;f=js%2Fmain.js;h=fb76f3810bc0c361f4e453f5c137eee32cd9cc51;hp=2cf542ec2cadb8c251f54a8fa790a6c945b68b7b;hb=043000b3ce1e5b64299def211df4306df2b06315;hpb=1886915ac6353cf32210666f69ef4a8ede39a04c;ds=sidebyside diff --git a/js/main.js b/js/main.js index 2cf542e..fb76f38 100644 --- a/js/main.js +++ b/js/main.js @@ -4,6 +4,8 @@ Strophe.addNamespace("ADHOC", "http://jabber.org/protocol/commands"); var localJID = null; var connection = null; +var sessionid = null; +var cmdNode = null; function log(msg) { var entry = $('
').append(document.createTextNode(msg)); @@ -40,29 +42,148 @@ function onConnect(status) { } } +function addNote(elem, text, type) { + if (!type) { + type = "info"; + } + $(elem).append("" + text + "
"); +} + +function addForm(elem, x) { + var form = $(""); + form.submit(function(){return false;}); + var fieldset = $(""); + form.append(fieldset); + $("").text($(x).find("title").text()).appendTo(fieldset); + $("").text($(x).find("instructions").text()).appendTo(fieldset); + $(x).find("field").each(function(){ + var item = null; + var type = $(this).attr("type"); + if($(this).attr("label")) { + $("").text($(this).attr("label")).attr("for", $(this).attr("var")).appendTo(fieldset); + } + switch(type) { + case "hidden": + item = $(""); + break; + case "boolean": + item = $(""); + break; + case "text-multi": + item = $(""); + break; + case "text-single": + item = $(""); + break; + case "fixed": + item = $("").attr("readonly",true); + break; + case "jid-multi": + item = $(""); + break; + case "jid-single": + item = $(""); + break; + case "list-multi": + item = $(""); + $(this).find("option").each(function(){ + $("").val($(this).find("value").text()).text($(this).attr("label")).appendTo(item); + }); + break; + case "list-single": + item = $(""); + $(this).find("option").each(function(){ + $("").val($(this).find("value").text()).text($(this).attr("label")).appendTo(item); + }); + break; + case "text-private": + item = $(""); + break; + default: + item = $(""); + } + item.addClass("df-item"); + if ($(this).find("value")) { + var value = null; + if ((type == "text-multi") || (type == "jid-multi")) { + value = ""; + $(this).find("value").each(function() { + value = value + $(this).text() + "\n"; + }); + item.val(value); + } else if (type == "list-multi") { + value = new Array(); + $(this).find("value").each(function() { + value[value.length] = $(this).text(); + }); + } else { + item.val($(this).find("value").text()); + } + } + if ($(this).attr("var")) { + item.attr("name", $(this).attr("var")); + item.attr("id", $(this).attr("var")); + } + fieldset.append(item); + fieldset.append("" + $(e).text() + "
"); }); if (status == "executing") { - $("#output").append(""+ - ""+ - ""+ - ""); + $("#output").append(""+ + ""+ + ""+ + ""+ + ""); for (kind in ['prev', 'next', 'complete']) { if ($(result).find('actions ' + kind).length > 0) $('#' + kind + 'Button').attr("disabled", "false"); } + $('#cancelButton').bind("click", function() { + var cancelIQ = $iq({ type: "set", to: "localhost", id: connection.getUniqueId() }) + .c("command", { xmlns: Strophe.NS.ADHOC, node: cmdNode, sessionid: sessionid, action: "cancel" }); + cmdNode = null + sessionid = null; + connection.sendIQ(cancelIQ, displayResult); + }); } else { input = $("").bind("click", function() { $('#output *').remove(); + sessionid = null; + cmdNode = null; getCommandNodes(); }); $("#output").append(input); @@ -70,14 +191,17 @@ function displayResult(result) { } function runCommand() { - execIQ = $iq({ type: "set", to: "localhost", id: connection.getUniqueId() }) - .c("command", { xmlns: Strophe.NS.ADHOC, node: $(this).attr("id"), - action: "execute" }); - connection.sendIQ(execIQ, displayResult); + cmdNode = $(this).attr("id"); // Save not of executed command (in global) + var execIQ = $iq({ type: "set", to: "localhost", id: connection.getUniqueId() }) + .c("command", { xmlns: Strophe.NS.ADHOC, node: cmdNode, action: "execute" }); + connection.sendIQ(execIQ, function(result) { + sessionid = $(result).find("command").attr("sessionid"); + displayResult(result); + }); } function getCommandNodes() { - nodesIQ = $iq({ type: "get", to: "localhost", id: "nodes1" }).c("query", {xmlns: Strophe.NS.DISCO_ITEMS, node: Strophe.NS.ADHOC}); + var nodesIQ = $iq({ type: "get", to: "localhost", id: "nodes1" }).c("query", {xmlns: Strophe.NS.DISCO_ITEMS, node: Strophe.NS.ADHOC}); connection.sendIQ(nodesIQ, function(result) { $('#output').append("