108 lines
3.4 KiB
JavaScript
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);
|