forked from rebillar/site-accueil-insa
74 lines
2.9 KiB
JavaScript
74 lines
2.9 KiB
JavaScript
(function () {
|
|
angular.module('piwikApp').factory('http404CheckInterceptor', http404CheckInterceptor);
|
|
|
|
http404CheckInterceptor.$inject = ['$q', 'globalAjaxQueue'];
|
|
|
|
function http404CheckInterceptor($q, globalAjaxQueue) {
|
|
|
|
function isClientError(rejection)
|
|
{
|
|
if (rejection.status === 500 || rejection.status <= 0) {
|
|
return true;
|
|
}
|
|
|
|
return rejection.status >= 400 && rejection.status < 408;
|
|
}
|
|
|
|
return {
|
|
'request': function(config) {
|
|
if ('object' === typeof piwik.relativePluginWebDirs
|
|
&& config && config.url && config.url.indexOf('plugins/') === 0
|
|
&& config.url.indexOf('.html') > 0
|
|
&& config.url.indexOf('/angularjs/') > 0) {
|
|
|
|
var urlParts = config.url.split('/');
|
|
if (urlParts && urlParts.length > 2 && urlParts[1]) {
|
|
var pluginName = urlParts[1];
|
|
if (pluginName && pluginName in piwik.relativePluginWebDirs && piwik.relativePluginWebDirs[pluginName]) {
|
|
urlParts[0] = piwik.relativePluginWebDirs[pluginName];
|
|
config.url = urlParts.join('/');
|
|
}
|
|
}
|
|
}
|
|
return config;
|
|
},
|
|
'responseError': function(rejection) {
|
|
|
|
if (rejection &&
|
|
isClientError(rejection) &&
|
|
rejection.config &&
|
|
rejection.config.url &&
|
|
-1 !== rejection.config.url.indexOf('.html') &&
|
|
-1 !== rejection.config.url.indexOf('plugins')) {
|
|
|
|
var posEndUrl = rejection.config.url.indexOf('.html') + 5;
|
|
var url = rejection.config.url.slice(0, posEndUrl);
|
|
|
|
var message = 'Please check your server configuration. You may want to whitelist "*.html" files from the "plugins" directory.';
|
|
message += ' The HTTP status code is ' + rejection.status + ' for URL "' + url + '"';
|
|
|
|
if (rejection.status === -1) {
|
|
message = 'Please check if you have an ad blocker or something similar enabled.';
|
|
}
|
|
|
|
var UI = require('piwik/UI');
|
|
var notification = new UI.Notification();
|
|
notification.show(message, {
|
|
title: 'Failed to load HTML file:',
|
|
context: 'error',
|
|
id: 'Network_HtmlFileLoadingError'
|
|
});
|
|
}
|
|
|
|
return $q.reject(rejection);
|
|
}
|
|
};
|
|
}
|
|
|
|
angular.module('piwikApp').config(['$httpProvider',function($httpProvider) {
|
|
$httpProvider.interceptors.push('http404CheckInterceptor');
|
|
}]);
|
|
|
|
|
|
})();
|
|
|