X-Git-Url: http://cgit.babelmonkeys.de/?p=adhocweb.git;a=blobdiff_plain;f=js%2Fmain.js;h=4cff25caf4b3a5e62fc7acbf1ae133f656cb383e;hp=fb76f3810bc0c361f4e453f5c137eee32cd9cc51;hb=eab81f9e4afd38c8390745449865185e9637c830;hpb=043000b3ce1e5b64299def211df4306df2b06315 diff --git a/js/main.js b/js/main.js index fb76f38..4cff25c 100644 --- a/js/main.js +++ b/js/main.js @@ -1,4 +1,5 @@ var BOSH_SERVICE = 'http://localhost:5280/http-bind/'; +var show_log = false; Strophe.addNamespace("ADHOC", "http://jabber.org/protocol/commands"); @@ -6,6 +7,7 @@ var localJID = null; var connection = null; var sessionid = null; var cmdNode = null; +var queryJID = null; function log(msg) { var entry = $('
').append(document.createTextNode(msg)); @@ -38,6 +40,8 @@ function onConnect(status) { } } else if (status == Strophe.Status.CONNECTED) { log('Strophe is connected.'); + queryJID = connection.domain; + $('#query').show(); checkFeatures(); } } @@ -51,11 +55,13 @@ function addNote(elem, text, type) { function addForm(elem, x) { var form = $("
"); - form.submit(function(){return false;}); + form.submit(function(event){event.preventDefault();}); 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 +109,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 +140,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(); }); @@ -154,7 +166,7 @@ function serializeToDataform(form, st) { function displayResult(result) { var status = $(result).find("command").attr("status"); - $("#output *").remove(); + $("#output").empty(); $(result).find("command > *").each(function(index, e) { if ($(e).is("note")) { addNote("#output", $(e).text(), $(e).attr("type")); @@ -172,16 +184,23 @@ 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: queryJID, 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: queryJID, 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(); + input = $("").bind("click", function() { + $('#output').empty(); sessionid = null; cmdNode = null; getCommandNodes(); @@ -190,29 +209,31 @@ 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() }) +function runCommand(event) { + cmdNode = $(this).attr("id"); // Save node of executed command (in global var) + var execIQ = $iq({ type: "set", to: queryJID, 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); }); + event.preventDefault(); } 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: queryJID, 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) { - item = $("
  • " + $(e).attr("name") + "
  • ").bind("click", runCommand); + link = $("" + $(e).attr("name") + "").click(runCommand) + item = $("
  • ").append(link); $("#items").append(item); }); }); } function checkFeatures() { - featureIQ = $iq({ type: "get", to: "localhost", id: "features1" }).c("query", {xmlns: Strophe.NS.DISCO_INFO}); + featureIQ = $iq({ type: "get", to: queryJID, 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

    "); @@ -220,6 +241,7 @@ function checkFeatures() { $('#output').append("

    This entitiy does NOT support AdHoc commands

    "); } }); + $('#output').empty(); getCommandNodes(); } @@ -229,11 +251,11 @@ function showConnect() { var button = $('#connect').get(0); button.value = 'connect'; + $('#query').hide(); pass.show(); jid.show(); $('label').show(); - $('#output *').remove(); - return false; + $('#output').empty(); } function showDisconnect() { @@ -244,20 +266,22 @@ function showDisconnect() { button.value = 'disconnect'; pass.hide(); jid.hide(); - $('label').hide(); - return false; + $('#cred label').hide(); } $(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(); }); - $('#cred').bind('submit', function () { + $('#cred').bind('submit', function (event) { var button = $('#connect').get(0); var jid = $('#jid'); var pass = $('#pass'); @@ -265,14 +289,20 @@ $(document).ready(function () { if (button.value == 'connect') { showDisconnect(); - $('#log *').remove(); + $('#log').empty(); connection.connect(localJID, pass.get(0).value, onConnect); } else { connection.disconnect(); } - return false; + event.preventDefault(); + }); + + $('#queryForm').bind('submit', function (event) { + queryJID = $('#queryJID').val(); + checkFeatures(); + event.preventDefault(); }); });