From 907bec3b47789820c53a68559c5ca15d9f899bec Mon Sep 17 00:00:00 2001 From: Florian Zeitz Date: Wed, 25 Aug 2010 00:41:26 +0200 Subject: [PATCH] Send forms when executing commands --- js/main.js | 58 ++++++++++++++++++++++++++++++++++++------------------ style.css | 4 ++++ 2 files changed, 43 insertions(+), 19 deletions(-) diff --git a/js/main.js b/js/main.js index fb76f38..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; @@ -54,8 +56,10 @@ function addForm(elem, x) { form.submit(function(){return false;}); var fieldset = $("
"); form.append(fieldset); - $("").text($(x).find("title").text()).appendTo(fieldset); - $("

").text($(x).find("instructions").text()).appendTo(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"); @@ -103,7 +107,7 @@ function addForm(elem, x) { item = $(""); } item.addClass("df-item"); - if ($(this).find("value")) { + if ($(this).find("value").length > 0) { var value = null; if ((type == "text-multi") || (type == "jid-multi")) { value = ""; @@ -134,17 +138,23 @@ function serializeToDataform(form, st) { st.c("x", {"xmlns":"jabber:x:data", "type": "submit"}); $(form).find(".df-item").each(function(){ st.c("field", {"var": $(this).attr("name")}); - if(this.nodeName.toLowerCase() == "select" && this.multiple) { - for(var i = 0; i < this.options.length; i++) - if(options[i].selected) - st.c("value").text(options[i]).up(); - } else if(this.nodeName.toLowerCase() == "textarea") { - var sp_value = this.value.split(/\r\n?|\r/g); + if (this.nodeName.toLowerCase() == "select" && this.multiple) { + for (var i = 0; i < this.options.length; i++) + if (options[i].selected) + st.c("value").t(options[i]).up(); + } else if (this.nodeName.toLowerCase() == "textarea") { + var sp_value = this.value.split(/\r?\n|\r/g); for(var i = 0; i < sp_value.length; i++) - st.c("value").text(sp_value[i]).up(); + st.c("value").t(sp_value[i]).up(); + } else if (this.nodeName.toLowerCase() == "input" && this.type == "checkbox") { + if (this.checked) { + st.c("value").t("1"); + } else { + st.c("value").t("0"); + } } else { // if this has value then - st.c("value").text($(this).val()).up(); + st.c("value").t($(this).val()).up(); } st.up(); }); @@ -172,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; @@ -191,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"); @@ -201,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("

    "); $(result).find("item").each(function(index, e) { @@ -212,7 +229,7 @@ function getCommandNodes() { } function checkFeatures() { - featureIQ = $iq({ type: "get", to: "localhost", id: "features1" }).c("query", {xmlns: Strophe.NS.DISCO_INFO}); + featureIQ = $iq({ type: "get", to: connection.domain, id: "features1" }).c("query", {xmlns: Strophe.NS.DISCO_INFO}); connection.sendIQ(featureIQ, function(result) { if ($(result).find("feature[var='" + Strophe.NS.ADHOC + "']").length > 0) { $('#output').append("

    This entitiy does support AdHoc commands

    "); @@ -250,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(); diff --git a/style.css b/style.css index 64a1320..958bd57 100644 --- a/style.css +++ b/style.css @@ -5,3 +5,7 @@ label { .df-item { margin: 0.25em } + +#log_container { + display: none +} -- 2.39.5