X-Git-Url: https://svn.cri.ensmp.fr/git/Plinn.git/blobdiff_plain/489b08961ffd3250658aafd1b861ec55fbbff5a3..bec2191d8ad9607db748a051eb96ed0a79e7e99f:/skins/ajax_scripts/ajax_form_manager.js?ds=sidebyside diff --git a/skins/ajax_scripts/ajax_form_manager.js b/skins/ajax_scripts/ajax_form_manager.js index 8b51b2e..acca796 100644 --- a/skins/ajax_scripts/ajax_form_manager.js +++ b/skins/ajax_scripts/ajax_form_manager.js @@ -1,4 +1,4 @@ -// (c) Benoît PIN 2006-2007 +// (c) Benoît PIN 2006-2014 // http://plinn.org // Licence GPL // @@ -8,12 +8,13 @@ var FormManager; (function(){ -FormManager = function(form, responseTextDest, lazy) { +FormManager = function(form, responseTextDest, lazy, noHistory) { if (form.elements.namedItem("noAjax")) {return;} this.form = form; this.responseTextDest = responseTextDest; this.lazy = lazy; + this.noHistory = noHistory; var thisManager = this; this.form.onsubmit = function(evt) { thisManager.submit(evt); }; this.form.onclick = function(evt) { thisManager.click(evt); }; @@ -391,19 +392,30 @@ FormManager.prototype.loadResponse = function(req) { return; } var fragments = req.responseXML.documentElement.childNodes; - var fragment, dest; - var i; - for (i=0 ; i<fragments.length ; i++) { - fragment = fragments[i]; - if (fragment.nodeName === 'fragment') { - dest = document.getElementById(fragment.getAttribute('id')); - dest.innerHTML = fragment.firstChild.nodeValue; - - scripts = dest.getElementsByTagName('script'); - var j; - for (j=0 ; j < scripts.length ; j++) { - globalScriptRegistry.loadScript(scripts[j]); - } + var element, dest, i, j; + for (i=0 ; i < fragments.length ; i++) { + element = fragments[i]; + switch (element.nodeName) { + case 'fragment' : + dest = document.getElementById(element.getAttribute('id')); + if(dest) { + dest.innerHTML = element.firstChild.nodeValue; + scripts = dest.getElementsByTagName('script'); + for (j=0 ; j < scripts.length ; j++) { + globalScriptRegistry.loadScript(scripts[j]); } + } + break; + case 'base' : + var headBase = document.getElementsByTagName('base'); + if (headBase.length > 0) { + headBase[0].setAttribute('href', element.getAttribute('href')); + } + else { + headBase = document.createElement('base'); + headBase.setAttribute('href', element.getAttribute('href')); + document.head.appendChild(headBase); + } + break; } } break; @@ -424,7 +436,8 @@ FormManager.prototype.loadResponse = function(req) { var onAfterPopulate = this.onAfterPopulate; onAfterPopulate(); this.scrollToPortalMessage(); - history.pushState(absolute_url(), document.title, absolute_url()); + var url = this.form.action; + if (!this.noHistory){ history.pushState(url, document.title, url); } }; FormManager.prototype.scrollToPortalMessage = function() {