bugfix.
[Plinn.git] / skins / ajax_scripts / ajax_form_manager.js
index fed198c..6f6748e 100644 (file)
@@ -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); };
@@ -99,16 +100,11 @@ FormManager.prototype.submit = function(evt) {
                query += submitButton.name + '=' + submitButton.value + '&';
        }
        
-       if (window.AJAX_CONFIG && ((AJAX_CONFIG & 1) === 1)) {
-               if (form.method.toLowerCase() === 'post') {
-                       this._post(query);
-               }
-               else {
-                       this._get(query);
-               }
+       if (form.method.toLowerCase() === 'post') {
+               this._post(query);
        }
        else {
-               this._post(query);
+               this._get(query);
        }
        
        try {disableDefault(evt);}
@@ -144,10 +140,9 @@ FormManager.prototype._post = function(query) {
 };
 
 FormManager.prototype._get = function(query) {
-       // send form by browser location
        var url = this.form.action;
        url += '?' + query;
-       linkHandler.loadUrl(url);
+       AjaxLinkHandler.prototype.loadUrl(url);
 };
 
 
@@ -406,9 +401,13 @@ FormManager.prototype.loadResponse = function(req) {
                                                        break;
                                                case 'base' :
                                                        var headBase = document.getElementsByTagName('base');
-                                                       if (headBase.length) {
+                                                       if (headBase.length > 0) {
                                                                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;
                                        }
@@ -431,7 +430,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() {