/* #AJAX ================================================== */ // jQuery(document).ready(function($) { // 4 Alla & Danil: we need to unify all ajax and masonry and other stuff in this manner: function loadingEffects() { var $isotope = $(".dt-isotope"), $grid = $(".iso-grid .wf-cell:not(.shown), .dt-css-grid .wf-cell:not(.shown)"); if ($grid.exists()) { precessEffects($grid); } if (!$isotope.exists()) { var $isoFallback = $(".iso-item:not(.shown)"); if (!$isoFallback.exists()) return; precessEffects($isoFallback); } else { var t = 0; $isotope.each(function() { t++; var $atoms = $(this).find(".wf-cell"); if (!$atoms.exists()) return; precessEffects($atoms, function(){}); }); }; }; function precessEffects($atoms, callback) { var k = 0; // $.fn.isInViewport = function() { // var elementTop = $(this).offset().top; // var elementBottom = elementTop + $(this).outerHeight(); // var viewportTop = $(window).scrollTop(); // var viewportBottom = viewportTop + $(window).height(); // return elementBottom > viewportTop && elementTop < viewportBottom; // }; $atoms.each(function () { var $this = $(this); if($(".mobile-true").length > 0 || $this.parents(".loading-effect-none").length > 0){ if (!$this.hasClass("shown") && !$this.hasClass("animation-triggered")) { $this.addClass("animation-triggered"); setTimeout(function () { if ($this.hasClass("animation-triggered")) { $this.removeClass("animation-triggered").addClass("shown"); }; }, 200); }; }else{ //if(typeof inView != 'undefined' && $.isFunction(inView)){ if (!$this.hasClass("shown") && !$this.hasClass("animation-triggered") && dtGlobals.isInViewport($this) && !$this.hasClass("hidden") ) { $this.addClass("animation-triggered"); k++; setTimeout(function () { if ($this.hasClass("animation-triggered")) { $this.removeClass("animation-triggered").addClass("shown"); }; }, 100 * k); }; //} } if (typeof callback == "function") { callback.call(this); } }); }; $.fn.resetEffects = function(container) { return this.each(function() { var $this = $(this); $this.find(".iso-item.shown, .wf-cell.shown").removeClass("start-animation").removeClass("animation-triggered").removeClass("shown"); }) }; var dtAjaxing = { xhr: false, settings: false, launch: function( settings ) { var ajaxObj = this; if ( settings ) { this.settings = settings; } if ( this.xhr ) { this.xhr.abort(); } var action = 'presscore_template_ajax'; this.xhr = $.post( settings.ajaxurl, { action : action, postID : settings.postID, paged : settings.paged, targetPage : settings.targetPage, term : settings.term, orderby : settings.orderBy, order : settings.order, nonce : settings.nonce, visibleItems : settings.visibleItems, contentType : settings.contentType, pageData : settings.pageData, sender : settings.sender }, function( responce ) { if ( responce.success ) { var $responceItems = jQuery(responce.html), $isoContainer = settings.targetContainer, contWidth = parseInt($isoContainer.attr("data-width")), contMaxWidth = parseInt($isoContainer.attr("data-max-width")), contPadding = parseInt($isoContainer.attr("data-padding")); isIsotope = 'grid' == settings.layout || 'masonry' == settings.layout, itemsToDeleteLength = 0, trashItems = new Array(), sortBy = responce.orderby.replace('title', 'name'), sortAscending = ('asc' == responce.order.toString()); if ( responce.newNonce ) { dtLocal.ajaxNonce = responce.newNonce; } if ( typeof responce.itemsToDelete != 'undefined' ) { itemsToDeleteLength = responce.itemsToDelete.length; } // if not mobile isotope with spare parts if ( isIsotope && itemsToDeleteLength > 0 ) { for( var i = 0; i < responce.itemsToDelete.length; i++ ) { trashItems.push('.wf-cell[data-post-id="' + responce.itemsToDelete[i] + '"]'); } $isoContainer.isotope('remove', $isoContainer.find(trashItems.join(','))); // if mobile or not isotope and sender is filter or paginator } else if ( !isIsotope && ('filter' == settings.sender || 'paginator' == settings.sender) ) { $isoContainer.find('.wf-cell, article').remove(); } if ( $responceItems.length > 0 ) { // append new items $isoContainer.append($responceItems); dtGlobals.ajaxContainerItems = $isoContainer.find('div.wf-cell, .project-even, .project-odd').not('.animation-triggered'); // for isotope - insert new elements if ( isIsotope ) { $(".preload-me", $isoContainer).heightHack(); $(".slider-masonry", $isoContainer).initSlider(); $(".slider-masonry", $isoContainer).css("visibility", "visible"); $isoContainer.isotope('addItems', $responceItems); if ( 'media' != settings.contentType ) { $isoContainer.isotope({ sortBy : sortBy, sortAscending : sortAscending }); } else { $isoContainer.isotope({ sortBy: 'original-order' }); } $isoContainer.isotope("layout"); ajaxObj.init(); $isoContainer.layzrInitialisation(); $isoContainer.IsoLayzrInitialisation(); // all other cases - append new elements } else { $(".slider-masonry", $isoContainer).initSlider(); $("ul.photoSlider:not(.slider-masonry)").each(function(){ $(this).postTypeScroller(); }); $("ul.photoSlider").css("visibility", "visible"); if ( 'jgrid' == settings.layout ) { $isoContainer.collagePlus(dtGlobals.jGrid); } ajaxObj.init(); $isoContainer.layzrInitialisation(); $isoContainer.IsoLayzrInitialisation(".mobile-true"); } if ( typeof settings.afterSuccessInit != 'undefined' ) { settings.afterSuccessInit( responce ); } $window.trigger('dt.ajax.content.appended'); } else if ( isIsotope ) { // if no responce items - reorder isotope $isoContainer.isotope({ sortBy : sortBy, sortAscending : sortAscending }); } } if ( typeof settings.afterResponce != 'undefined' ) { settings.afterResponce( responce ); } loadingEffects(); } ); }, init : function() { switch ( this.settings.contentType ) { case 'portfolio' : this.initPortfolio(); break; case 'albums' : this.initAlbums(); break; case 'media' : this.initMedia(); break; case 'blog': this.basicInit(); break; case 'testimonials': this.basicInit(); break; } }, initPortfolio : function() { this.basicInit(); }, initAlbums : function() { this.basicInit(); }, initMedia : function() { this.basicInit(); }, basicInit : function() { var $container = this.settings.targetContainer; $(".dt-pswp-item, .dt-gallery-container a", $container).addPhotoswipeWrap(); $('.dt-gallery-container', $container).initPhotoswipe(); $('.photoswipe-wrapper', $container).initPhotoswipe(); $container.photoswipeGallery('.dt-gallery-container.wf-container'); $(".rollover, .rollover-video, .post-rollover, .rollover-project .show-content", $container).addRollover(); if ( $.isFunction($.fn.hoverdir) ) { $('.mobile-false .hover-grid .rollover-project').each( function() { $(this).hoverdir(); } ); $('.mobile-false .hover-grid-reverse .rollover-project ').each( function() { $(this).hoverdir({ inverse : true }); } ); } $(".mobile-true .rollover-project a.link.show-content, .hover-style-one article:not(.description-off) .rollover-project > a, .hover-style-two article:not(.description-off) .rollover-project > a, .hover-style-three article:not(.description-off) .rollover-project > a").on("click", function(e){ e.preventDefault(); }); $('.dt-trigger-first-pswp', $container).not('.pspw-ready').on('click', function(){ var $this = $(this), $container = $this.parents('article.post'); if ( $container.length > 0 ) { var $target = $container.find('a.dt-pswp-item'); if ( $target.length > 0 ) { $target.first().trigger('click'); } } return false; }).addClass('mfp-ready'); if($(".small-portfolio-icons").length > 0){ $('.links-container a').each(function(){ var $this = $(this); $this.addClass("waves-effect"); }); Waves.displayEffect(); } $(".mobile-true .rollover-project").touchNewHover(); if ( $.isFunction($.fn.triggerHoverClick) ) { $(".mobile-false .rollover-project:not(.rollover-active) .rollover-content, .buttons-on-img:not(.rollover-active) .rollover-content").triggerHoverClick(); } if ( $.isFunction($.fn.triggerHoverClick) ) { $(".mobile-false .rollover-project.forward-post").triggerHoverClick(); } if ( $.isFunction($.fn.triggerHoverClick) ) { $(".mobile-false .rollover-project.rollover-active, .mobile-false .buttons-on-img.rollover-active").followCurentLink(); } if ( $.isFunction($.fn.triggerAlbumsClick) ) { $(".mobile-false .albums .rollover-project, .mobile-false .albums .buttons-on-img, .mobile-false .archive .type-dt_gallery .buttons-on-img").triggerAlbumsClick(); } if ( $.isFunction($.fn.triggerAlbumsTouch) ) { $(".mobile-true .albums .rollover-project, .mobile-true .albums .buttons-on-img, .mobile-true .archive .type-dt_gallery .buttons-on-img").triggerAlbumsTouch(); } if ( $.isFunction($.fn.triggerPostClick) ) { $(".mobile-false .content-rollover-layout-list .post, .mobile-false .gradient-overlay-layout-list .post").triggerPostClick(); } if ( $.isFunction($.fn.touchforwardToPost) ) { $(".mobile-true .rollover-project.forward-post").touchforwardToPost(); } if ( $.isFunction($.fn.touchHoverImage) ) { $(".mobile-true .buttons-on-img").touchHoverImage(); } $(".hover-scale .rollover-project").scaleInHover(); if ( $.isFunction($.fn.hoverLinks) ) { $(".links-container a").hoverLinks(); } if ( $.isFunction($.fn.addIconToLinks) ) { $(".project-links-container a").addIconToLinks(); } } }; // get ajax data function dtGetAjaxData( $parentContainer ) { var $filtersContainer = $parentContainer.find('.filter.with-ajax').first(), $itemsContainer = $parentContainer.find('.wf-container.with-ajax, .articles-list.with-ajax').first(), $currentCategory = $filtersContainer.find('.filter-categories a.act'), $currentOrderBy = $filtersContainer.find('.filter-by a.act'), $currentOrder = $filtersContainer.find('.filter-sorting a.act'), paged = parseInt($itemsContainer.attr('data-cur-page')), nonce = null, visibleItems = new Array(), term = ( $currentCategory.length > 0 ) ? $currentCategory.attr('data-filter').replace('.category-', '').replace('*', '') : ''; if ( '0' == term ) { term = 'none'; } if ( $itemsContainer.hasClass('dt-isotope') ) { $('.wf-cell', $itemsContainer).each( function(){ visibleItems.push( $(this).attr('data-post-id') ); }); } return { visibleItems : visibleItems, postID : dtLocal.postID, paged : paged, term : term, orderBy : ( $currentOrderBy.length > 0 ) ? $currentOrderBy.attr('data-by') : '', order : ( $currentOrder.length > 0 ) ? $currentOrder.attr('data-sort') : '', ajaxurl : dtLocal.ajaxurl, nonce : dtLocal.ajaxNonce, pageData : dtLocal.pageData, layout : dtLocal.pageData.layout, targetContainer : $itemsContainer, isPhone : dtGlobals.isPhone } } // paginator $('#content').on('click', '.paginator.with-ajax a', function(e){ e.preventDefault(); if ( $(e.target).hasClass('dots') || $(e.target).hasClass('disabled') ) { return; } var $this = $(this), $paginatorContainer = $this.closest('.paginator'), $parentContainer = $paginatorContainer.parent(), $itemsContainer = $parentContainer.find('.wf-container.with-ajax, .articles-list.with-ajax').first(), $loadMoreButton = $(".button-load-more"), loadMoreButtonCaption = $loadMoreButton.find('.button-caption').text(), paginatorType = $paginatorContainer.hasClass('paginator-more-button') ? 'more' : 'paginator', isMore = ('more' == paginatorType), ajaxData = dtGetAjaxData($parentContainer), targetPage = isMore ? ajaxData.paged + 1 : $this.attr('data-page-num'), isoPreloaderExists = dtGlobals.isoPreloader; $loadMoreButton.addClass("animate-load").find('.button-caption').text(dtLocal.moreButtonText.loading); // show preloader if ( isoPreloaderExists && !$(".paginator-more-button").length ) { dtGlobals.isoPreloader.fadeIn(50); } if ( !isMore ) { var $scrollTo = $parentContainer.find('.filter.with-ajax').first(), paddingTop = 44; if (!$scrollTo.exists()) { $scrollTo = $itemsContainer; paddingTop = 50; } // scroll to top $("html, body").animate({ scrollTop: $scrollTo.offset().top - $("#phantom").height() - paddingTop }, 400); }else{ $("html, body").scrollTop($window.scrollTop() + 1); } // launch ajax dtAjaxing.launch($.extend({}, ajaxData, { contentType : ajaxData.pageData.template, targetPage : targetPage, sender : paginatorType, visibleItems : isMore ? new Array() : ajaxData.visibleItems, afterResponce : function( responce ) { // we have paginator if ( $paginatorContainer.length > 0 ) { if ( responce.paginationHtml ) { // update paginator with responce content $paginatorContainer.html($(responce.paginationHtml).html()).show(); } else { if ( false && isMore ) { $paginatorContainer.html('<span class="loading-ready">' + dtLocal.moreButtonAllLoadedText + '</span>'); } else { // clear paginator and hide it $paginatorContainer.html('').hide(); } } setTimeout (function(){ $(".button-load-more").removeClass("animate-load").find('.button-caption').text(loadMoreButtonCaption); }, 200); } else if ( responce.paginationHtml ) { // if there are no paginator on page but ajax responce have it $itemsContainer.parent().append($(responce.paginationHtml)); } // add dots onclick event handler $paginatorContainer.find('.dots').on('click', function() { $paginatorContainer.find('div:hidden').show().find('a').unwrap(); $(this).remove(); }); // update current page field $itemsContainer.attr('data-cur-page', responce.currentPage); // hide preloader dtGlobals.isoPreloader.stop().fadeOut(300); // update load more button dtGlobals.loadMoreButton = $(".button-load-more"); } })); }); // filter $('.filter.with-ajax .filter-categories a, .filter.with-ajax .filter-extras a').on('click', function(e){ e.preventDefault(); var $this = $(this), $filterContainer = $this.closest('.filter'), $parentContainer = $filterContainer.parent(), $itemsContainer = $parentContainer.find('.wf-container.with-ajax').first(), $paginatorContainer = $parentContainer.find('.paginator').first(), ajaxData = dtGetAjaxData($parentContainer), isoPreloaderExists = dtGlobals.isoPreloader; $itemsContainer.resetEffects(); // show preloader if ( isoPreloaderExists ) { dtGlobals.isoPreloader.fadeIn(50); } // launch ajax dtAjaxing.launch($.extend({}, ajaxData, { contentType : ajaxData.pageData.template, targetPage : 1, paged : 1, sender : 'filter', afterResponce : function( responce ) { // we have paginator if ( $paginatorContainer.length > 0 ) { if ( responce.paginationHtml ) { // update paginator with responce content $paginatorContainer.html($(responce.paginationHtml).html()).show(); } else { // clear paginator and hide it $paginatorContainer.html('').hide(); } } else if ( responce.paginationHtml ) { // if there are no paginator on page but ajax responce have it $itemsContainer.parent().append($(responce.paginationHtml)); } // add dots onclick event handler $paginatorContainer.find('.dots').on('click', function() { $paginatorContainer.find('div:hidden').show().find('a').unwrap(); $(this).remove(); }); // update current page field $itemsContainer.attr('data-cur-page', responce.currentPage); // hide preloader dtGlobals.isoPreloader.stop().fadeOut(300); // update load more button dtGlobals.loadMoreButton = $(".button-load-more"); } })); }); function lazyLoading() { if ( dtGlobals.loadMoreButton && dtGlobals.loadMoreButton.exists() ) { var buttonOffset = dtGlobals.loadMoreButton.offset(); if ( buttonOffset && $window.scrollTop() > (buttonOffset.top - $window.height()) / 2 && !dtGlobals.loadMoreButton.hasClass('animate-load') ) { dtGlobals.loadMoreButton.trigger('click'); } } } // lazy loading if ( typeof dtLocal.themeSettings.lazyLoading != 'undefined' && dtLocal.themeSettings.lazyLoading ) { dtGlobals.loadMoreButton = $(".button-load-more"); var timer = null; $window.on('scroll', function () { lazyLoading(); }); lazyLoading(); } var waitForFinalEvent = (function () { var timers = {}; return function (callback, ms, uniqueId) { if (!uniqueId) { uniqueId = "Don't call this twice without a uniqueId"; } if (timers[uniqueId]) { clearTimeout (timers[uniqueId]); } timers[uniqueId] = setTimeout(callback, ms); }; })(); // Usage $window.resize(function () { /*Animate iso-items on resize*/ $(".iso-item, .iso-grid .wf-cell").addClass("animate-position"); waitForFinalEvent(function(){ $(".iso-item, .iso-grid .wf-cell").removeClass("animate-position"); }, 2500, ""); }); var $isotope = $(".dt-isotope"), $isoFallback = $(".iso-item:not(.shown):not(.is-visible)"), $grid = $(".iso-grid .wf-cell:not(.shown):not(.is-visible), .dt-css-grid .wf-cell:not(.shown):not(.is-visible)"); if ($isotope.exists() || $isoFallback.exists() || $grid.exists()) { setTimeout(function () { loadingEffects(); }, 100); $window.on("scroll", function() { loadingEffects(); }); };