1jQuery(function($){ 2 var $wrap = $('#gt-posts'); 3 var $more = $('#gt-more'); 4 var $spin = $('#gt-loading'); 5 6 if (!$wrap.length) return; 7 8 var state = { 9 cat: 'all', 10 page: 1, 11 ppp: (window.cikisiGT && cikisiGT.ppp) ? cikisiGT.ppp : 9, 12 type: (window.cikisiGT && cikisiGT.post_type) ? cikisiGT.post_type : 'guide-and-tools' 13 }; 14 15 function showSpinner(on){ if ($spin.length) on ? $spin.show() : $spin.hide(); } 16 function renderMore(hasMore){ 17 if (!hasMore) return $more.empty(); 18 var label = (window.cikisiGT && cikisiGT.i18n && cikisiGT.i18n.load_more) ? cikisiGT.i18n.load_more : 'Load more'; 19 $more.html( 20 '<button class="btn" id="gt-load-more" type="button">' + label + '</button>' 21 ); 22 } 23 24 $more.on('click', '#gt-load-more', function(e){ 25 e.preventDefault(); 26 fetchPosts(state.cat, state.page + 1, true); 27 }); 28 29 function setActiveTab(catSlug){ 30 $('.tab__links-item').removeClass('_active'); 31 var $m = $('.tab__links-item').filter(function(){ return $(this).data('cat') === catSlug; }); 32 ($m.length ? $m : $('.tab__links-item[data-cat="all"]')).addClass('_active'); 33 } 34 35 function fetchPosts(cat, page, append){ 36 showSpinner(true); 37 if (!append) { $wrap.empty(); renderMore(false); } 38 39 $.ajax({ 40 url: cikisiGT.ajaxurl, 41 type: 'POST', 42 dataType: 'json', 43 data: { 44 action: 'cikisi_gt_filter', 45 nonce: cikisiGT.nonce, 46 post_type: state.type, 47 category: cat, 48 page: page, 49 ppp: state.ppp 50 } 51 }) 52 .done(function(res){ 53 if (!res || !res.success || !res.data) { 54 if (!append) $wrap.html('<p>' + (cikisiGT.i18n.no_posts || 'No posts found.') + '</p>'); 55 renderMore(false); 56 return; 57 } 58 59 if (append) { 60 var $incoming = $(res.data.html); 61 var $inInner = $incoming.find('.blog__container-inner').length ? $incoming.find('.blog__container-inner') : $incoming; 62 var $currInner = $wrap.find('.blog__container-inner').length ? $wrap.find('.blog__container-inner') : $wrap; 63 $currInner.append($inInner.html()); 64 } else { 65 $wrap.html(res.data.html); 66 } 67 68 state.cat = cat; 69 state.page = page; 70 renderMore(!!res.data.has_more); 71 }) 72 .fail(function(){ 73 if (!append) $wrap.html('<p>' + (cikisiGT.i18n.error || 'There was an error loading posts.') + '</p>'); 74 renderMore(false); 75 }) 76 .always(function(){ showSpinner(false); }); 77 } 78 79 // Tabs click 80 $('.tab__links').on('click', '.tab__links-item', function(e){ 81 e.preventDefault(); 82 var cat = $(this).data('cat') || 'all'; 83 setActiveTab(cat); 84 fetchPosts(cat, 1, false); 85 }); 86 87 // Initial load 88 (function init(){ 89 setActiveTab('all'); 90 fetchPosts('all', 1, false); 91 })(); 92});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.