diff -r 058bb3dc685f -r 0b59724cb3f2 web/data/cubicweb.ajax.js
--- a/web/data/cubicweb.ajax.js Mon Jan 04 18:40:30 2016 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,743 +0,0 @@
-/* copyright 2003-2014 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
- * contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
- *
- * This file is part of CubicWeb.
- *
- * CubicWeb is free software: you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free
- * Software Foundation, either version 2.1 of the License, or (at your option)
- * any later version.
- *
- * CubicWeb is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along
- * with CubicWeb. If not, see .
- */
-
-/**
- * .. function:: Deferred
- *
- * dummy ultra minimalist implementation of deferred for jQuery
- */
-
-cw.ajax = new Namespace('cw.ajax');
-
-function Deferred() {
- this.__init__(this);
-}
-
-jQuery.extend(Deferred.prototype, {
- __init__: function() {
- this._onSuccess = [];
- this._onFailure = [];
- this._req = null;
- this._result = null;
- this._error = null;
- },
-
- addCallback: function(callback) {
- if (this._req && (this._req.readyState == 4) && this._result) {
- var args = [this._result, this._req];
- jQuery.merge(args, cw.utils.sliceList(arguments, 1));
- callback.apply(null, args);
- }
- else {
- this._onSuccess.push([callback, cw.utils.sliceList(arguments, 1)]);
- }
- return this;
- },
-
- addErrback: function(callback) {
- if (this._req && this._req.readyState == 4 && this._error) {
- callback.apply(null, [this._error, this._req]);
- }
- else {
- this._onFailure.push([callback, cw.utils.sliceList(arguments, 1)]);
- }
- return this;
- },
-
- success: function(result) {
- this._result = result;
- for (var i = 0; i < this._onSuccess.length; i++) {
- var callback = this._onSuccess[i][0];
- var args = [result, this._req];
- jQuery.merge(args, this._onSuccess[i][1]);
- callback.apply(null, args);
- }
- },
-
- error: function(xhr, status, error) {
- this._error = error;
- for (var i = 0; i < this._onFailure.length; i++) {
- var callback = this._onFailure[i][0];
- var args = [error, this._req];
- jQuery.merge(args, this._onFailure[i][1]);
- if (callback !== undefined)
- callback.apply(null, args);
- }
- }
-
-});
-
-var AJAX_PREFIX_URL = 'ajax';
-var JSON_BASE_URL = BASE_URL + 'json?';
-var AJAX_BASE_URL = BASE_URL + AJAX_PREFIX_URL + '?';
-
-
-jQuery.extend(cw.ajax, {
- /* variant of jquery evalScript with cache: true in ajax call */
- _evalscript: function ( i, elem ) {
- var src = elem.getAttribute('src');
- if (src) {
- jQuery.ajax({
- url: src,
- async: false,
- cache: true,
- dataType: "script"
- });
- } else {
- jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" );
- }
- if ( elem.parentNode ) {
- elem.parentNode.removeChild( elem );
- }
- },
-
- evalscripts: function ( scripts ) {
- if ( scripts.length ) {
- jQuery.each(scripts, cw.ajax._evalscript);
- }
- },
-
- /**
- * returns true if `url` is a mod_concat-like url
- * (e.g. http://..../data??resource1.js,resource2.js)
- */
- _modconcatLikeUrl: function(url) {
- var modconcat_rgx = new RegExp('(' + BASE_URL + 'data/([a-z0-9]+/)?)\\?\\?(.+)');
- return modconcat_rgx.exec(url);
- },
-
- /**
- * decomposes a mod_concat-like url into its corresponding list of
- * resources' urls
- * >>> _listResources('http://foo.com/data/??a.js,b.js,c.js')
- * ['http://foo.com/data/a.js', 'http://foo.com/data/b.js', 'http://foo.com/data/c.js']
- */
- _listResources: function(src) {
- var resources = [];
- var groups = cw.ajax._modconcatLikeUrl(src);
- if (groups == null) {
- resources.push(src);
- } else {
- var dataurl = groups[1];
- $.each(cw.utils.lastOf(groups).split(','),
- function() {
- resources.push(dataurl + this);
- }
- );
- }
- return resources;
- },
-
- _buildMissingResourcesUrl: function(url, loadedResources) {
- var resources = cw.ajax._listResources(url);
- var missingResources = $.grep(resources, function(resource) {
- return $.inArray(resource, loadedResources) == -1;
- });
- cw.utils.extend(loadedResources, missingResources);
- var missingResourceUrl = null;
- if (missingResources.length == 1) {
- // only one resource missing: build a node with a single resource url
- // (maybe the browser has it in cache already)
- missingResourceUrl = missingResources[0];
- } else if (missingResources.length > 1) {
- // several resources missing: build a node with a concatenated
- // resources url
- var dataurl = cw.ajax._modconcatLikeUrl(url)[1];
- var missing_path = $.map(missingResources, function(resource) {
- return resource.substring(dataurl.length);
- });
- missingResourceUrl = dataurl + '??' + missing_path.join(',');
- }
- return missingResourceUrl;
- },
-
- _loadAjaxStylesheets: function($responseHead, $head) {
- $responseHead.find('link[href]').each(function(i) {
- var $srcnode = $(this);
- var url = $srcnode.attr('href');
- if (url) {
- var missingStylesheetsUrl = cw.ajax._buildMissingResourcesUrl(url, cw.loaded_links);
- // compute concat-like url for missing resources and append
- // element to $head
- if (missingStylesheetsUrl) {
- // IE has problems with dynamic CSS insertions. One symptom (among others)
- // is a "1 item remaining" message in the status bar. (cf. #2356261)
- // document.createStyleSheet needs to be used for this, although it seems
- // that IE can't create more than 31 additional stylesheets with
- // document.createStyleSheet.
- if ($.browser.msie) {
- document.createStyleSheet(missingStylesheetsUrl);
- } else {
- $srcnode.attr('href', missingStylesheetsUrl);
- $srcnode.appendTo($head);
- }
- }
- }
- });
- $responseHead.find('link[href]').remove();
- },
-
- _loadAjaxScripts: function($responseHead, $head) {
- $responseHead.find('cubicweb\\:script').each(function(i) {
- var $srcnode = $(this);
- var url = $srcnode.attr('src');
- if (url) {
- var missingScriptsUrl = cw.ajax._buildMissingResourcesUrl(url, cw.loaded_scripts);
- if (missingScriptsUrl) {
- $srcnode.attr('src', missingScriptsUrl);
- /* special handling of