From 867485ad4c8e7134f13c73850210ae528f704768 Mon Sep 17 00:00:00 2001 From: Jeremy Grelle Date: Mon, 3 Mar 2008 22:04:42 +0000 Subject: [PATCH] SWF-451 - Introduce a "Spring Javascript" javascript abstraction framework usable by both JSF and MVC environments. SWF-454 - Create a Dojo 1.0 implementation of Spring Javascript --- .../java/META-INF/spring-faces/SpringFaces.js | 25 -- .../META-INF/spring-faces/SpringUI-Dojo.js | 252 ------------------ .../java/META-INF/spring-faces/SpringUI.js | 85 ------ .../Spring-Dojo.js} | 38 +-- .../src/main/java/META-INF/spring/Spring.js | 97 +++++++ .../SpringFaces-Ext.js | 0 .../ui/AjaxEventInterceptorRenderer.java | 2 +- .../ui/BaseDojoParentComponentRenderer.java | 4 +- ...aseSpringFacesParentComponentRenderer.java | 4 +- .../faces/ui/DojoAdvisorRenderer.java | 2 +- .../faces/ui/DojoRenderer.java | 4 +- .../faces/ui/ExtAdvisorRenderer.java | 2 +- .../faces/ui/ExtJsRenderer.java | 4 +- .../ui/ProgressiveCommandButtonRenderer.java | 2 +- .../ui/ProgressiveCommandLinkRenderer.java | 3 +- .../faces/ui/SpringFacesRenderer.java | 4 +- .../faces/ui/ValidateAllRenderer.java | 2 +- .../faces/ui/resource/ResourceServlet.java | 4 + 18 files changed, 137 insertions(+), 397 deletions(-) delete mode 100644 spring-faces/src/main/java/META-INF/spring-faces/SpringFaces.js delete mode 100644 spring-faces/src/main/java/META-INF/spring-faces/SpringUI-Dojo.js delete mode 100644 spring-faces/src/main/java/META-INF/spring-faces/SpringUI.js rename spring-faces/src/main/java/META-INF/{spring-faces/SpringFaces-Dojo.js => spring/Spring-Dojo.js} (86%) create mode 100644 spring-faces/src/main/java/META-INF/spring/Spring.js rename spring-faces/src/main/java/META-INF/{spring-faces => spring}/SpringFaces-Ext.js (100%) diff --git a/spring-faces/src/main/java/META-INF/spring-faces/SpringFaces.js b/spring-faces/src/main/java/META-INF/spring-faces/SpringFaces.js deleted file mode 100644 index b25543bc..00000000 --- a/spring-faces/src/main/java/META-INF/spring-faces/SpringFaces.js +++ /dev/null @@ -1,25 +0,0 @@ -SpringFaces = {}; - -SpringFaces.advisors = []; - -SpringFaces.advisorsApplied = false; - -SpringFaces.applyAdvisors = function(){ - if (!SpringFaces.advisorsApplied) { - for (var x=0; x elements from the response - var scriptPattern = '(?:)((\n|\r|.)*?)(?:<\/script>)'; - var extractedScriptNodes = []; - var matchAll = new RegExp(scriptPattern, 'img'); - var matchOne = new RegExp(scriptPattern, 'im'); - - var scriptNodes = response.match(matchAll); - if (scriptNodes != null) - { - for (var i=0; i/mg,''); - extractedScriptNodes.push(script); - } - } - response = response.replace(matchAll, ''); - - //Extract the new DOM nodes from the response - var tempDiv = dojo.doc.createElement("div"); - tempDiv.id="ajaxResponse"; - tempDiv.style.visibility= "hidden"; - document.body.appendChild(tempDiv); - var tempContainer = new dojo.NodeList(tempDiv); - var newNodes = tempContainer.addContent(response, "first").query("#ajaxResponse > *").orphan(); - tempContainer.orphan(); - - //Insert the new DOM nodes and update the Form's action URL - newNodes.forEach(function(item) { - if (item.id == 'flowExecutionUrl'){ - dojo.query("form").forEach(function (formNode) { - formNode.action = item.firstChild.nodeValue; - }); - } else if (item.id != null && item.id != "") { - var target = dojo.byId(item.id); - target.parentNode.replaceChild(item, target); - } - }); - - //Evaluate any script code - dojo.forEach(extractedScriptNodes, function(script){ - dojo.eval(script); - }); - - return response; - }, - - handleError: function(response, ioArgs) { - //alert("handling an error"); - console.error("HTTP status code: ", ioArgs.xhr.status); - return response; - } -}; - -SpringUI.RemotingHandler = new SpringUI.DojoRemotingHandler(); - -SpringUI.DojoSubmitLinkAdvisor = function(config){ - dojo.mixin(this, config); -}; - -SpringUI.DojoSubmitLinkAdvisor.prototype = { - - targetElId : "", - - linkHtml : "", - - apply : function(){ - var advisedNode = dojo.byId(this.targetElId); - if (!dojo.hasClass(advisedNode, "progressiveLink")) { - //Node must be replaced - var nodeToReplace = new dojo.NodeList(advisedNode); - nodeToReplace.addContent(this.linkHtml, "after").orphan("*"); - //Get the new node - advisedNode = dojo.byId(this.targetElId); - } - advisedNode.submitFormFromLink = this.submitFormFromLink; - //return this to support method chaining - return this; - }, - - submitFormFromLink : function(/*String*/ formId, /*String*/ sourceId, /*Array of name,value params*/ params){ - var addedNodes = []; - var formNode = dojo.byId(formId); - var linkNode = document.createElement("input"); - linkNode.name = sourceId; - linkNode.value = "submitted"; - addedNodes.push(linkNode); - - dojo.forEach(params, function(param){ - var paramNode = document.createElement("input"); - paramNode.name=param.name; - paramNode.value=param.value; - addedNodes.push(paramNode); - }); - - dojo.forEach(addedNodes, function(nodeToAdd){ - dojo.addClass(nodeToAdd, "SpringUILinkInput"); - dojo.place(nodeToAdd, formNode, "last"); - }); - - if ((formNode.onsubmit ? !formNode.onsubmit() : false) || !formNode.submit()) { - dojo.forEach(addedNodes, function(hiddenNode){ - formNode.removeChild(hiddenNode); - }); - } - } -}; - -SpringUI.SubmitLinkAdvisor = SpringUI.DojoSubmitLinkAdvisor; - -dojo.addOnLoad(SpringUI.applyAdvisors); \ No newline at end of file diff --git a/spring-faces/src/main/java/META-INF/spring-faces/SpringUI.js b/spring-faces/src/main/java/META-INF/spring-faces/SpringUI.js deleted file mode 100644 index 75043fbf..00000000 --- a/spring-faces/src/main/java/META-INF/spring-faces/SpringUI.js +++ /dev/null @@ -1,85 +0,0 @@ -SpringUI = {}; - -SpringUI.advisors = []; - -SpringUI.advisorsApplied = false; - -SpringUI.applyAdvisors = function(){ - if (!SpringUI.advisorsApplied) { - for (var x=0; x 0) { if (modalView) { //render a popup with the new URL - SpringFaces.AjaxHandler.renderURLToModalDialog(redirectURL, ioArgs); + Spring.RemotingHandler.renderURLToModalDialog(redirectURL, ioArgs); return response; } else { @@ -150,7 +154,7 @@ SpringFaces.DojoAjaxHandler.prototype = { //For a modal view, just dump the new nodes into a modal dialog if (modalView) { - SpringFaces.AjaxHandler.renderNodeListToModalDialog(newNodes); + Spring.RemotingHandler.renderNodeListToModalDialog(newNodes); return response; } @@ -195,13 +199,13 @@ SpringFaces.DojoAjaxHandler.prototype = { } }; -SpringFaces.AjaxHandler = new SpringFaces.DojoAjaxHandler(); +Spring.RemotingHandler = new Spring.DojoRemotingHandler(); -SpringFaces.DojoCommandLinkAdvisor = function(config){ +Spring.DojoCommandLinkAdvisor = function(config){ dojo.mixin(this, config); }; -SpringFaces.DojoCommandLinkAdvisor.prototype = { +Spring.DojoCommandLinkAdvisor.prototype = { targetElId : "", @@ -221,10 +225,6 @@ SpringFaces.DojoCommandLinkAdvisor.prototype = { return this; }, - validate : function() { - //No-op - }, - submitFormFromLink : function(/*String*/ formId, /*String*/ sourceId, /*Array of name,value params*/ params){ var addedNodes = []; var formNode = dojo.byId(formId); @@ -241,7 +241,7 @@ SpringFaces.DojoCommandLinkAdvisor.prototype = { }); dojo.forEach(addedNodes, function(nodeToAdd){ - dojo.addClass(nodeToAdd, "springFacesLinkInput"); + dojo.addClass(nodeToAdd, "SpringLinkInput"); dojo.place(nodeToAdd, formNode, "last"); }); @@ -253,4 +253,6 @@ SpringFaces.DojoCommandLinkAdvisor.prototype = { } }; -dojo.addOnLoad(SpringFaces.applyAdvisors); \ No newline at end of file +Spring.CommandLinkAdvisor = Spring.DojoCommandLinkAdvisor; + +dojo.addOnLoad(Spring.applyAdvisors); \ No newline at end of file diff --git a/spring-faces/src/main/java/META-INF/spring/Spring.js b/spring-faces/src/main/java/META-INF/spring/Spring.js new file mode 100644 index 00000000..6df284fd --- /dev/null +++ b/spring-faces/src/main/java/META-INF/spring/Spring.js @@ -0,0 +1,97 @@ +Spring = {}; + +Spring.advisors = []; + +Spring.advisors.applied = false; + +Spring.applyAdvisors = function(){ + if (!Spring.advisors.applied) { + for (var x=0; x