Files
domokits/web/revslider/assets/js/revslider.js
2019-11-21 12:25:31 +01:00

108 lines
3.4 KiB
JavaScript

if (!String.prototype.endsWith) {
String.prototype.endsWith = function(searchString, position) {
var subjectString = this.toString();
if (typeof position !== 'number' || !isFinite(position)
|| Math.floor(position) !== position || position > subjectString.length) {
position = subjectString.length;
}
position -= searchString.length;
var lastIndex = subjectString.indexOf(searchString, position);
return lastIndex !== -1 && lastIndex === position;
};
}
jQuery.getRevsliderScripts = function(arr, path) {
var _arr = jQuery.map(arr, function(scr) {
return jQuery.getScript( (path||"") + scr );
});
_arr.push(jQuery.Deferred(function( deferred ){
jQuery( deferred.resolve );
}));
return jQuery.when.apply(jQuery, _arr);
}
var Revslider = new function() {
var t = this;
var cssSelector = '.revslider';
var apiUrl = 'index.php?c=embed';
var loadedAssets = [];
t.init = function() {
if (jQuery('#revslider_script').length) {
apiUrl = jQuery('#revslider_script').attr('src').replace('assets/js/revslider.js', '') + apiUrl;
}
if (typeof punchgs != 'undefined')
loadedAssets.push('jquery.themepunch.tools.min.js');
if (typeof jQuery().revolution != 'undefined')
loadedAssets.push('jquery.themepunch.revolution.min.js');
if (typeof document.styleSheets != "undefined") {
for (var i = 0; i < document.styleSheets.length; i++) {
if (document.styleSheets[i].href && document.styleSheets[i].href.indexOf('settings.css') != -1) {
loadedAssets.push('settings.css');
break;
}
}
}
initSliders();
}
var initSliders = function() {
jQuery(cssSelector).each(function(key, item) {
loadSlider(item, key);
});
}
var loadSlider = function(placeholder, key, loaded) {
var slider = jQuery(placeholder);
jQuery.ajax({
type: 'post',
url: slider.data('api_url') ? slider.data('api_url') : apiUrl,
dataType: 'json',
data: {
alias: slider.data('alias'),
key: key
},
success: function(response) {
var content = '',
revsliderScripts = [];
if (typeof response.assets != 'undefined') {
for (var i = 0; i < response.assets.length; i++) {
if (loadedAssets.indexOf(response.assets[i].file) == -1) {
if ( response.assets[i].file.endsWith('.js') ) {
revsliderScripts.push(response.assets[i].file);
} else {
loadedAssets.push(response.assets[i].file);
content += response.assets[i].include;
}
}
}
}
if (typeof response.slider != 'undefined') {
content += response.slider;
}
jQuery.getRevsliderScripts(revsliderScripts).done(function() {
slider.html(content);
}).fail(function(xhr, error) {
console.log('Revslider scripts load error:', error);
if (xhr.status == 200) {
slider.html(content);
eval(xhr.responseText);
} else {
slider.remove();
};
});
}
});
}
}
jQuery(document).ready(Revslider.init);