X-Git-Url: http://cgit.babelmonkeys.de/?p=adhocweb.git;a=blobdiff_plain;f=js%2Fmain.js;h=3c42647592beb91644d684c169fc7af0a459ed29;hp=61ddaa41f427a51f832208a575c2b97a6a5c61ed;hb=907bec3b47789820c53a68559c5ca15d9f899bec;hpb=15adf08d0903da15021677a61a5ffdf41272ba8a diff --git a/js/main.js b/js/main.js index 61ddaa4..3c42647 100644 --- a/js/main.js +++ b/js/main.js @@ -1,5 +1,7 @@ var BOSH_SERVICE = 'http://localhost:5280/http-bind/'; +var show_log = false; + Strophe.addNamespace("ADHOC", "http://jabber.org/protocol/commands"); var localJID = null; @@ -42,16 +44,133 @@ 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); + if ($(x).find("title").length > 0) + $("").text($(x).find("title").text()).appendTo(fieldset); + if ($(x).find("instructions").length > 0) + $("").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").length > 0) { + 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(""+ @@ -63,15 +182,22 @@ function displayResult(result) { if ($(result).find('actions ' + kind).length > 0) $('#' + kind + 'Button').attr("disabled", "false"); } + $('#executeButton').bind("click", function() { + var execIQ = $iq({ type: "set", to: connection.domain, id: connection.getUniqueId() }) + .c("command", { xmlns: Strophe.NS.ADHOC, node: cmdNode, sessionid: sessionid, action: "execute" }); + serializeToDataform($('form'), execIQ); + connection.sendIQ(execIQ, displayResult); + }); + $('#cancelButton').bind("click", function() { - var cancelIQ = $iq({ type: "set", to: "localhost", id: connection.getUniqueId() }) + var cancelIQ = $iq({ type: "set", to: connection.domain, 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() { + input = $("").bind("click", function() { $('#output *').remove(); sessionid = null; cmdNode = null; @@ -82,8 +208,8 @@ function displayResult(result) { } function runCommand() { - cmdNode = $(this).attr("id"); // Save not of executed command (in global) - var execIQ = $iq({ type: "set", to: "localhost", id: connection.getUniqueId() }) + cmdNode = $(this).attr("id"); // Save node of executed command (in global var) + var execIQ = $iq({ type: "set", to: connection.domain, id: connection.getUniqueId() }) .c("command", { xmlns: Strophe.NS.ADHOC, node: cmdNode, action: "execute" }); connection.sendIQ(execIQ, function(result) { sessionid = $(result).find("command").attr("sessionid"); @@ -92,7 +218,7 @@ function runCommand() { } function getCommandNodes() { - var 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: connection.domain, id: "nodes1" }).c("query", {xmlns: Strophe.NS.DISCO_ITEMS, node: Strophe.NS.ADHOC}); connection.sendIQ(nodesIQ, function(result) { $('#output').append("This entitiy does support AdHoc commands
"); @@ -141,8 +267,11 @@ function showDisconnect() { $(document).ready(function () { connection = new Strophe.Connection(BOSH_SERVICE); - connection.rawInput = rawInput; - connection.rawOutput = rawOutput; + if (show_log) { + $('#log_container').show(); + connection.rawInput = rawInput; + connection.rawOutput = rawOutput; + } $("#log_toggle").click(function () { $("#log").toggle();