web/data/cubicweb.ajax.js
author Rémi Cardona <remi.cardona@logilab.fr>
Mon, 20 Oct 2014 12:23:13 +0200
changeset 10029 832a2a0b7bd2
parent 10028 326fbc5c92b0
child 10074 ab956b780d4e
permissions -rw-r--r--
[facets] Correctly look for inputs of type "hidden" (closes #4502768) jQuery ':hidden' selector looks at CSS visual properties (eg, 'display', 'visibility'). The intent here was probably to look for inputs of type "hidden", which many facets use to store user selection data (eg, FacetRangeWidget). The problem is that regular text inputs (eg the "has_text" facet which has a '<input type="text"/>') will be picked up by this selector if they are inside a folded facet. Chaos and destruction ensue.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
9785
8125ba3f4f6d [js/ajax] deprecate user-callback support
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9770
diff changeset
     1
/* copyright 2003-2014 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
     2
 * contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
     3
 *
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
     4
 * This file is part of CubicWeb.
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
     5
 *
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
     6
 * CubicWeb is free software: you can redistribute it and/or modify it under the
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
     7
 * terms of the GNU Lesser General Public License as published by the Free
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
     8
 * Software Foundation, either version 2.1 of the License, or (at your option)
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
     9
 * any later version.
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
    10
 *
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
    11
 * CubicWeb is distributed in the hope that it will be useful, but WITHOUT
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
    12
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
    13
 * FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
    14
 * details.
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
    15
 *
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
    16
 * You should have received a copy of the GNU Lesser General Public License along
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
    17
 * with CubicWeb.  If not, see <http://www.gnu.org/licenses/>.
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    18
 */
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    19
5698
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    20
/**
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    21
 * .. function:: Deferred
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    22
 *
5727
29afb9e715bb [3.9] api update (mostly js) + add support for FCKEditor in formContents js function
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5699
diff changeset
    23
 * dummy ultra minimalist implementation of deferred for jQuery
5698
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    24
 */
7427
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
    25
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
    26
cw.ajax = new Namespace('cw.ajax');
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
    27
5698
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    28
function Deferred() {
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    29
    this.__init__(this);
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    30
}
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    31
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    32
jQuery.extend(Deferred.prototype, {
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    33
    __init__: function() {
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    34
        this._onSuccess = [];
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    35
        this._onFailure = [];
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    36
        this._req = null;
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    37
        this._result = null;
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    38
        this._error = null;
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    39
    },
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    40
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    41
    addCallback: function(callback) {
6556
64b39aa0b047 [js/ajax] use proper operator
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 6552
diff changeset
    42
        if ((this._req.readyState == 4) && this._result) {
6552
256725d4e3ec [js/ajax] fix deferred race condition
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6215
diff changeset
    43
            var args = [this._result, this._req];
256725d4e3ec [js/ajax] fix deferred race condition
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6215
diff changeset
    44
            jQuery.merge(args, cw.utils.sliceList(arguments, 1));
256725d4e3ec [js/ajax] fix deferred race condition
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6215
diff changeset
    45
            callback.apply(null, args);
5698
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    46
        }
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    47
        else {
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    48
            this._onSuccess.push([callback, cw.utils.sliceList(arguments, 1)]);
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    49
        }
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    50
        return this;
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    51
    },
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    52
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    53
    addErrback: function(callback) {
6560
48ba5069e051 [js/ajax] fix deferred race condition (errback case)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 6556
diff changeset
    54
        if (this._req.readyState == 4 && this._error) {
48ba5069e051 [js/ajax] fix deferred race condition (errback case)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 6556
diff changeset
    55
            callback.apply(null, [this._error, this._req]);
5698
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    56
        }
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    57
        else {
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    58
            this._onFailure.push([callback, cw.utils.sliceList(arguments, 1)]);
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    59
        }
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    60
        return this;
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    61
    },
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    62
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    63
    success: function(result) {
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    64
        this._result = result;
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    65
        try {
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    66
            for (var i = 0; i < this._onSuccess.length; i++) {
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    67
                var callback = this._onSuccess[i][0];
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    68
                var args = [result, this._req];
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    69
                jQuery.merge(args, this._onSuccess[i][1]);
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    70
                callback.apply(null, args);
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    71
            }
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    72
        } catch(error) {
8627
5096071b7e1c [ajax] fix attribute lookup (closes #2491038)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8596
diff changeset
    73
            this.error(this._req, null, error);
5698
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    74
        }
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    75
    },
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    76
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    77
    error: function(xhr, status, error) {
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    78
        this._error = error;
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    79
        for (var i = 0; i < this._onFailure.length; i++) {
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    80
            var callback = this._onFailure[i][0];
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    81
            var args = [error, this._req];
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    82
            jQuery.merge(args, this._onFailure[i][1]);
8879
982a49239420 [web] move qunit test back into web and fix the hanging
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 8590
diff changeset
    83
            if (callback !== undefined)
982a49239420 [web] move qunit test back into web and fix the hanging
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 8590
diff changeset
    84
                callback.apply(null, args);
5698
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    85
        }
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    86
    }
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    87
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    88
});
5c8fa1650299 [javascript] move Deferred implementation to cubicweb.ajax.js
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5658
diff changeset
    89
8260
5a81fa526b30 [ajax] use AJAX_BASE_URL instead of JSON_BASE_URL
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 8191
diff changeset
    90
var AJAX_PREFIX_URL = 'ajax';
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    91
var JSON_BASE_URL = baseuri() + 'json?';
8260
5a81fa526b30 [ajax] use AJAX_BASE_URL instead of JSON_BASE_URL
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 8191
diff changeset
    92
var AJAX_BASE_URL = baseuri() + AJAX_PREFIX_URL + '?';
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    93
7427
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
    94
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
    95
jQuery.extend(cw.ajax, {
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
    96
    /* variant of jquery evalScript with cache: true in ajax call */
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
    97
    _evalscript: function ( i, elem ) {
7649
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
    98
       var src = elem.getAttribute('src');
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
    99
       if (src) {
7427
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
   100
           jQuery.ajax({
7649
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   101
               url: src,
7427
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
   102
               async: false,
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
   103
               cache: true,
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
   104
               dataType: "script"
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
   105
           });
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
   106
       } else {
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
   107
           jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" );
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
   108
       }
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
   109
       if ( elem.parentNode ) {
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
   110
           elem.parentNode.removeChild( elem );
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
   111
       }
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
   112
    },
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
   113
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
   114
    evalscripts: function ( scripts ) {
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
   115
        if ( scripts.length ) {
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
   116
            jQuery.each(scripts, cw.ajax._evalscript);
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
   117
        }
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
   118
    },
7284
a474cb989546 [js] make _loadAjaxHtmlHead aware of mod_concat-like urls
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 7199
diff changeset
   119
7427
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
   120
    /**
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
   121
     * returns true if `url` is a mod_concat-like url
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
   122
     * (e.g. http://..../data??resource1.js,resource2.js)
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
   123
     */
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
   124
    _modconcatLikeUrl: function(url) {
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
   125
        var base = baseuri();
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
   126
        if (!base.endswith('/')) { base += '/'; }
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
   127
        var modconcat_rgx = new RegExp('(' + base + 'data/([a-z0-9]+/)?)\\?\\?(.+)');
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
   128
        return modconcat_rgx.exec(url);
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
   129
    },
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
   130
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
   131
    /**
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
   132
     * decomposes a mod_concat-like url into its corresponding list of
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
   133
     * resources' urls
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
   134
     * >>> _listResources('http://foo.com/data/??a.js,b.js,c.js')
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
   135
     * ['http://foo.com/data/a.js', 'http://foo.com/data/b.js', 'http://foo.com/data/c.js']
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
   136
     */
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
   137
    _listResources: function(src) {
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
   138
        var resources = [];
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
   139
        var groups = cw.ajax._modconcatLikeUrl(src);
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
   140
        if (groups == null) {
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
   141
            resources.push(src);
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
   142
        } else {
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
   143
            var dataurl = groups[1];
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
   144
            $.each(cw.utils.lastOf(groups).split(','),
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
   145
                 function() {
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
   146
                     resources.push(dataurl + this);
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
   147
                 }
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
   148
            );
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
   149
        }
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
   150
        return resources;
7649
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   151
    },
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   152
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   153
    _buildMissingResourcesUrl: function(url, loadedResources) {
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   154
        var resources = cw.ajax._listResources(url);
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   155
        var missingResources = $.grep(resources, function(resource) {
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   156
            return $.inArray(resource, loadedResources) == -1;
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   157
        });
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   158
        cw.utils.extend(loadedResources, missingResources);
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   159
        var missingResourceUrl = null;
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   160
        if (missingResources.length == 1) {
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   161
            // only one resource missing: build a node with a single resource url
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   162
            // (maybe the browser has it in cache already)
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   163
            missingResourceUrl = missingResources[0];
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   164
        } else if (missingResources.length > 1) {
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   165
            // several resources missing: build a node with a concatenated
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   166
            // resources url
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   167
            var dataurl = cw.ajax._modconcatLikeUrl(url)[1];
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   168
            var missing_path = $.map(missingResources, function(resource) {
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   169
                return resource.substring(dataurl.length);
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   170
            });
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   171
            missingResourceUrl = dataurl + '??' + missing_path.join(',');
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   172
        }
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   173
        return missingResourceUrl;
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   174
    },
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   175
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   176
    _loadAjaxStylesheets: function($responseHead, $head) {
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   177
        $responseHead.find('link[href]').each(function(i) {
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   178
            var $srcnode = $(this);
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   179
            var url = $srcnode.attr('href');
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   180
            if (url) {
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   181
                var missingStylesheetsUrl = cw.ajax._buildMissingResourcesUrl(url, cw.loaded_links);
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   182
                // compute concat-like url for missing resources and append <link>
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   183
                // element to $head
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   184
                if (missingStylesheetsUrl) {
8412
09432a572a44 [IE] use document.createStyleSheet to add CSS dynamically (closes #2356261)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 8349
diff changeset
   185
                    // IE has problems with dynamic CSS insertions. One symptom (among others)
09432a572a44 [IE] use document.createStyleSheet to add CSS dynamically (closes #2356261)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 8349
diff changeset
   186
                    // is a "1 item remaining" message in the status bar. (cf. #2356261)
09432a572a44 [IE] use document.createStyleSheet to add CSS dynamically (closes #2356261)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 8349
diff changeset
   187
                    // document.createStyleSheet needs to be used for this, although it seems
09432a572a44 [IE] use document.createStyleSheet to add CSS dynamically (closes #2356261)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 8349
diff changeset
   188
                    // that IE can't create more than 31 additional stylesheets with
09432a572a44 [IE] use document.createStyleSheet to add CSS dynamically (closes #2356261)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 8349
diff changeset
   189
                    // document.createStyleSheet.
09432a572a44 [IE] use document.createStyleSheet to add CSS dynamically (closes #2356261)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 8349
diff changeset
   190
                    if ($.browser.msie) {
09432a572a44 [IE] use document.createStyleSheet to add CSS dynamically (closes #2356261)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 8349
diff changeset
   191
                        document.createStyleSheet(missingStylesheetsUrl);
09432a572a44 [IE] use document.createStyleSheet to add CSS dynamically (closes #2356261)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 8349
diff changeset
   192
                    } else {
09432a572a44 [IE] use document.createStyleSheet to add CSS dynamically (closes #2356261)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 8349
diff changeset
   193
                        $srcnode.attr('href', missingStylesheetsUrl);
09432a572a44 [IE] use document.createStyleSheet to add CSS dynamically (closes #2356261)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 8349
diff changeset
   194
                        $srcnode.appendTo($head);
09432a572a44 [IE] use document.createStyleSheet to add CSS dynamically (closes #2356261)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 8349
diff changeset
   195
                    }
7649
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   196
                }
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   197
            }
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   198
        });
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   199
        $responseHead.find('link[href]').remove();
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   200
    },
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   201
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   202
    _loadAjaxScripts: function($responseHead, $head) {
9523
cd5738fc440f [ajax] use a custom tag to handle dynamically loaded js
Julien Cristau <julien.cristau@logilab.fr>
parents: 8880
diff changeset
   203
        $responseHead.find('cubicweb\\:script').each(function(i) {
7649
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   204
            var $srcnode = $(this);
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   205
            var url = $srcnode.attr('src');
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   206
            if (url) {
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   207
                var missingScriptsUrl = cw.ajax._buildMissingResourcesUrl(url, cw.loaded_scripts);
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   208
                if (missingScriptsUrl) {
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   209
                    $srcnode.attr('src', missingScriptsUrl);
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   210
                    /* special handling of <script> tags: script nodes appended by jquery
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   211
                     * use uncached ajax calls and do not appear in the DOM
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   212
                     * (See comments in response to Syt on // http://api.jquery.com/append/),
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   213
                     * which cause undesired duplicated load in our case. We now handle
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   214
                     * a list of already loaded resources, since bare DOM api gives bugs with the
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   215
                     * server-response event, and we lose control on when the
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   216
                     * script is loaded (jQuery loads it immediately). */
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   217
                    cw.ajax.evalscripts($srcnode);
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   218
                }
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   219
            } else {
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   220
                // <script> contains inlined javascript code, node content
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   221
                // must be evaluated
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   222
    	        jQuery.globalEval($srcnode.text());
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   223
    	    }
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   224
        });
9523
cd5738fc440f [ajax] use a custom tag to handle dynamically loaded js
Julien Cristau <julien.cristau@logilab.fr>
parents: 8880
diff changeset
   225
        $responseHead.find('cubicweb\\:script').remove();
7284
a474cb989546 [js] make _loadAjaxHtmlHead aware of mod_concat-like urls
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 7199
diff changeset
   226
    }
7427
06444c1233e0 [ajax js/css] modconcat fix: load code exactly once (auc, fcayre)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7377
diff changeset
   227
});
7284
a474cb989546 [js] make _loadAjaxHtmlHead aware of mod_concat-like urls
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 7199
diff changeset
   228
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   229
//============= utility function handling remote calls responses. ==============//
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   230
/**
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   231
 * .. function:: function loadAjaxHtmlHead(response)
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   232
 *
4174
860f622a31aa [javascript] remove ajaxHtmlHead from dom response once it has been processed.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3863
diff changeset
   233
 * inspect dom response (as returned by getDomFromResponse), search for
860f622a31aa [javascript] remove ajaxHtmlHead from dom response once it has been processed.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3863
diff changeset
   234
 * a <div class="ajaxHtmlHead"> node and put its content into the real
860f622a31aa [javascript] remove ajaxHtmlHead from dom response once it has been processed.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3863
diff changeset
   235
 * document's head.
642
2cf7b79d8e77 [javascript] rewrote loadxhtml() plugin in order to be able to pass the XHR object to postAjaxLoad
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 540
diff changeset
   236
 * This enables dynamic css and js loading and is used by replacePageChunk
2cf7b79d8e77 [javascript] rewrote loadxhtml() plugin in order to be able to pass the XHR object to postAjaxLoad
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 540
diff changeset
   237
 */
4174
860f622a31aa [javascript] remove ajaxHtmlHead from dom response once it has been processed.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3863
diff changeset
   238
function loadAjaxHtmlHead(response) {
860f622a31aa [javascript] remove ajaxHtmlHead from dom response once it has been processed.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3863
diff changeset
   239
    var $head = jQuery('head');
860f622a31aa [javascript] remove ajaxHtmlHead from dom response once it has been processed.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3863
diff changeset
   240
    var $responseHead = jQuery(response).find('div.ajaxHtmlHead');
860f622a31aa [javascript] remove ajaxHtmlHead from dom response once it has been processed.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3863
diff changeset
   241
    // no ajaxHtmlHead found, no processing required
860f622a31aa [javascript] remove ajaxHtmlHead from dom response once it has been processed.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3863
diff changeset
   242
    if (!$responseHead.length) {
860f622a31aa [javascript] remove ajaxHtmlHead from dom response once it has been processed.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3863
diff changeset
   243
        return response;
860f622a31aa [javascript] remove ajaxHtmlHead from dom response once it has been processed.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3863
diff changeset
   244
    }
7649
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   245
    cw.ajax._loadAjaxStylesheets($responseHead, $head);
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   246
    cw.ajax._loadAjaxScripts($responseHead, $head);
4174
860f622a31aa [javascript] remove ajaxHtmlHead from dom response once it has been processed.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3863
diff changeset
   247
    // add any remaining children (e.g. meta)
860f622a31aa [javascript] remove ajaxHtmlHead from dom response once it has been processed.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3863
diff changeset
   248
    $responseHead.children().appendTo($head);
860f622a31aa [javascript] remove ajaxHtmlHead from dom response once it has been processed.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3863
diff changeset
   249
    // remove original container, which is now empty
860f622a31aa [javascript] remove ajaxHtmlHead from dom response once it has been processed.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3863
diff changeset
   250
    $responseHead.remove();
860f622a31aa [javascript] remove ajaxHtmlHead from dom response once it has been processed.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3863
diff changeset
   251
    // if there was only one actual node in the reponse besides
860f622a31aa [javascript] remove ajaxHtmlHead from dom response once it has been processed.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3863
diff changeset
   252
    // the ajaxHtmlHead, then remove the wrapper created by
860f622a31aa [javascript] remove ajaxHtmlHead from dom response once it has been processed.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3863
diff changeset
   253
    // getDomFromResponse() and return this single element
860f622a31aa [javascript] remove ajaxHtmlHead from dom response once it has been processed.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3863
diff changeset
   254
    // For instance :
860f622a31aa [javascript] remove ajaxHtmlHead from dom response once it has been processed.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3863
diff changeset
   255
    // 1/ CW returned the following content :
860f622a31aa [javascript] remove ajaxHtmlHead from dom response once it has been processed.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3863
diff changeset
   256
    //    <div>the-actual-content</div><div class="ajaxHtmlHead">...</div>
860f622a31aa [javascript] remove ajaxHtmlHead from dom response once it has been processed.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3863
diff changeset
   257
    // 2/ getDomFromReponse() wrapped this into a single DIV to hold everything
860f622a31aa [javascript] remove ajaxHtmlHead from dom response once it has been processed.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3863
diff changeset
   258
    //    in one, unique, dom element
860f622a31aa [javascript] remove ajaxHtmlHead from dom response once it has been processed.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3863
diff changeset
   259
    // 3/ now that we've removed the ajaxHtmlHead div, the only
860f622a31aa [javascript] remove ajaxHtmlHead from dom response once it has been processed.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3863
diff changeset
   260
    //    node left in the wrapper if the 'real' node built by the view,
860f622a31aa [javascript] remove ajaxHtmlHead from dom response once it has been processed.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3863
diff changeset
   261
    //    we can safely return this node. Otherwise, the view itself
860f622a31aa [javascript] remove ajaxHtmlHead from dom response once it has been processed.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3863
diff changeset
   262
    //    returned several 'root' nodes and we need to keep the wrapper
860f622a31aa [javascript] remove ajaxHtmlHead from dom response once it has been processed.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3863
diff changeset
   263
    //    created by getDomFromResponse()
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   264
    if (response.childNodes.length == 1 && response.getAttribute('cubicweb:type') == 'cwResponseWrapper') {
4174
860f622a31aa [javascript] remove ajaxHtmlHead from dom response once it has been processed.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3863
diff changeset
   265
        return response.firstChild;
860f622a31aa [javascript] remove ajaxHtmlHead from dom response once it has been processed.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3863
diff changeset
   266
    }
860f622a31aa [javascript] remove ajaxHtmlHead from dom response once it has been processed.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3863
diff changeset
   267
    return response;
1512
c51ca5f49a78 fix insertion of head content on ajax queries
sylvain.thenault@logilab.fr
parents: 1498
diff changeset
   268
}
c51ca5f49a78 fix insertion of head content on ajax queries
sylvain.thenault@logilab.fr
parents: 1498
diff changeset
   269
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   270
function _postAjaxLoad(node) {
540
e5c97f6f119d [javascript] extract ajax postprocessing in a separate function
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 492
diff changeset
   271
    // find textareas and wrap them if there are some
e5c97f6f119d [javascript] extract ajax postprocessing in a separate function
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 492
diff changeset
   272
    if (typeof(FCKeditor) != 'undefined') {
4175
92a10d2a09af [javascript] cleanup, remove tabs
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 4174
diff changeset
   273
        buildWysiwygEditors();
540
e5c97f6f119d [javascript] extract ajax postprocessing in a separate function
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 492
diff changeset
   274
    }
e5c97f6f119d [javascript] extract ajax postprocessing in a separate function
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 492
diff changeset
   275
    if (typeof initFacetBoxEvents != 'undefined') {
4175
92a10d2a09af [javascript] cleanup, remove tabs
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 4174
diff changeset
   276
        initFacetBoxEvents(node);
540
e5c97f6f119d [javascript] extract ajax postprocessing in a separate function
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 492
diff changeset
   277
    }
e5c97f6f119d [javascript] extract ajax postprocessing in a separate function
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 492
diff changeset
   278
    if (typeof buildWidgets != 'undefined') {
4175
92a10d2a09af [javascript] cleanup, remove tabs
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 4174
diff changeset
   279
        buildWidgets(node);
540
e5c97f6f119d [javascript] extract ajax postprocessing in a separate function
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 492
diff changeset
   280
    }
2338
3f7c7fbae94e call postAjaxLoad in reloadComponent; add corners only on reloaded elements
Katia Saurfelt <katia.saurfelt@logilab.fr>
parents: 2257
diff changeset
   281
    if (typeof roundedCorners != 'undefined') {
4175
92a10d2a09af [javascript] cleanup, remove tabs
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 4174
diff changeset
   282
        roundedCorners(node);
955
3017a858bbc2 round corders on ajax loads
sylvain.thenault@logilab.fr
parents: 540
diff changeset
   283
    }
3863
fe22502d4ab1 [forms] add setFormsTarget() to the list of postAjaxLoad callbacks to have iframe on ajax-rendered forms
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3784
diff changeset
   284
    if (typeof setFormsTarget != 'undefined') {
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   285
        setFormsTarget(node);
3863
fe22502d4ab1 [forms] add setFormsTarget() to the list of postAjaxLoad callbacks to have iframe on ajax-rendered forms
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3784
diff changeset
   286
    }
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   287
    _loadDynamicFragments(node);
4830
10e8bc190695 [javascript] fix #736185: add_onload / jQuery.bind() vs. jQuery.one()
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 4208
diff changeset
   288
    // XXX [3.7] jQuery.one is now used instead jQuery.bind,
10e8bc190695 [javascript] fix #736185: add_onload / jQuery.bind() vs. jQuery.one()
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 4208
diff changeset
   289
    // jquery.treeview.js can be unpatched accordingly.
6448
8590d82e9b1b [javascript] update to jQuery 1.4.2 and jQuery-ui 1.8.5
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 6215
diff changeset
   290
    jQuery(cw).trigger('server-response', [true, node]);
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   291
    jQuery(node).trigger('server-response', [true, node]);
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   292
}
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   293
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   294
function remoteCallFailed(err, req) {
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   295
    cw.log(err);
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   296
    if (req.status == 500) {
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   297
        updateMessage(err);
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   298
    } else {
6109
47d9c0e0f7b7 integrate Celso's work on translation file: proper/complete spanish translation, fixed some typos in french translation, occured -> occurred fix in various places
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5998
diff changeset
   299
        updateMessage(_("an error occurred while processing your request"));
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   300
    }
540
e5c97f6f119d [javascript] extract ajax postprocessing in a separate function
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 492
diff changeset
   301
}
e5c97f6f119d [javascript] extract ajax postprocessing in a separate function
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 492
diff changeset
   302
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   303
//============= base AJAX functions to make remote calls =====================//
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   304
/**
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   305
 * .. function:: ajaxFuncArgs(fname, form, *args)
3011
657dfe374b08 cleanup
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2338
diff changeset
   306
 *
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   307
 * extend `form` parameters to call the js_`fname` function of the json
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   308
 * controller with `args` arguments.
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   309
 */
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   310
function ajaxFuncArgs(fname, form /* ... */) {
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   311
    form = form || {};
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   312
    $.extend(form, {
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   313
        'fname': fname,
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   314
        'pageid': pageid,
9661
c170ec8a4525 [web/data] Remove broken jquery-json plugin (closes #3590335)
Rémi Cardona <remi.cardona@logilab.fr>
parents: 9550
diff changeset
   315
        'arg': $.map(cw.utils.sliceList(arguments, 2), JSON.stringify)
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   316
    });
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   317
    return form;
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   318
}
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   319
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   320
/**
7571
6386f802fbc6 [cw.ajax] fix loadxhtml documentation and warn when called on an empty elements list
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7422
diff changeset
   321
 * .. function:: loadxhtml(url, form, reqtype='get', mode='replace', cursor=false)
3011
657dfe374b08 cleanup
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2338
diff changeset
   322
 *
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   323
 * build url given by absolute or relative `url` and `form` parameters
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   324
 * (dictionary), fetch it using `reqtype` method, then evaluate the
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   325
 * returned XHTML and insert it according to `mode` in the
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   326
 * document. Possible modes are :
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   327
 *
3011
657dfe374b08 cleanup
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2338
diff changeset
   328
 *    - 'replace' to replace the node's content with the generated HTML
657dfe374b08 cleanup
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2338
diff changeset
   329
 *    - 'swap' to replace the node itself with the generated HTML
657dfe374b08 cleanup
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2338
diff changeset
   330
 *    - 'append' to append the generated HTML to the node's content
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   331
 *
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   332
 * If `cursor`, turn mouse cursor into 'progress' cursor until the remote call
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   333
 * is back.
3011
657dfe374b08 cleanup
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2338
diff changeset
   334
 */
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   335
jQuery.fn.loadxhtml = function(url, form, reqtype, mode, cursor) {
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   336
    if (this.size() > 1) {
7571
6386f802fbc6 [cw.ajax] fix loadxhtml documentation and warn when called on an empty elements list
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7422
diff changeset
   337
        cw.log('loadxhtml called with more than one element');
6386f802fbc6 [cw.ajax] fix loadxhtml documentation and warn when called on an empty elements list
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7422
diff changeset
   338
    } else if (this.size() < 1) {
6386f802fbc6 [cw.ajax] fix loadxhtml documentation and warn when called on an empty elements list
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7422
diff changeset
   339
        cw.log('loadxhtml called without an element');
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   340
    }
642
2cf7b79d8e77 [javascript] rewrote loadxhtml() plugin in order to be able to pass the XHR object to postAjaxLoad
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 540
diff changeset
   341
    var node = this.get(0); // only consider the first element
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   342
    if (cursor) {
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   343
        setProgressCursor();
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   344
    }
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   345
    var d = loadRemote(url, form, reqtype);
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   346
    d.addCallback(function(response) {
4174
860f622a31aa [javascript] remove ajaxHtmlHead from dom response once it has been processed.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3863
diff changeset
   347
        var domnode = getDomFromResponse(response);
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   348
        domnode = loadAjaxHtmlHead(domnode);
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   349
        mode = mode || 'replace';
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   350
        // make sure the component is visible
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   351
        $(node).removeClass("hidden");
4174
860f622a31aa [javascript] remove ajaxHtmlHead from dom response once it has been processed.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3863
diff changeset
   352
        if (mode == 'swap') {
860f622a31aa [javascript] remove ajaxHtmlHead from dom response once it has been processed.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3863
diff changeset
   353
            var origId = node.id;
5937
82cac9383dd8 [javascript] more cleanups and deprecation warnings removal
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5909
diff changeset
   354
            node = cw.swapDOM(node, domnode);
4174
860f622a31aa [javascript] remove ajaxHtmlHead from dom response once it has been processed.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3863
diff changeset
   355
            if (!node.id) {
860f622a31aa [javascript] remove ajaxHtmlHead from dom response once it has been processed.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3863
diff changeset
   356
                node.id = origId;
860f622a31aa [javascript] remove ajaxHtmlHead from dom response once it has been processed.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3863
diff changeset
   357
            }
860f622a31aa [javascript] remove ajaxHtmlHead from dom response once it has been processed.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3863
diff changeset
   358
        } else if (mode == 'replace') {
860f622a31aa [javascript] remove ajaxHtmlHead from dom response once it has been processed.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3863
diff changeset
   359
            jQuery(node).empty().append(domnode);
860f622a31aa [javascript] remove ajaxHtmlHead from dom response once it has been processed.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3863
diff changeset
   360
        } else if (mode == 'append') {
860f622a31aa [javascript] remove ajaxHtmlHead from dom response once it has been processed.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3863
diff changeset
   361
            jQuery(node).append(domnode);
860f622a31aa [javascript] remove ajaxHtmlHead from dom response once it has been processed.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3863
diff changeset
   362
        }
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   363
        _postAjaxLoad(node);
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   364
    });
5937
82cac9383dd8 [javascript] more cleanups and deprecation warnings removal
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5909
diff changeset
   365
    d.addErrback(remoteCallFailed);
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   366
    if (cursor) {
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   367
        d.addCallback(resetCursor);
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   368
        d.addErrback(resetCursor);
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   369
    }
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   370
    return d;
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   371
}
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   372
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   373
/**
5937
82cac9383dd8 [javascript] more cleanups and deprecation warnings removal
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5909
diff changeset
   374
 * .. function:: loadRemote(url, form, reqtype='GET', sync=false)
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   375
 *
9700
da7d341cca76 an URL -> a URL
Rémi Cardona <remi.cardona@logilab.fr>
parents: 9536
diff changeset
   376
 * Asynchronously (unless `sync` argument is set to true) load a URL or path
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   377
 * and return a deferred whose callbacks args are decoded according to the
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   378
 * Content-Type response header. `form` should be additional form params
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   379
 * dictionary, `reqtype` the HTTP request type (get 'GET' or 'POST').
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   380
 */
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   381
function loadRemote(url, form, reqtype, sync) {
7122
3b0f1c2af20f [javascript] fix loadRemote test for JSON_BASE_URL / baseuri matching
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 6952
diff changeset
   382
    if (!url.toLowerCase().startswith(baseuri().toLowerCase())) {
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   383
        url = baseuri() + url;
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   384
    }
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   385
    if (!sync) {
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   386
        var deferred = new Deferred();
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   387
        jQuery.ajax({
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   388
            url: url,
6618
1268da8a2dbb [js/ajax] switch to POST by default, fixes an IE7 caching bug
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 6560
diff changeset
   389
            type: (reqtype || 'POST').toUpperCase(),
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   390
            data: form,
6448
8590d82e9b1b [javascript] update to jQuery 1.4.2 and jQuery-ui 1.8.5
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 6215
diff changeset
   391
            traditional: true,
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   392
            async: true,
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   393
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   394
            beforeSend: function(xhr) {
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   395
                deferred._req = xhr;
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   396
            },
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   397
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   398
            success: function(data, status) {
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   399
                deferred.success(data);
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   400
            },
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   401
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   402
            error: function(xhr, status, error) {
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   403
                try {
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   404
                    if (xhr.status == 500) {
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   405
                        var reason_dict = cw.evalJSON(xhr.responseText);
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   406
                        deferred.error(xhr, status, reason_dict['reason']);
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   407
                        return;
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   408
                    }
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   409
                } catch(exc) {
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   410
                    cw.log('error with server side error report:' + exc);
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   411
                }
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   412
                deferred.error(xhr, status, null);
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   413
            }
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   414
        });
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   415
        return deferred;
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   416
    } else {
6555
f8b36b1e98bf [javascript] fix loadRemote implementation for synchronous requests
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 6448
diff changeset
   417
        var result;
f8b36b1e98bf [javascript] fix loadRemote implementation for synchronous requests
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 6448
diff changeset
   418
        // jQuery.ajax returns the XHR object, even for synchronous requests,
f8b36b1e98bf [javascript] fix loadRemote implementation for synchronous requests
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 6448
diff changeset
   419
        // but in that case, the success callback will be called before
f8b36b1e98bf [javascript] fix loadRemote implementation for synchronous requests
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 6448
diff changeset
   420
        // jQuery.ajax returns. The first argument of the callback will be
f8b36b1e98bf [javascript] fix loadRemote implementation for synchronous requests
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 6448
diff changeset
   421
        // the server result, interpreted by jQuery according to the reponse's
f8b36b1e98bf [javascript] fix loadRemote implementation for synchronous requests
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 6448
diff changeset
   422
        // content-type (i.e. json or xml)
f8b36b1e98bf [javascript] fix loadRemote implementation for synchronous requests
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 6448
diff changeset
   423
        jQuery.ajax({
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   424
            url: url,
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   425
            type: (reqtype || 'GET').toUpperCase(),
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   426
            data: form,
6448
8590d82e9b1b [javascript] update to jQuery 1.4.2 and jQuery-ui 1.8.5
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 6215
diff changeset
   427
            traditional: true,
6555
f8b36b1e98bf [javascript] fix loadRemote implementation for synchronous requests
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 6448
diff changeset
   428
            async: false,
f8b36b1e98bf [javascript] fix loadRemote implementation for synchronous requests
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 6448
diff changeset
   429
            success: function(res) {
f8b36b1e98bf [javascript] fix loadRemote implementation for synchronous requests
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 6448
diff changeset
   430
                result = res;
f8b36b1e98bf [javascript] fix loadRemote implementation for synchronous requests
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 6448
diff changeset
   431
            }
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   432
        });
6121
57dddb6b5913 add missing semi colon in js
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents: 6109
diff changeset
   433
        return result;
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   434
    }
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   435
}
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   436
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   437
//============= higher level AJAX functions using remote calls ===============//
10028
326fbc5c92b0 [web] Cache results from 'i18n' ajax controller (closes #4487856)
Rémi Cardona <remi.cardona@logilab.fr>
parents: 9785
diff changeset
   438
326fbc5c92b0 [web] Cache results from 'i18n' ajax controller (closes #4487856)
Rémi Cardona <remi.cardona@logilab.fr>
parents: 9785
diff changeset
   439
var _i18ncache = {};
326fbc5c92b0 [web] Cache results from 'i18n' ajax controller (closes #4487856)
Rémi Cardona <remi.cardona@logilab.fr>
parents: 9785
diff changeset
   440
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   441
/**
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   442
 * .. function:: _(message)
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   443
 *
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   444
 * emulation of gettext's _ shortcut
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   445
 */
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   446
function _(message) {
10028
326fbc5c92b0 [web] Cache results from 'i18n' ajax controller (closes #4487856)
Rémi Cardona <remi.cardona@logilab.fr>
parents: 9785
diff changeset
   447
    var form;
326fbc5c92b0 [web] Cache results from 'i18n' ajax controller (closes #4487856)
Rémi Cardona <remi.cardona@logilab.fr>
parents: 9785
diff changeset
   448
    if (!(message in _i18ncache)) {
326fbc5c92b0 [web] Cache results from 'i18n' ajax controller (closes #4487856)
Rémi Cardona <remi.cardona@logilab.fr>
parents: 9785
diff changeset
   449
        form = ajaxFuncArgs('i18n', null, [message]);
326fbc5c92b0 [web] Cache results from 'i18n' ajax controller (closes #4487856)
Rémi Cardona <remi.cardona@logilab.fr>
parents: 9785
diff changeset
   450
        _i18ncache[message] = loadRemote(AJAX_BASE_URL, form, 'GET', true)[0];
326fbc5c92b0 [web] Cache results from 'i18n' ajax controller (closes #4487856)
Rémi Cardona <remi.cardona@logilab.fr>
parents: 9785
diff changeset
   451
    }
326fbc5c92b0 [web] Cache results from 'i18n' ajax controller (closes #4487856)
Rémi Cardona <remi.cardona@logilab.fr>
parents: 9785
diff changeset
   452
    return _i18ncache[message];
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   453
}
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   454
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   455
/**
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   456
 * .. function:: _loadDynamicFragments(node)
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   457
 *
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   458
 * finds each dynamic fragment in the page and executes the
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   459
 * the associated RQL to build them (Async call)
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   460
 */
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   461
function _loadDynamicFragments(node) {
1512
c51ca5f49a78 fix insertion of head content on ajax queries
sylvain.thenault@logilab.fr
parents: 1498
diff changeset
   462
    if (node) {
4175
92a10d2a09af [javascript] cleanup, remove tabs
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 4174
diff changeset
   463
        var fragments = jQuery(node).find('div.dynamicFragment');
1512
c51ca5f49a78 fix insertion of head content on ajax queries
sylvain.thenault@logilab.fr
parents: 1498
diff changeset
   464
    } else {
4175
92a10d2a09af [javascript] cleanup, remove tabs
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 4174
diff changeset
   465
        var fragments = jQuery('div.dynamicFragment');
1512
c51ca5f49a78 fix insertion of head content on ajax queries
sylvain.thenault@logilab.fr
parents: 1498
diff changeset
   466
    }
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   467
    if (fragments.length == 0) {
4175
92a10d2a09af [javascript] cleanup, remove tabs
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 4174
diff changeset
   468
        return;
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   469
    }
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   470
    if (typeof LOADING_MSG == 'undefined') {
4175
92a10d2a09af [javascript] cleanup, remove tabs
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 4174
diff changeset
   471
        LOADING_MSG = 'loading'; // this is only a safety belt, it should not happen
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   472
    }
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   473
    for (var i = 0; i < fragments.length; i++) {
4175
92a10d2a09af [javascript] cleanup, remove tabs
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 4174
diff changeset
   474
        var fragment = fragments[i];
92a10d2a09af [javascript] cleanup, remove tabs
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 4174
diff changeset
   475
        fragment.innerHTML = '<h3>' + LOADING_MSG + ' ... <img src="data/loading.gif" /></h3>';
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   476
        var $fragment = jQuery(fragment);
4175
92a10d2a09af [javascript] cleanup, remove tabs
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 4174
diff changeset
   477
        // if cubicweb:loadurl is set, just pick the url et send it to loadxhtml
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   478
        var url = $fragment.attr('cubicweb:loadurl');
4175
92a10d2a09af [javascript] cleanup, remove tabs
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 4174
diff changeset
   479
        if (url) {
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   480
            $fragment.loadxhtml(url);
4175
92a10d2a09af [javascript] cleanup, remove tabs
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 4174
diff changeset
   481
            continue;
92a10d2a09af [javascript] cleanup, remove tabs
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 4174
diff changeset
   482
        }
92a10d2a09af [javascript] cleanup, remove tabs
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 4174
diff changeset
   483
        // else: rebuild full url by fetching cubicweb:rql, cubicweb:vid, etc.
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   484
        var rql = $fragment.attr('cubicweb:rql');
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   485
        var items = $fragment.attr('cubicweb:vid').split('&');
4175
92a10d2a09af [javascript] cleanup, remove tabs
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 4174
diff changeset
   486
        var vid = items[0];
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   487
        var extraparams = {};
4175
92a10d2a09af [javascript] cleanup, remove tabs
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 4174
diff changeset
   488
        // case where vid='myvid&param1=val1&param2=val2': this is a deprecated abuse-case
92a10d2a09af [javascript] cleanup, remove tabs
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 4174
diff changeset
   489
        if (items.length > 1) {
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   490
            cw.log("[3.5] you're using extraargs in cubicweb:vid " +
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   491
                   "attribute, this is deprecated, consider using " +
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   492
                   "loadurl instead");
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   493
            for (var j = 1; j < items.length; j++) {
4175
92a10d2a09af [javascript] cleanup, remove tabs
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 4174
diff changeset
   494
                var keyvalue = items[j].split('=');
92a10d2a09af [javascript] cleanup, remove tabs
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 4174
diff changeset
   495
                extraparams[keyvalue[0]] = keyvalue[1];
92a10d2a09af [javascript] cleanup, remove tabs
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 4174
diff changeset
   496
            }
92a10d2a09af [javascript] cleanup, remove tabs
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 4174
diff changeset
   497
        }
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   498
        var actrql = $fragment.attr('cubicweb:actualrql');
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   499
        if (actrql) {
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   500
            extraparams['actualrql'] = actrql;
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   501
        }
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   502
        var fbvid = $fragment.attr('cubicweb:fallbackvid');
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   503
        if (fbvid) {
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   504
            extraparams['fallbackvid'] = fbvid;
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   505
        }
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   506
        extraparams['rql'] = rql;
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   507
        extraparams['vid'] = vid;
8260
5a81fa526b30 [ajax] use AJAX_BASE_URL instead of JSON_BASE_URL
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 8191
diff changeset
   508
        $fragment.loadxhtml(AJAX_BASE_URL, ajaxFuncArgs('view', extraparams));
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   509
    }
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   510
}
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   511
function unloadPageData() {
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   512
    // NOTE: do not make async calls on unload if you want to avoid
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   513
    //       strange bugs
8260
5a81fa526b30 [ajax] use AJAX_BASE_URL instead of JSON_BASE_URL
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 8191
diff changeset
   514
    loadRemote(AJAX_BASE_URL, ajaxFuncArgs('unload_page_data'), 'GET', true);
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   515
}
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   516
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   517
function removeBookmark(beid) {
8260
5a81fa526b30 [ajax] use AJAX_BASE_URL instead of JSON_BASE_URL
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 8191
diff changeset
   518
    var d = loadRemote(AJAX_BASE_URL, ajaxFuncArgs('delete_bookmark', null, beid));
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   519
    d.addCallback(function(boxcontent) {
8260
5a81fa526b30 [ajax] use AJAX_BASE_URL instead of JSON_BASE_URL
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 8191
diff changeset
   520
        $('#bookmarks_box').loadxhtml(AJAX_BASE_URL,
6947
3d72028a6cd4 [js] using the actual registry fixes spurious warnings
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6924
diff changeset
   521
                                      ajaxFuncArgs('render', null, 'ctxcomponents',
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   522
                                                   'bookmarks_box'));
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   523
        document.location.hash = '#header';
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   524
        updateMessage(_("bookmark has been removed"));
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   525
    });
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   526
}
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   527
9785
8125ba3f4f6d [js/ajax] deprecate user-callback support
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9770
diff changeset
   528
userCallback = cw.utils.deprecatedFunction(
8125ba3f4f6d [js/ajax] deprecate user-callback support
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9770
diff changeset
   529
    '[3.19] use a plain ajaxfunc instead of user callbacks',
8125ba3f4f6d [js/ajax] deprecate user-callback support
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9770
diff changeset
   530
    function userCallback(cbname) {
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   531
    setProgressCursor();
8260
5a81fa526b30 [ajax] use AJAX_BASE_URL instead of JSON_BASE_URL
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 8191
diff changeset
   532
    var d = loadRemote(AJAX_BASE_URL, ajaxFuncArgs('user_callback', null, cbname));
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   533
    d.addCallback(resetCursor);
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   534
    d.addErrback(resetCursor);
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   535
    d.addErrback(remoteCallFailed);
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   536
    return d;
9785
8125ba3f4f6d [js/ajax] deprecate user-callback support
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9770
diff changeset
   537
});
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   538
9785
8125ba3f4f6d [js/ajax] deprecate user-callback support
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9770
diff changeset
   539
userCallbackThenUpdateUI = cw.utils.deprecatedFunction(
8125ba3f4f6d [js/ajax] deprecate user-callback support
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9770
diff changeset
   540
    '[3.19] use a plain ajaxfunc instead of user callbacks',
8125ba3f4f6d [js/ajax] deprecate user-callback support
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9770
diff changeset
   541
    function userCallbackThenUpdateUI(cbname, compid, rql, msg, registry, nodeid) {
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   542
    var d = userCallback(cbname);
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   543
    d.addCallback(function() {
8260
5a81fa526b30 [ajax] use AJAX_BASE_URL instead of JSON_BASE_URL
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 8191
diff changeset
   544
        $('#' + nodeid).loadxhtml(AJAX_BASE_URL, ajaxFuncArgs('render', {'rql': rql},
6215
759cf097f5aa [javascript] get rid of tabs
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 6121
diff changeset
   545
                                                       registry, compid));
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   546
        if (msg) {
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   547
            updateMessage(msg);
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   548
        }
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   549
    });
9785
8125ba3f4f6d [js/ajax] deprecate user-callback support
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9770
diff changeset
   550
});
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   551
9785
8125ba3f4f6d [js/ajax] deprecate user-callback support
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9770
diff changeset
   552
userCallbackThenReloadPage = cw.utils.deprecatedFunction(
8125ba3f4f6d [js/ajax] deprecate user-callback support
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9770
diff changeset
   553
    '[3.19] use a plain ajaxfunc instead of user callbacks',
8125ba3f4f6d [js/ajax] deprecate user-callback support
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9770
diff changeset
   554
    function userCallbackThenReloadPage(cbname, msg) {
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   555
    var d = userCallback(cbname);
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   556
    d.addCallback(function() {
4175
92a10d2a09af [javascript] cleanup, remove tabs
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 4174
diff changeset
   557
        window.location.reload();
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   558
        if (msg) {
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   559
            updateMessage(msg);
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   560
        }
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   561
    });
9785
8125ba3f4f6d [js/ajax] deprecate user-callback support
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9770
diff changeset
   562
});
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   563
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   564
/**
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   565
 * .. function:: unregisterUserCallback(cbname)
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   566
 *
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   567
 * unregisters the python function registered on the server's side
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   568
 * while the page was generated.
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   569
 */
9785
8125ba3f4f6d [js/ajax] deprecate user-callback support
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9770
diff changeset
   570
unregisterUserCallback = cw.utils.deprecatedFunction(
8125ba3f4f6d [js/ajax] deprecate user-callback support
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9770
diff changeset
   571
    '[3.19] use a plain ajaxfunc instead of user callbacks',
8125ba3f4f6d [js/ajax] deprecate user-callback support
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9770
diff changeset
   572
    function unregisterUserCallback(cbname) {
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   573
    setProgressCursor();
8260
5a81fa526b30 [ajax] use AJAX_BASE_URL instead of JSON_BASE_URL
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 8191
diff changeset
   574
    var d = loadRemote(AJAX_BASE_URL, ajaxFuncArgs('unregister_user_callback',
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   575
                                            null, cbname));
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   576
    d.addCallback(resetCursor);
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   577
    d.addErrback(resetCursor);
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   578
    d.addErrback(remoteCallFailed);
9785
8125ba3f4f6d [js/ajax] deprecate user-callback support
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9770
diff changeset
   579
});
8125ba3f4f6d [js/ajax] deprecate user-callback support
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9770
diff changeset
   580
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   581
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   582
//============= XXX move those functions? ====================================//
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   583
function openHash() {
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   584
    if (document.location.hash) {
4175
92a10d2a09af [javascript] cleanup, remove tabs
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 4174
diff changeset
   585
        var nid = document.location.hash.replace('#', '');
92a10d2a09af [javascript] cleanup, remove tabs
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 4174
diff changeset
   586
        var node = jQuery('#' + nid);
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   587
        if (node) {
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   588
            $(node).removeClass("hidden");
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   589
        }
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   590
    };
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   591
}
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   592
jQuery(document).ready(openHash);
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   593
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   594
/**
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   595
 * .. function:: buildWysiwygEditors(parent)
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   596
 *
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   597
 *XXX: this function should go in edition.js but as for now, htmlReplace
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   598
 * references it.
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   599
 *
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   600
 * replace all textareas with fckeditors.
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   601
 */
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   602
function buildWysiwygEditors(parent) {
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   603
    jQuery('textarea').each(function() {
4175
92a10d2a09af [javascript] cleanup, remove tabs
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 4174
diff changeset
   604
        if (this.getAttribute('cubicweb:type') == 'wysiwyg') {
3060
ea967a4f6ccb avoid installing editor n times for n ajax loads
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 3011
diff changeset
   605
            // mark editor as instanciated, we may be called a number of times
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   606
            // (see _postAjaxLoad)
3060
ea967a4f6ccb avoid installing editor n times for n ajax loads
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 3011
diff changeset
   607
            this.setAttribute('cubicweb:type', 'fckeditor');
4175
92a10d2a09af [javascript] cleanup, remove tabs
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 4174
diff changeset
   608
            if (typeof FCKeditor != "undefined") {
92a10d2a09af [javascript] cleanup, remove tabs
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 4174
diff changeset
   609
                var fck = new FCKeditor(this.id);
92a10d2a09af [javascript] cleanup, remove tabs
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 4174
diff changeset
   610
                fck.Config['CustomConfigurationsPath'] = fckconfigpath;
92a10d2a09af [javascript] cleanup, remove tabs
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 4174
diff changeset
   611
                fck.Config['DefaultLanguage'] = fcklang;
7199
589801acf08e [fckeditor] fix fckeditor relative url: use baseuri()
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 7122
diff changeset
   612
                fck.BasePath = baseuri() + "fckeditor/";
4175
92a10d2a09af [javascript] cleanup, remove tabs
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 4174
diff changeset
   613
                fck.ReplaceTextarea();
92a10d2a09af [javascript] cleanup, remove tabs
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 4174
diff changeset
   614
            } else {
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   615
                cw.log('fckeditor could not be found.');
4175
92a10d2a09af [javascript] cleanup, remove tabs
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 4174
diff changeset
   616
            }
92a10d2a09af [javascript] cleanup, remove tabs
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 4174
diff changeset
   617
        }
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   618
    });
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   619
}
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   620
jQuery(document).ready(buildWysiwygEditors);
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   621
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   622
/**
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   623
 * .. function:: stripEmptyTextNodes(nodelist)
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   624
 *
1419
7ff24154351d javascript + json refactoring
sylvain.thenault@logilab.fr
parents: 1407
diff changeset
   625
 * takes a list of DOM nodes and removes all empty text nodes
7ff24154351d javascript + json refactoring
sylvain.thenault@logilab.fr
parents: 1407
diff changeset
   626
 */
7ff24154351d javascript + json refactoring
sylvain.thenault@logilab.fr
parents: 1407
diff changeset
   627
function stripEmptyTextNodes(nodelist) {
4208
b2826afdaf8c fix stripEmptyTextNodes for IE (part of #615337)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 4175
diff changeset
   628
    /* this DROPS empty text nodes */
1419
7ff24154351d javascript + json refactoring
sylvain.thenault@logilab.fr
parents: 1407
diff changeset
   629
    var stripped = [];
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   630
    for (var i = 0; i < nodelist.length; i++) {
4175
92a10d2a09af [javascript] cleanup, remove tabs
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 4174
diff changeset
   631
        var node = nodelist[i];
4208
b2826afdaf8c fix stripEmptyTextNodes for IE (part of #615337)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 4175
diff changeset
   632
        if (isTextNode(node)) {
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   633
            /* all browsers but FF -> innerText, FF -> textContent  */
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   634
            var text = node.innerText || node.textContent;
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   635
            if (text && ! text.strip()) {
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   636
                continue;
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   637
            }
4175
92a10d2a09af [javascript] cleanup, remove tabs
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 4174
diff changeset
   638
        } else {
92a10d2a09af [javascript] cleanup, remove tabs
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 4174
diff changeset
   639
            stripped.push(node);
92a10d2a09af [javascript] cleanup, remove tabs
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 4174
diff changeset
   640
        }
1419
7ff24154351d javascript + json refactoring
sylvain.thenault@logilab.fr
parents: 1407
diff changeset
   641
    }
7ff24154351d javascript + json refactoring
sylvain.thenault@logilab.fr
parents: 1407
diff changeset
   642
    return stripped;
7ff24154351d javascript + json refactoring
sylvain.thenault@logilab.fr
parents: 1407
diff changeset
   643
}
7ff24154351d javascript + json refactoring
sylvain.thenault@logilab.fr
parents: 1407
diff changeset
   644
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   645
/**
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   646
 * .. function:: getDomFromResponse(response)
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   647
 *
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   648
 * convenience function that returns a DOM node based on req's result.
3104
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 3102
diff changeset
   649
 * XXX clarify the need to clone
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 3102
diff changeset
   650
 * */
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   651
function getDomFromResponse(response) {
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   652
    if (typeof(response) == 'string') {
4175
92a10d2a09af [javascript] cleanup, remove tabs
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 4174
diff changeset
   653
        var doc = html2dom(response);
3073
09c6fe0db381 do postprocessing as in the xhtml case fix #345293
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 3060
diff changeset
   654
    } else {
09c6fe0db381 do postprocessing as in the xhtml case fix #345293
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 3060
diff changeset
   655
        var doc = response.documentElement;
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   656
    }
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   657
    var children = doc.childNodes;
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   658
    if (!children.length) {
4175
92a10d2a09af [javascript] cleanup, remove tabs
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 4174
diff changeset
   659
        // no child (error cases) => return the whole document
92a10d2a09af [javascript] cleanup, remove tabs
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 4174
diff changeset
   660
        return jQuery(doc).clone().context;
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   661
    }
1419
7ff24154351d javascript + json refactoring
sylvain.thenault@logilab.fr
parents: 1407
diff changeset
   662
    children = stripEmptyTextNodes(children);
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   663
    if (children.length == 1) {
4175
92a10d2a09af [javascript] cleanup, remove tabs
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 4174
diff changeset
   664
        // only one child => return it
92a10d2a09af [javascript] cleanup, remove tabs
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 4174
diff changeset
   665
        return jQuery(children[0]).clone().context;
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   666
    }
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   667
    // several children => wrap them in a single node and return the wrap
4174
860f622a31aa [javascript] remove ajaxHtmlHead from dom response once it has been processed.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 3863
diff changeset
   668
    return DIV({'cubicweb:type': "cwResponseWrapper"},
6215
759cf097f5aa [javascript] get rid of tabs
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 6121
diff changeset
   669
               $.map(children, function(node) {
759cf097f5aa [javascript] get rid of tabs
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 6121
diff changeset
   670
                       return jQuery(node).clone().context;})
759cf097f5aa [javascript] get rid of tabs
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 6121
diff changeset
   671
               );
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   672
}
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   673
6924
b88221afe491 [js utils] backport some generic code from comments cube
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6862
diff changeset
   674
/* High-level functions *******************************************************/
b88221afe491 [js utils] backport some generic code from comments cube
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6862
diff changeset
   675
b88221afe491 [js utils] backport some generic code from comments cube
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6862
diff changeset
   676
/**
b88221afe491 [js utils] backport some generic code from comments cube
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6862
diff changeset
   677
 * .. function:: reloadCtxComponentsSection(context, actualEid, creationEid=None)
b88221afe491 [js utils] backport some generic code from comments cube
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6862
diff changeset
   678
 *
b88221afe491 [js utils] backport some generic code from comments cube
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6862
diff changeset
   679
 * reload all components in the section for a given `context`.
b88221afe491 [js utils] backport some generic code from comments cube
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6862
diff changeset
   680
 *
b88221afe491 [js utils] backport some generic code from comments cube
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6862
diff changeset
   681
 * This is necessary for cases where the parent entity (on which the section
b88221afe491 [js utils] backport some generic code from comments cube
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6862
diff changeset
   682
 * apply) has been created during post, hence the section has to be reloaded to
b88221afe491 [js utils] backport some generic code from comments cube
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6862
diff changeset
   683
 * consider its new eid, hence the two additional arguments `actualEid` and
b88221afe491 [js utils] backport some generic code from comments cube
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6862
diff changeset
   684
 * `creationEid`: `actualEid` is the eid of newly created top level entity and
b88221afe491 [js utils] backport some generic code from comments cube
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6862
diff changeset
   685
 * `creationEid` the fake eid that was given as form creation marker (e.g. A).
b88221afe491 [js utils] backport some generic code from comments cube
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6862
diff changeset
   686
 *
b88221afe491 [js utils] backport some generic code from comments cube
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6862
diff changeset
   687
 * You can still call this function with only the actual eid if you're not in
b88221afe491 [js utils] backport some generic code from comments cube
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6862
diff changeset
   688
 * such creation case.
b88221afe491 [js utils] backport some generic code from comments cube
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6862
diff changeset
   689
 */
b88221afe491 [js utils] backport some generic code from comments cube
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6862
diff changeset
   690
function reloadCtxComponentsSection(context, actualEid, creationEid) {
b88221afe491 [js utils] backport some generic code from comments cube
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6862
diff changeset
   691
    // in this case, actualEid is the eid of newly created top level entity and
b88221afe491 [js utils] backport some generic code from comments cube
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6862
diff changeset
   692
    // creationEid the fake eid given as form creation marker (e.g. A)
b88221afe491 [js utils] backport some generic code from comments cube
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6862
diff changeset
   693
    if (!creationEid) { creationEid = actualEid ; }
b88221afe491 [js utils] backport some generic code from comments cube
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6862
diff changeset
   694
    var $compsholder = $('#' + context + creationEid);
b88221afe491 [js utils] backport some generic code from comments cube
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6862
diff changeset
   695
    // reload the whole components section
b88221afe491 [js utils] backport some generic code from comments cube
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6862
diff changeset
   696
    $compsholder.children().each(function (index) {
b88221afe491 [js utils] backport some generic code from comments cube
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6862
diff changeset
   697
	// XXX this.id[:-len(eid)]
b88221afe491 [js utils] backport some generic code from comments cube
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6862
diff changeset
   698
	var compid = this.id.replace("_", ".").rstrip(creationEid);
b88221afe491 [js utils] backport some generic code from comments cube
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6862
diff changeset
   699
	var params = ajaxFuncArgs('render', null, 'ctxcomponents',
b88221afe491 [js utils] backport some generic code from comments cube
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6862
diff changeset
   700
				  compid, actualEid);
8260
5a81fa526b30 [ajax] use AJAX_BASE_URL instead of JSON_BASE_URL
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 8191
diff changeset
   701
	$(this).loadxhtml(AJAX_BASE_URL, params, null, 'swap', true);
6924
b88221afe491 [js utils] backport some generic code from comments cube
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6862
diff changeset
   702
    });
b88221afe491 [js utils] backport some generic code from comments cube
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6862
diff changeset
   703
    $compsholder.attr('id', context + actualEid);
b88221afe491 [js utils] backport some generic code from comments cube
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6862
diff changeset
   704
}
b88221afe491 [js utils] backport some generic code from comments cube
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6862
diff changeset
   705
b88221afe491 [js utils] backport some generic code from comments cube
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6862
diff changeset
   706
b88221afe491 [js utils] backport some generic code from comments cube
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6862
diff changeset
   707
/**
8590
c9e04bf7690a [js/ajax] documentation of 'reload' is missing an argument
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 8412
diff changeset
   708
 * .. function:: reload(domid, compid, registry, formparams, *render_args)
6924
b88221afe491 [js utils] backport some generic code from comments cube
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6862
diff changeset
   709
 *
b88221afe491 [js utils] backport some generic code from comments cube
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6862
diff changeset
   710
 * `js_render` based reloading of views and components.
b88221afe491 [js utils] backport some generic code from comments cube
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6862
diff changeset
   711
 */
b88221afe491 [js utils] backport some generic code from comments cube
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6862
diff changeset
   712
function reload(domid, compid, registry, formparams  /* ... */) {
b88221afe491 [js utils] backport some generic code from comments cube
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6862
diff changeset
   713
    var ajaxArgs = ['render', formparams, registry, compid];
b88221afe491 [js utils] backport some generic code from comments cube
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6862
diff changeset
   714
    ajaxArgs = ajaxArgs.concat(cw.utils.sliceList(arguments, 4));
b88221afe491 [js utils] backport some generic code from comments cube
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6862
diff changeset
   715
    var params = ajaxFuncArgs.apply(null, ajaxArgs);
8569
40b3634eebe8 [ajax] reload function should set 'processing' cursor. Closes #2503899
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 8412
diff changeset
   716
    return $('#'+domid).loadxhtml(AJAX_BASE_URL, params, null, 'swap', true);
6924
b88221afe491 [js utils] backport some generic code from comments cube
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6862
diff changeset
   717
}
b88221afe491 [js utils] backport some generic code from comments cube
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6862
diff changeset
   718
6952
7de13eb473e3 [tabs js] merge tabs and lazy js files into cw.ajax.js and use camel case names to satisfy js coding standards
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6947
diff changeset
   719
/* ajax tabs ******************************************************************/
7de13eb473e3 [tabs js] merge tabs and lazy js files into cw.ajax.js and use camel case names to satisfy js coding standards
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6947
diff changeset
   720
7de13eb473e3 [tabs js] merge tabs and lazy js files into cw.ajax.js and use camel case names to satisfy js coding standards
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6947
diff changeset
   721
function setTab(tabname, cookiename) {
7de13eb473e3 [tabs js] merge tabs and lazy js files into cw.ajax.js and use camel case names to satisfy js coding standards
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6947
diff changeset
   722
    // set appropriate cookie
7820
2c73fc529a20 [tabs] do not use an ajax call to set cookie value, use jquery.cookie helper instead (closes #1944522)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7649
diff changeset
   723
    jQuery.cookie(cookiename, tabname, {path: '/'});
6952
7de13eb473e3 [tabs js] merge tabs and lazy js files into cw.ajax.js and use camel case names to satisfy js coding standards
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6947
diff changeset
   724
    // trigger show + tabname event
7de13eb473e3 [tabs js] merge tabs and lazy js files into cw.ajax.js and use camel case names to satisfy js coding standards
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6947
diff changeset
   725
    triggerLoad(tabname);
7de13eb473e3 [tabs js] merge tabs and lazy js files into cw.ajax.js and use camel case names to satisfy js coding standards
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6947
diff changeset
   726
}
7de13eb473e3 [tabs js] merge tabs and lazy js files into cw.ajax.js and use camel case names to satisfy js coding standards
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6947
diff changeset
   727
7de13eb473e3 [tabs js] merge tabs and lazy js files into cw.ajax.js and use camel case names to satisfy js coding standards
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6947
diff changeset
   728
function loadNow(eltsel, holesel, reloadable) {
7de13eb473e3 [tabs js] merge tabs and lazy js files into cw.ajax.js and use camel case names to satisfy js coding standards
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6947
diff changeset
   729
    var lazydiv = jQuery(eltsel);
7de13eb473e3 [tabs js] merge tabs and lazy js files into cw.ajax.js and use camel case names to satisfy js coding standards
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6947
diff changeset
   730
    var hole = lazydiv.children(holesel);
8191
eceaf9e21966 [js] better support for no js in tabs (closes #2162092)
Arthur Lutz <arthur.lutz@logilab.fr>
parents: 7952
diff changeset
   731
    hole.show();
6952
7de13eb473e3 [tabs js] merge tabs and lazy js files into cw.ajax.js and use camel case names to satisfy js coding standards
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6947
diff changeset
   732
    if ((hole.length == 0) && ! reloadable) {
7de13eb473e3 [tabs js] merge tabs and lazy js files into cw.ajax.js and use camel case names to satisfy js coding standards
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6947
diff changeset
   733
        /* the hole is already filed */
7de13eb473e3 [tabs js] merge tabs and lazy js files into cw.ajax.js and use camel case names to satisfy js coding standards
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6947
diff changeset
   734
        return;
7de13eb473e3 [tabs js] merge tabs and lazy js files into cw.ajax.js and use camel case names to satisfy js coding standards
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6947
diff changeset
   735
    }
7de13eb473e3 [tabs js] merge tabs and lazy js files into cw.ajax.js and use camel case names to satisfy js coding standards
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6947
diff changeset
   736
    lazydiv.loadxhtml(lazydiv.attr('cubicweb:loadurl'), {'pageid': pageid});
7de13eb473e3 [tabs js] merge tabs and lazy js files into cw.ajax.js and use camel case names to satisfy js coding standards
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6947
diff changeset
   737
}
7de13eb473e3 [tabs js] merge tabs and lazy js files into cw.ajax.js and use camel case names to satisfy js coding standards
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6947
diff changeset
   738
7de13eb473e3 [tabs js] merge tabs and lazy js files into cw.ajax.js and use camel case names to satisfy js coding standards
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6947
diff changeset
   739
function triggerLoad(divid) {
7de13eb473e3 [tabs js] merge tabs and lazy js files into cw.ajax.js and use camel case names to satisfy js coding standards
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6947
diff changeset
   740
    jQuery('#lazy-' + divid).trigger('load_' + divid);
7de13eb473e3 [tabs js] merge tabs and lazy js files into cw.ajax.js and use camel case names to satisfy js coding standards
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6947
diff changeset
   741
}
7de13eb473e3 [tabs js] merge tabs and lazy js files into cw.ajax.js and use camel case names to satisfy js coding standards
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6947
diff changeset
   742
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   743
/* DEPRECATED *****************************************************************/
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   744
9259
68cde7431c2c [js] remove 3.9 bw compat (where apparently unused)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8880
diff changeset
   745
// still used in cwo and keyword cubes at least
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   746
reloadComponent = cw.utils.deprecatedFunction(
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   747
    '[3.9] reloadComponent() is deprecated, use loadxhtml instead',
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   748
    function(compid, rql, registry, nodeid, extraargs) {
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   749
        registry = registry || 'components';
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   750
        rql = rql || '';
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   751
        nodeid = nodeid || (compid + 'Component');
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   752
        extraargs = extraargs || {};
5909
9af8ac182f53 [javascript] fix some javascript errors and remove some deprecation warnings
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5820
diff changeset
   753
        var node = cw.jqNode(nodeid);
8260
5a81fa526b30 [ajax] use AJAX_BASE_URL instead of JSON_BASE_URL
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 8191
diff changeset
   754
        return node.loadxhtml(AJAX_BASE_URL, ajaxFuncArgs('component', null, compid,
5a81fa526b30 [ajax] use AJAX_BASE_URL instead of JSON_BASE_URL
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 8191
diff changeset
   755
                                                          rql, registry, extraargs));
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   756
    }
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   757
);
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   758
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   759
7422
9948cdd21b36 [js/ajax] undeprecate (async)remoteExec. closes #1381205
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7374
diff changeset
   760
function remoteExec(fname /* ... */) {
9948cdd21b36 [js/ajax] undeprecate (async)remoteExec. closes #1381205
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7374
diff changeset
   761
    setProgressCursor();
9948cdd21b36 [js/ajax] undeprecate (async)remoteExec. closes #1381205
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7374
diff changeset
   762
    var props = {
9948cdd21b36 [js/ajax] undeprecate (async)remoteExec. closes #1381205
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7374
diff changeset
   763
        fname: fname,
9948cdd21b36 [js/ajax] undeprecate (async)remoteExec. closes #1381205
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7374
diff changeset
   764
        pageid: pageid,
9661
c170ec8a4525 [web/data] Remove broken jquery-json plugin (closes #3590335)
Rémi Cardona <remi.cardona@logilab.fr>
parents: 9550
diff changeset
   765
        arg: $.map(cw.utils.sliceList(arguments, 1), JSON.stringify)
7422
9948cdd21b36 [js/ajax] undeprecate (async)remoteExec. closes #1381205
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7374
diff changeset
   766
    };
9948cdd21b36 [js/ajax] undeprecate (async)remoteExec. closes #1381205
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7374
diff changeset
   767
    var result = jQuery.ajax({
8260
5a81fa526b30 [ajax] use AJAX_BASE_URL instead of JSON_BASE_URL
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 8191
diff changeset
   768
        url: AJAX_BASE_URL,
7422
9948cdd21b36 [js/ajax] undeprecate (async)remoteExec. closes #1381205
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7374
diff changeset
   769
        data: props,
9948cdd21b36 [js/ajax] undeprecate (async)remoteExec. closes #1381205
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7374
diff changeset
   770
        async: false,
9948cdd21b36 [js/ajax] undeprecate (async)remoteExec. closes #1381205
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7374
diff changeset
   771
        traditional: true
9948cdd21b36 [js/ajax] undeprecate (async)remoteExec. closes #1381205
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7374
diff changeset
   772
    }).responseText;
9948cdd21b36 [js/ajax] undeprecate (async)remoteExec. closes #1381205
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7374
diff changeset
   773
    if (result) {
9948cdd21b36 [js/ajax] undeprecate (async)remoteExec. closes #1381205
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7374
diff changeset
   774
        result = cw.evalJSON(result);
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   775
    }
7422
9948cdd21b36 [js/ajax] undeprecate (async)remoteExec. closes #1381205
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7374
diff changeset
   776
    resetCursor();
9948cdd21b36 [js/ajax] undeprecate (async)remoteExec. closes #1381205
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7374
diff changeset
   777
    return result;
9948cdd21b36 [js/ajax] undeprecate (async)remoteExec. closes #1381205
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7374
diff changeset
   778
}
5658
7b9553a9db65 [ajax] refactor/cleanup low-level ajax functions
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 5506
diff changeset
   779
7422
9948cdd21b36 [js/ajax] undeprecate (async)remoteExec. closes #1381205
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7374
diff changeset
   780
function asyncRemoteExec(fname /* ... */) {
9948cdd21b36 [js/ajax] undeprecate (async)remoteExec. closes #1381205
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7374
diff changeset
   781
    setProgressCursor();
9948cdd21b36 [js/ajax] undeprecate (async)remoteExec. closes #1381205
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7374
diff changeset
   782
    var props = {
9948cdd21b36 [js/ajax] undeprecate (async)remoteExec. closes #1381205
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7374
diff changeset
   783
        fname: fname,
9948cdd21b36 [js/ajax] undeprecate (async)remoteExec. closes #1381205
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7374
diff changeset
   784
        pageid: pageid,
9661
c170ec8a4525 [web/data] Remove broken jquery-json plugin (closes #3590335)
Rémi Cardona <remi.cardona@logilab.fr>
parents: 9550
diff changeset
   785
        arg: $.map(cw.utils.sliceList(arguments, 1), JSON.stringify)
7422
9948cdd21b36 [js/ajax] undeprecate (async)remoteExec. closes #1381205
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7374
diff changeset
   786
    };
9948cdd21b36 [js/ajax] undeprecate (async)remoteExec. closes #1381205
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7374
diff changeset
   787
    // XXX we should inline the content of loadRemote here
8260
5a81fa526b30 [ajax] use AJAX_BASE_URL instead of JSON_BASE_URL
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 8191
diff changeset
   788
    var deferred = loadRemote(AJAX_BASE_URL, props, 'POST');
7422
9948cdd21b36 [js/ajax] undeprecate (async)remoteExec. closes #1381205
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7374
diff changeset
   789
    deferred = deferred.addErrback(remoteCallFailed);
9948cdd21b36 [js/ajax] undeprecate (async)remoteExec. closes #1381205
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7374
diff changeset
   790
    deferred = deferred.addErrback(resetCursor);
9948cdd21b36 [js/ajax] undeprecate (async)remoteExec. closes #1381205
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7374
diff changeset
   791
    deferred = deferred.addCallback(resetCursor);
9948cdd21b36 [js/ajax] undeprecate (async)remoteExec. closes #1381205
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7374
diff changeset
   792
    return deferred;
9948cdd21b36 [js/ajax] undeprecate (async)remoteExec. closes #1381205
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 7374
diff changeset
   793
}
7649
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   794
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   795
jQuery(document).ready(function() {
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   796
    _loadDynamicFragments();
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   797
    // build loaded_scripts / loaded_links lists
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   798
    cw.loaded_scripts = [];
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   799
    jQuery('head script[src]').each(function(i) {
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   800
        cw.utils.extend(cw.loaded_scripts, cw.ajax._listResources(this.getAttribute('src')));
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   801
    });
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   802
    cw.loaded_links = [];
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   803
    jQuery('head link[href]').each(function(i) {
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   804
        cw.utils.extend(cw.loaded_links, cw.ajax._listResources(this.getAttribute('href')));
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   805
    });
ede740bd7077 [ajax, IE] rewrite some code to avoid duplicated evaluation with IE
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7623
diff changeset
   806
});