diff options
author | Stefan Radomski <github@mintwerk.de> | 2016-05-12 13:12:33 (GMT) |
---|---|---|
committer | Stefan Radomski <github@mintwerk.de> | 2016-05-12 13:12:33 (GMT) |
commit | b62e7979600feee23dc7cdb61042a8fc7673122b (patch) | |
tree | f7351372f37979dd2d048e0b68a16a4cd3b2aadb /test/uscxml/templates | |
parent | 1b11b310be61e51b3ac5ebb83f7c8a33aef3d6e8 (diff) | |
download | uscxml-b62e7979600feee23dc7cdb61042a8fc7673122b.zip uscxml-b62e7979600feee23dc7cdb61042a8fc7673122b.tar.gz uscxml-b62e7979600feee23dc7cdb61042a8fc7673122b.tar.bz2 |
Major Refactoring v2.0
Diffstat (limited to 'test/uscxml/templates')
-rw-r--r-- | test/uscxml/templates/mc-html.html | 348 | ||||
-rw-r--r-- | test/uscxml/templates/xhtml-invoker.html | 233 |
2 files changed, 0 insertions, 581 deletions
diff --git a/test/uscxml/templates/mc-html.html b/test/uscxml/templates/mc-html.html deleted file mode 100644 index 33eac77..0000000 --- a/test/uscxml/templates/mc-html.html +++ /dev/null @@ -1,348 +0,0 @@ -<html xmlns="http://www.w3.org/1999/xhtml"> - <head> - <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> - <script type="text/javascript"> - // see http://stackoverflow.com/questions/1206937/javascript-domready - var domLoaded = function(callback) { - /* Internet Explorer */ - /*@cc_on - @if (@_win32 || @_win64) - document.write('<script id="ieScriptLoad" defer src="//:"><\/script>'); - document.getElementById('ieScriptLoad').onreadystatechange = function() { - if (this.readyState == 'complete') { - callback(); - } - }; - @end @*/ - /* Mozilla, Chrome, Opera */ - if (document.addEventListener) { - document.addEventListener('DOMContentLoaded', callback, false); - return; - } - /* Safari, iCab, Konqueror */ - if (/KHTML|WebKit|iCab/i.test(navigator.userAgent)) { - var DOMLoadTimer = setInterval(function () { - if (/loaded|complete/i.test(document.readyState)) { - callback(); - clearInterval(DOMLoadTimer); - } - }, 10); - return; - } - /* Other web browsers */ - window.onload = callback; - }; - - </script> - <script type="text/javascript"> - - function CometSession(options) { - /** - * Support for two-channel asynchronous http communication - */ - for (var key in options) { - if (options.hasOwnProperty(key)) { - this[key] = options[key]; - } - } - var self = this; - - this.xhr = (window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("MSXML2.XMLHTTP.3.0")); - this.cometPoll = (window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("MSXML2.XMLHTTP.3.0")); - - this.createUUID = function() { - // http://www.ietf.org/rfc/rfc4122.txt - var s = []; - var hexDigits = "0123456789abcdef"; - for (var i = 0; i < 36; i++) { - s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1); - } - s[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010 - s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01 - s[8] = s[13] = s[18] = s[23] = "-"; - var uuid = s.join(""); - return uuid; - } - - this.longpoll = function() { - self.cometPoll.onreadystatechange = function() { - if (self.cometPoll.readyState === 4) { - if (self.cometPoll.status !== 200) { - self.longpoll(); - return; - } - self.onRcvd(self.cometPoll); - self.longpoll(); - } - }; - // use token until we have a context - self.cometPoll.open("GET", self.server + (self.query ? "?" + self.query : "")); - self.cometPoll.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); - self.cometPoll.send(null); - }; - - this.post = function(data) { - self.xhr.open("POST", self.server + (self.query ? "?" + self.query : "")); - self.xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); - self.xhr.send(data); - } - } - - </script> - <script type="text/javascript"> - - function MMISession(element, imURL, params) { - // copy all attributes passe as params - for (var key in params) { - if (params.hasOwnProperty(key)) { - this[key] = params[key]; - } - } - var self = this; - - // initialize base class with onData handler - this.__proto__ = new CometSession({ - server: imURL, - onRcvd: function(data) { - var mmiEvent = data.responseXML.documentElement.firstChild; - var handler; - var replier; - switch (mmiEvent.localName) { - case "NewContextResponse": - self.context = mmiEvent.getAttribute("Context"); - self.comet.query = "context=" + self.context; - break; - case "PrepareRequest": - handler = self.onPrepare; - replier = function(attrs) { sendMMIEvent("DoneNotification", attrs) }; - break; - case "StartRequest": - handler = self.onStart; - replier = function(attrs) { sendMMIEvent("StartResponse", attrs) }; - break; - case "CancelRequest": - handler = self.onCancel; - replier = function(attrs) { sendMMIEvent("CancelResponse", attrs) }; - break; - case "PauseRequest": - handler = self.onPause; - replier = function(attrs) { sendMMIEvent("PauseResponse", attrs) }; - break; - case "ResumeRequest": - handler = self.onResume; - replier = function(attrs) { sendMMIEvent("ResumeResponse", attrs) }; - break; - case "ClearContextRequest": - handler = self.onClearContext; - replier = function(attrs) { sendMMIEvent("ClearContextResponse", attrs) }; - break; - case "StatusRequest": - handler = self.onStatus; - replier = function(attrs) { sendMMIEvent("StatusResponse", attrs) }; - break; - case "ExtensionNotification": - handler = self.onExtension; - break; - } - if (typeof handler === "function") { - var rc = handler(mmiEvent); - if (typeof replier === "function") { - if (rc === false) { - replier({ Status: "Failure"}); - } else if (typeof rc === "object") { - replier(rc); - } else { - replier({ Status: "Success"}); - } - } - } - } - }); - this.comet = this.__proto__; - - // get element as an HTML Node - if (typeof(element) === 'string') { - element = document.getElementById(element); - } - - // assign attributes - this.mmiNS = "http://www.w3.org/2008/04/mmi-arch"; - this.comet.query = "token=" + this.createUUID(); - this.element = element; - - this.init = function() { - sendMMIEvent("NewContextRequest"); - self.longpoll(); - } - - // helper function to determine whether something is a html node - var isNode = function(o){ - return ( - typeof Node === "object" ? o instanceof Node : - o && typeof o === "object" && typeof o.nodeType === "number" && typeof o.nodeName==="string" - ); - } - - // helper function to determine whether something is a window - var isWindow = function(o){ - return ( - typeof Window === "object" ? o instanceof Window : - o && typeof o === "object" && typeof o.menubar === "object" - ); - } - - // serialize an object to be send - this.send = function(attr) { - // see also: https://raw.github.com/douglascrockford/JSON-js/master/cycle.js - var data = attr.Data; - // dispatch over thingy type here - if (typeof data === "object") { - var seen = []; - data = JSON.stringify(attr.Data, function(key, val) { - if (isNode(val)) { - // return a selection of attributes - return { - id: val.id, - tagName: val.tagName, - localName: val.localName, - }; - -/* - // return everything that is atomic - this is a lot with all the HTML inside - var nodeAttr = {}; - for (var key in val) { - if ( - key !== "outerHTML" && - val.hasOwnProperty(key) && - typeof val[key] !== "object" && - typeof val[key] !== "function" - ) { - nodeAttr[key] = val[key]; - } - } - return nodeAttr; -*/ - } - if (isWindow(val)) { - return; - } - if (typeof val === "object") { - if (seen.indexOf(val) >= 0) - return; - seen.push(val) - } - return val - }); - - } - attr.Data = data; - sendMMIEvent("ExtensionNotification", attr); - } - - // register event handler if not given per constructor - if(typeof this.onStart !== "function") { - this.onStart = function(mmiEvent) { - var content = mmiEvent.firstChild; - var fromStartRequest = document.importNode(content.firstChild, true); - self.element.appendChild(fromStartRequest); - } - } - if(typeof this.onStatus !== "function") { - this.onStatus = function(mmiEvent) { - return true; - } - } - if(typeof this.onPrepare !== "function") { - this.onPrepare = function(mmiEvent) { - return true; - } - } - if(typeof this.onCancel !== "function") { - this.onCancel = function(mmiEvent) { - return true; - } - } - if(typeof this.onPause !== "function") { - this.onPause = function(mmiEvent) { - return true; - } - } - if(typeof this.onResume !== "function") { - this.onResume = function(mmiEvent) { - return true; - } - } - if(typeof this.onExtension !== "function") { - this.onExtension = function(mmiEvent) { - return true; - } - } - if(typeof this.onClearContext !== "function") { - this.onClearContext = function(mmiEvent) { - return true; - } - } - - if(typeof this.onDone !== "function") { - this.onDone = function(mmiEvent) { - return true; - } - } - - window.onbeforeunload=function(){ - this.onDone(); - sendMMIEvent("DoneNotification", attrs); - }; - - var sendMMIEvent = function(type, attrs) { - if (!attrs) - attrs = {}; - if (!attrs["Source"]) // default for Source - attrs["Source"] = "HTML"; - if (!attrs["Target"]) // default for Target - attrs["Target"] = self.imURL; - if (!attrs["RequestID"]) // default for RequestID - attrs["RequestID"] = self.createUUID(); - var mmiDocument = '<mmi:mmi xmlns:mmi="' + self.mmiNS + '" version="1.0">' + - '<mmi:' + type + ' '; - if (self.context) - mmiDocument += 'mmi:Context="' + self.context + '" '; - for (attr in attrs) { - if (attr === "Data") - continue; - if (attr === "Content") - continue; - mmiDocument += 'mmi:' + attr + '="' + attrs[attr] + '" '; - } - mmiDocument += '>'; - - if (attrs["Data"]) - mmiDocument += '<mmi:Data>' + "\n<![CDATA[\n" + attrs["Data"] + "\n]]>\n" + '</mmi:Data>'; - if (attrs["Content"]) - mmiDocument += '<mmi:Content>' + "\n<![CDATA[\n" + attrs["Content"] + "\n]]>\n" + '</mmi:Content>'; - - mmiDocument += '</mmi:' + type +'></mmi:mmi>', - self.post(mmiDocument); - } - - }; - - </script> - - <script type="text/javascript"> - var mmiSession; - domLoaded(function () { - mmiSession = new MMISession("foo", "${im.url}", { - onExtension : function(mmiEvent) { - console.log(mmiEvent); - } - }); - mmiSession.init(); - }); - </script> - - </head> - <body class="tundra"> - <div id="foo"></div> - </body> -</html> diff --git a/test/uscxml/templates/xhtml-invoker.html b/test/uscxml/templates/xhtml-invoker.html deleted file mode 100644 index bacfe79..0000000 --- a/test/uscxml/templates/xhtml-invoker.html +++ /dev/null @@ -1,233 +0,0 @@ -<html xmlns="http://www.w3.org/1999/xhtml"> - <head> - <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> - - <!-- Get domLoaded event across browsers --> - <script type="text/javascript"> - // see http://stackoverflow.com/questions/1206937/javascript-domready - var domLoaded = function(callback) { - /* Internet Explorer */ - /*@cc_on - @if (@_win32 || @_win64) - document.write('<script id="ieScriptLoad" defer src="//:"><\/script>'); - document.getElementById('ieScriptLoad').onreadystatechange = function() { - if (this.readyState == 'complete') { - var head= document.getElementsByTagName('head')[0]; - var script= document.createElement('script'); - script.type= 'text/javascript'; - script.src= 'http://wicked-good-xpath.googlecode.com/files/wgxpath.install.js'; - head.appendChild(script); - wgxpath.install(); - - // see http://stackoverflow.com/questions/1811116/ie-support-for-dom-importnode - document.importNode = function(node, allChildren) { - switch (node.nodeType) { - case document.ELEMENT_NODE: - var newNode = document.createElementNS(node.namespaceURI, node.nodeName); - if(node.attributes && node.attributes.length > 0) - for(var i = 0, il = node.attributes.length; i < il; i++) - newNode.setAttribute(node.attributes[i].nodeName, node.getAttribute(node.attributes[i].nodeName)); - if(allChildren && node.childNodes && node.childNodes.length > 0) - for(var i = 0, il = node.childNodes.length; i < il; i++) - newNode.appendChild(document.importNode(node.childNodes[i], allChildren)); - return newNode; - break; - case document.TEXT_NODE: - case document.CDATA_SECTION_NODE: - case document.COMMENT_NODE: - return document.createTextNode(node.nodeValue); - break; - } - } - - callback(); - } - }; - @end @*/ - /* Mozilla, Chrome, Opera */ - if (document.addEventListener) { - document.addEventListener('DOMContentLoaded', callback, false); - return; - } - /* Safari, iCab, Konqueror */ - if (/KHTML|WebKit|iCab/i.test(navigator.userAgent)) { - var DOMLoadTimer = setInterval(function () { - if (/loaded|complete/i.test(document.readyState)) { - callback(); - clearInterval(DOMLoadTimer); - } - }, 10); - return; - } - /* Other web browsers */ - window.onload = callback; - }; - </script> - - <script type="text/javascript"> - - function CometSession(options) { - /** - * Support for two-channel asynchronous http communication - */ - for (var key in options) { - if (options.hasOwnProperty(key)) { - this[key] = options[key]; - } - } - var self = this; - - this.xhr = (window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("MSXML2.XMLHTTP.3.0")); - this.cometPoll = (window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("MSXML2.XMLHTTP.3.0")); - - this.createUUID = function() { - // http://www.ietf.org/rfc/rfc4122.txt - var s = []; - var hexDigits = "0123456789abcdef"; - for (var i = 0; i < 36; i++) { - s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1); - } - s[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010 - s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01 - s[8] = s[13] = s[18] = s[23] = "-"; - var uuid = s.join(""); - return uuid; - } - - this.longpoll = function() { - self.cometPoll.onreadystatechange = function() { - if (self.cometPoll.readyState === 4) { - if (self.cometPoll.status !== 200) { - self.longpoll(); - return; - } - self.onRcvd(self.cometPoll); - self.longpoll(); - } - }; - // use token until we have a context - self.cometPoll.open("GET", self.server + (self.query ? "?" + self.query : "")); - self.cometPoll.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); - self.cometPoll.setRequestHeader("Connection", "close"); - self.cometPoll.send(null); - }; - - this.post = function(name, data, contentType) { - self.xhr.open("POST", self.server + (self.query ? "?" + self.query : "")); - self.xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); - self.xhr.setRequestHeader('X-SCXML-Name', name); - if (contentType) { - self.xhr.setRequestHeader('Content-Type', contentType); - } - self.xhr.send(data); - } - - // serialize an object to be send - this.send = function(name, thing) { - var data; - // see also: https://raw.github.com/douglascrockford/JSON-js/master/cycle.js - // dispatch over thingy type here - if (typeof thing === "object") { - var seen = []; - // will not work on opera as thing is checked for cycles first - data = JSON.stringify(thing, function(key, val) { - if (isNode(val)) { - // return a selection of attributes - return { - id: val.id, - tagName: val.tagName, - localName: val.localName - }; - } - if (isWindow(val)) { - return; - } - if (typeof val === "object") { - if (seen.indexOf(val) >= 0) - return; - seen.push(val) - } - return val - }); - } else { - data = thing; - } - this.post(name, data, "application/json"); - } - - // helper function to determine whether something is a html node - var isNode = function(o){ - return ( - typeof Node === "object" ? o instanceof Node : - o && typeof o === "object" && typeof o.nodeType === "number" && typeof o.nodeName==="string" - ); - } - - // helper function to determine whether something is a window - var isWindow = function(o){ - return ( - typeof Window === "object" ? o instanceof Window : - o && typeof o === "object" && typeof o.menubar === "object" - ); - } - - } - - </script> - - <script type="text/javascript"> - domLoaded(function () { - scxml = new CometSession({ - //element: document.getElementById("${scxml.invokeId}"), - server: document.URL, - onRcvd : function(data) { - if (data.responseXML) { - var type = data.getResponseHeader("X-SCXML-Type") || "replacechildren"; - var domTarget = data.getResponseHeader("X-SCXML-XPath") || "/html/body"; - var domAttr = data.getResponseHeader("X-SCXML-Attr"); - var result = document.evaluate(domTarget, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); - - for (var i = 0, l = result.snapshotLength; i < l; i++) { - var item = result.snapshotItem(i); - var node = document.importNode(data.responseXML.firstChild, true); - switch (type) { - case "firstchild": - item.insertBefore(node, item.firstChild); - break; - case "lastchild": - item.appendChild(node); - break; - case "previoussibling": - item.parentNode.insertBefore(node, item); - break; - case "nextsibling": - item.parentNode.insertBefore(node, item.nextSibling); - break; - case "replace": - item.parentNode.replaceChild(node, item); - break; - case "delete": - item.parentNode.removeChild(item); - break; - case "addattribute": - item.setAttribute(domAttr, node); - break; - case "replacechildren": - while(item.hasChildNodes()) { - item.removeChild(item.firstChild); - } - item.appendChild(node); - default: - break; - } - } - } - } - }); - scxml.longpoll(); - }); - </script> - - </head> - <body></body> -</html> |