nodebb-theme-lavender-seo
Version:
SEO Smart Lavender Theme. Compatible with nodebb v0.5.7
134 lines (109 loc) • 3.24 kB
JavaScript
$('document').ready(function() {
requirejs([
'lavender/masonry',
'lavender/imagesLoaded',
], function(Masonry, imagesLoaded) {
var fixed = localStorage.getItem('fixed') || 0,
masonry;
function doMasonry() {
if($('.home').length) {
masonry = new Masonry('.row.home > div', {
itemSelector: '.category-item',
columnWidth: '.category-item',
transitionDuration: 0,
isInitLayout: false
});
$('.row.home > div p img').imagesLoaded(function() {
masonry.layout();
});
var saved = JSON.parse(localStorage.getItem('masonry:layout'));
if (saved) {
for (var cid in saved) {
if (saved.hasOwnProperty(cid)) {
var category = saved[cid];
$('.category-item[data-cid="' + cid + '"]').css({
left: category.left,
top: category.top,
position: 'absolute'
});
}
}
}
masonry.on('layoutComplete', function() {
var saved = {};
$('.category-item').each(function() {
var $this = $(this);
saved[$this.attr('data-cid')] = {
left: $this.css('left'),
top: $this.css('top'),
};
});
localStorage.setItem('masonry:layout', JSON.stringify(saved));
});
}
}
function resize(fixed) {
fixed = parseInt(fixed, 10);
var container = fixed ? $('.container-fluid') : $('.container');
container.toggleClass('container-fluid', fixed !== 1).toggleClass('container', fixed === 1);
localStorage.setItem('fixed', fixed);
doMasonry();
}
$(window).on('action:ajaxify.end', function(ev, data) {
var url = data.url;
if(!/^admin\//.test(url) && !/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {
if (url === "") {
doMasonry();
$('.category-header .badge i').tooltip();
}
resize(fixed);
}
});
if (!$('.admin').length) {
setupResizer();
}
$(window).on('action:posts.loaded', function() {
doMasonry();
});
function setupResizer() {
var div = $('<div class="overlay-container"><div class="panel resizer pointer"><div class="panel-body"><i class="fa fa-arrows-h fa-2x"></i></div></div></div>');
div.css({
position:'fixed',
bottom: '20px',
right: '20px'
}).hide().appendTo(document.body);
$(window).on('mousemove', function(ev) {
if (ev.clientX > $(window).width() - 150 && ev.clientY > $(window).height() - 150) {
div.fadeIn();
} else {
div.stop(true, true).fadeOut();
}
});
div.find('.resizer').on('click', function() {
fixed = parseInt(fixed, 10) === 1 ? 0 : 1;
resize(fixed);
});
}
});
(function() {
// loading animation
var refreshTitle = app.refreshTitle,
loadingBar = $('.loading-bar');
$(window).on('action:ajaxify.start', function(data) {
loadingBar.fadeIn(0).removeClass('reset');
});
$(window).on('action:ajaxify.loadingTemplates', function() {
loadingBar.css('width', '90%');
});
app.refreshTitle = function(url) {
loadingBar.css('width', '100%');
setTimeout(function() {
loadingBar.fadeOut(250);
setTimeout(function() {
loadingBar.addClass('reset').css('width', '0%');
}, 250);
}, 750);
return refreshTitle(url);
};
}());
});