Champs client++
[Plinn.git] / skins / ajax_scripts / ajax_form_manager.js
index fed198c..acca796 100644 (file)
@@ -1,4 +1,4 @@
-// (c) Benoît PIN 2006-2007
+// (c) Benoît PIN 2006-2014
 // http://plinn.org
 // Licence GPL
 // 
 // http://plinn.org
 // Licence GPL
 // 
@@ -8,12 +8,13 @@ var FormManager;
 
 (function(){
        
 
 (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;
        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); };
        var thisManager = this;
        this.form.onsubmit = function(evt) { thisManager.submit(evt); };
        this.form.onclick = function(evt) { thisManager.click(evt); };
@@ -406,9 +407,13 @@ FormManager.prototype.loadResponse = function(req) {
                                                        break;
                                                case 'base' :
                                                        var headBase = document.getElementsByTagName('base');
                                                        break;
                                                case 'base' :
                                                        var headBase = document.getElementsByTagName('base');
-                                                       if (headBase.length) {
+                                                       if (headBase.length > 0) {
                                                                headBase[0].setAttribute('href', element.getAttribute('href'));
                                                                headBase[0].setAttribute('href', element.getAttribute('href'));
-                                                               console.info('set base href:', headBase[0].href);
+                                                       }
+                                                       else {
+                                                               headBase = document.createElement('base');
+                                                               headBase.setAttribute('href', element.getAttribute('href'));
+                                                               document.head.appendChild(headBase);
                                                        }
                                                        break;
                                        }
                                                        }
                                                        break;
                                        }
@@ -431,7 +436,8 @@ FormManager.prototype.loadResponse = function(req) {
        var onAfterPopulate = this.onAfterPopulate;
        onAfterPopulate();
        this.scrollToPortalMessage();
        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() {
 };
 
 FormManager.prototype.scrollToPortalMessage = function() {