X-Git-Url: http://cgit.babelmonkeys.de/?p=adhocweb.git;a=blobdiff_plain;f=js%2Fmain.js;h=621596162d3ce61b9068efa0eed6c07c7fd9605e;hp=61ddaa41f427a51f832208a575c2b97a6a5c61ed;hb=5a45869a032410c17d02374b8de20e496c114de3;hpb=15adf08d0903da15021677a61a5ffdf41272ba8a diff --git a/js/main.js b/js/main.js index 61ddaa4..6215961 100644 --- a/js/main.js +++ b/js/main.js @@ -1,11 +1,10 @@ var BOSH_SERVICE = 'http://localhost:5280/http-bind/'; - -Strophe.addNamespace("ADHOC", "http://jabber.org/protocol/commands"); +var show_log = true; var localJID = null; var connection = null; -var sessionid = null; -var cmdNode = null; + +var commandCenter = null; function log(msg) { var entry = $('
').append(document.createTextNode(msg)); @@ -20,6 +19,17 @@ function rawOutput(data) { log('SENT: ' + data); } +function getFeatures(jid) { + var cb, ecb; + cb = function(result) { /* Callback */ + commandCenter.getCommandNodes(function(items) { $('#output').empty(); $('#output').append(items) }); + } + ecb = function(result) { /* Errback */ + $('#output').append("

" + jid + " does NOT support AdHoc commands

"); + } + commandCenter.checkFeatures(jid, cb, ecb); +} + function onConnect(status) { if (status == Strophe.Status.CONNECTING) { log('Strophe is connecting.'); @@ -38,93 +48,30 @@ function onConnect(status) { } } else if (status == Strophe.Status.CONNECTED) { log('Strophe is connected.'); - checkFeatures(); - } -} - -function displayResult(result) { - var status = $(result).find("command").attr("status"); - - $("#output *").remove(); - $(result).find("note").each(function(index, e) { - var type = $(e).attr("type"); - if (!type) { - type = "info"; - } - $("#output").append("

" + $(e).text() + "

"); - }); - if (status == "executing") { - $("#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); + $('#queryJID').val(connection.domain); + $('#query').show(); + commandCenter = new Adhoc("#output", function() { + $("").bind("click", function() { + $('#output').empty(); + commandCenter.getCommandNodes(function(items) { $('#output').append(items) }); + }).appendTo('#output'); + }); + getFeatures(connection.domain); } } -function runCommand() { - 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() { - 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(""); - $(result).find("item").each(function(index, e) { - item = $("
  • " + $(e).attr("name") + "
  • ").bind("click", runCommand); - $("#items").append(item); - }); - }); -} - -function checkFeatures() { - featureIQ = $iq({ type: "get", to: "localhost", 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

    "); - } else { - $('#output').append("

    This entitiy does NOT support AdHoc commands

    "); - } - }); - getCommandNodes(); -} - function showConnect() { var jid = $('#jid'); var pass = $('#pass'); var button = $('#connect').get(0); button.value = 'connect'; + $('#query').hide(); pass.show(); jid.show(); - $('label').show(); - $('#output *').remove(); - return false; + $('#cred label').show(); + $('#cred br').show(); + $('#output').empty(); } function showDisconnect() { @@ -135,20 +82,23 @@ function showDisconnect() { button.value = 'disconnect'; pass.hide(); jid.hide(); - $('label').hide(); - return false; + $('#cred label').hide(); + $('#cred br').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'); @@ -156,20 +106,24 @@ $(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) { + getFeatures($('#queryJID').val()); + event.preventDefault(); }); }); -onunload = function() { +window.onunload = window.onbeforeunload = function() { if (connection) { connection.disconnect(); } } -