X-Git-Url: http://cgit.babelmonkeys.de/?p=adhocweb.git;a=blobdiff_plain;f=js%2Fmain.js;h=b634c9a16d4d6fb56f4e1da9c0f26e6bb3630f4d;hp=4db92c80f4e46782625b3601869a4e202f667de9;hb=a0c3cded91e6e33499b5472b2214e385b3f64830;hpb=35279be3c7092dd6dc33e03ca5f09c01670a581e diff --git a/js/main.js b/js/main.js index 4db92c8..b634c9a 100644 --- a/js/main.js +++ b/js/main.js @@ -1,13 +1,15 @@ var BOSH_SERVICE = 'http://localhost:5280/http-bind/'; -var show_log = false; +var show_log = true; Strophe.addNamespace("ADHOC", "http://jabber.org/protocol/commands"); var localJID = null; var connection = null; -var sessionid = null; -var cmdNode = null; -var queryJID = null; +var adhoc_status = { + sessionid: null, + cmdNode: null, + queryJID: null +}; function log(msg) { var entry = $('
').append(document.createTextNode(msg)); @@ -40,8 +42,8 @@ function onConnect(status) { } } else if (status == Strophe.Status.CONNECTED) { log('Strophe is connected.'); - queryJID = connection.domain; - $('#queryJID').val(queryJID); + adhoc_status.queryJID = connection.domain; + $('#queryJID').val(adhoc_status.queryJID); $('#query').show(); checkFeatures(); } @@ -64,7 +66,7 @@ function addForm(elem, x) { $("").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(){ + $(x).find("field").each(function() { var item = null; var type = $(this).attr("type"); if($(this).attr("label")) { @@ -88,22 +90,22 @@ function addForm(elem, x) { item = $("").attr("readonly",true); break; case "jid-multi": - item = $(""); + 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); - }); + $(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); - }); + $(this).find("option").each(function() { + $("").val($(this).find("value").text()).text($(this).attr("label")).appendTo(item); + }); break; case "text-private": item = $(""); @@ -143,7 +145,7 @@ function addForm(elem, x) { } function serializeToDataform(form, st) { - st.c("x", {"xmlns":"jabber:x:data", "type": "submit"}); + 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) { @@ -191,8 +193,8 @@ function displayResult(result) { $('#' + 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" }); + var execIQ = $iq({ type: "set", to: adhoc_status.queryJID, id: connection.getUniqueId() }) + .c("command", { xmlns: Strophe.NS.ADHOC, node: adhoc_status.cmdNode, sessionid: adhoc_status.sessionid, action: "execute" }); serializeToDataform($('form'), execIQ); connection.sendIQ(execIQ, displayResult); }); @@ -206,12 +208,12 @@ function displayResult(result) { cancelCommand(function(result) { $('#queryForm').unbind('submit'); $('#queryForm').bind('submit', function (event) { - queryJID = $('#queryJID').val(); + adhoc_status.queryJID = $('#queryJID').val(); checkFeatures(); event.preventDefault(); }); }); - queryJID = $('#queryJID').val(); + adhoc_status.queryJID = $('#queryJID').val(); checkFeatures(); event.preventDefault(); }); @@ -219,8 +221,8 @@ function displayResult(result) { } else { input = $("").bind("click", function() { $('#output').empty(); - sessionid = null; - cmdNode = null; + adhoc_status.sessionid = null; + adhoc_status.cmdNode = null; getCommandNodes(); }); $("#output").append(input); @@ -228,26 +230,26 @@ function displayResult(result) { } 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" }); + adhoc_status.cmdNode = $(this).attr("id"); // Save node of executed command (in global var) + var execIQ = $iq({ type: "set", to: adhoc_status.queryJID, id: connection.getUniqueId() }) + .c("command", { xmlns: Strophe.NS.ADHOC, node: adhoc_status.cmdNode, action: "execute" }); connection.sendIQ(execIQ, function(result) { - sessionid = $(result).find("command").attr("sessionid"); + adhoc_status.sessionid = $(result).find("command").attr("sessionid"); displayResult(result); }); event.preventDefault(); } function cancelCommand(callback) { - 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; + var cancelIQ = $iq({ type: "set", to: adhoc_status.queryJID, id: connection.getUniqueId() }) + .c("command", { xmlns: Strophe.NS.ADHOC, node: adhoc_status.cmdNode, sessionid: adhoc_status.sessionid, action: "cancel" }); + adhoc_status.cmdNode = null + adhoc_status.sessionid = null; connection.sendIQ(cancelIQ, callback); } function getCommandNodes() { - var nodesIQ = $iq({ type: "get", to: queryJID, id: "nodes1" }).c("query", {xmlns: Strophe.NS.DISCO_ITEMS, node: Strophe.NS.ADHOC}); + var nodesIQ = $iq({ type: "get", to: adhoc_status.queryJID, 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
"); - } else { - $('#output').append("This entitiy does NOT support AdHoc commands
"); - } - }); + featureIQ = $iq({ type: "get", to: adhoc_status.queryJID, id: "features1" }).c("query", {xmlns: Strophe.NS.DISCO_INFO}); $('#output').empty(); - getCommandNodes(); + connection.sendIQ(featureIQ, + function(result) { /* Callback */ + if ($(result).find("feature[var='" + Strophe.NS.ADHOC + "']").length > 0) { + $('#output').append("This entitiy does support AdHoc commands
"); + getCommandNodes(); + } else { + $('#output').append("This entitiy does NOT support AdHoc commands
"); + } + }, + function(result) { /* Errback */ + $('#output').append("Couldn't get list of supported features
"); + } + ); } function showConnect() { @@ -328,15 +335,14 @@ $(document).ready(function () { }); $('#queryForm').bind('submit', function (event) { - queryJID = $('#queryJID').val(); + adhoc_status.queryJID = $('#queryJID').val(); checkFeatures(); event.preventDefault(); }); }); -onunload = function() { +window.onunload = window.onbeforeunload = function() { if (connection) { connection.disconnect(); } } -