PluginProbe
WP Ultimate Post Grid / 2.7.0
WP Ultimate Post Grid v2.7.0
4.1.1 trunk 1.5 1.6 1.7 1.7.1 1.7.2 1.8 1.9 2.0 2.1 2.2 2.3 2.4.0 2.5.0 2.6.0 2.7.0 2.8.0 2.8.2 3.0.0 3.3.0 3.4.0 3.5.0 3.6.0 3.7.0 All 32 releases
wp-ultimate-post-grid / js / grid.js

grid.js in WP Ultimate Post Grid 2.7.0, at js/grid.js

739 lines 27.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 var WPUltimatePostGrid = WPUltimatePostGrid || {};
2
3 WPUltimatePostGrid.grids = {};
4
5 WPUltimatePostGrid.initGrid = function(container) {
6 var grid_id = container.data('grid');
7
8 var args = {
9 itemSelector: '.wpupg-item',
10 transitionDuration: wpupg_public.animationSpeed,
11 hiddenStyle: wpupg_public.animationHide,
12 visibleStyle: wpupg_public.animationShow
13 };
14
15 if(wpupg_public.rtl) {
16 args.isOriginLeft = false;
17 }
18
19 var layout_mode = container.data('layout-mode');
20 if(layout_mode) {
21 args.layoutMode = layout_mode;
22 }
23
24 if(layout_mode == 'masonry' && container.data('centered')) {
25 args.masonry = {
26 isFitWidth: true
27 };
28 }
29
30 container.isotopewpupg(args);
31
32 container.imagesLoaded( function() {
33 container.isotopewpupg('layout');
34 });
35
36 WPUltimatePostGrid.grids[grid_id] = {
37 args: args,
38 container: container,
39 centered: container.data('centered'),
40 data: window['wpupg_grid_' + container.data('grid-id')],
41 id: container.data('grid-id'),
42 pages: [0],
43 page: 0,
44 filter: '',
45 filters: {},
46 filter_text: false,
47 filter_text_search: '',
48 filter_text_posts: []
49 };
50
51 WPUltimatePostGrid.checkLinks(grid_id);
52 WPUltimatePostGrid.updatePosts(grid_id);
53
54 jQuery(container).on('hover', '.wpupg-item', function(e) {
55 var hovering = e.type == 'mouseenter';
56 WPUltimatePostGrid.hoverGridItem(jQuery(this), hovering);
57 });
58
59 // Check for empty grid
60 if(0 === container.find('.wpupg-item').length) {
61 WPUltimatePostGrid.checkEmpty(container);
62 } else {
63 container.on('arrangeComplete', function() {
64 WPUltimatePostGrid.checkEmpty(container);
65 });
66 }
67 };
68
69 WPUltimatePostGrid.hoverGridItem = function(grid_item, hovering) {
70 if(hovering) {
71 grid_item.addClass('wpupg-hovering');
72
73 grid_item.find('.wpupg-show-on-hover').each(function() {
74 var item = jQuery(this),
75 effect = item.data('hover-in'),
76 duration = parseInt(item.data('hover-in-duration'));
77
78 if(effect == 'fade') {
79 item.fadeIn(duration);
80 } else if(effect == 'slide') {
81 item.slideDown(duration);
82 } else {
83 item.show();
84 }
85 });
86
87 grid_item.find('.wpupg-hide-on-hover').each(function() {
88 var item = jQuery(this),
89 effect = item.data('hover-out'),
90 duration = parseInt(item.data('hover-out-duration'));
91
92 if(effect == 'fade') {
93 item.fadeOut(duration);
94 } else if(effect == 'slide') {
95 item.slideUp(duration);
96 } else {
97 item.hide();
98 }
99 });
100 } else {
101 grid_item.removeClass('wpupg-hovering');
102
103 grid_item.find('.wpupg-show-on-hover').each(function() {
104 var item = jQuery(this),
105 effect = item.data('hover-out'),
106 duration = parseInt(item.data('hover-out-duration'));
107
108 if(effect == 'fade') {
109 item.fadeOut(duration);
110 } else if(effect == 'slide') {
111 item.slideUp(duration);
112 } else {
113 item.hide();
114 }
115 });
116
117 grid_item.find('.wpupg-hide-on-hover').each(function() {
118 var item = jQuery(this),
119 effect = item.data('hover-in'),
120 duration = parseInt(item.data('hover-in-duration'));
121
122 if(effect == 'fade') {
123 item.fadeIn(duration);
124 } else if(effect == 'slide') {
125 item.slideDown(duration);
126 } else {
127 item.show();
128 }
129 });
130 }
131 };
132
133 WPUltimatePostGrid.updatePosts = function(grid_id) {
134 var grid = WPUltimatePostGrid.grids[grid_id];
135
136 var posts = [];
137
138 grid.container.find('.wpupg-item').each(function() {
139 var post_id = jQuery(this).data('id');
140 posts.push(post_id);
141 });
142
143 WPUltimatePostGrid.grids[grid_id].posts = posts;
144 };
145
146 WPUltimatePostGrid.filterGrid = function(grid_id) {
147 var grid = WPUltimatePostGrid.grids[grid_id];
148 var filters = [];
149
150 if(grid.filter_text) {
151 grid.filter = '';
152 var posts = [];
153
154 for(var i=0; i < grid.filter_text_posts.length; i++) {
155 posts.push('#wpupg-container-post-' + grid.filter_text_posts[i]);
156 posts.push('#wpurp-container-recipe-' + grid.filter_text_posts[i]);
157 }
158
159 if(posts.length == 0) {
160 posts.push('no-result');
161 }
162
163 WPUltimatePostGrid.getFilterString(grid_id, '', [posts], 0);
164 } else {
165 // Page filter
166 if(grid.pagination_type == 'pages') {
167 var page = grid.page || 0;
168 filters.push(['.wpupg-page-' + page]);
169 }
170
171 // Taxonomy filters
172 for(var taxonomy in grid.filters) {
173 if(grid.filters.hasOwnProperty(taxonomy)) {
174 var taxonomy_filters = grid.filters[taxonomy];
175
176 var match_one_filters = [];
177 var match_all_filter = '';
178 var filter = '';
179
180 if(taxonomy_filters) {
181 for(var i = 0; i < taxonomy_filters.length; i++) {
182 filter = '.wpupg-tax-' + taxonomy + '-' + taxonomy_filters[i];
183
184 if(grid.multiselect_type == 'match_one') {
185 match_one_filters.push(filter);
186 } else {
187 match_all_filter += filter;
188 }
189 }
190 }
191
192 if(grid.multiselect_type == 'match_one') {
193 if(match_one_filters.length > 0) filters.push(match_one_filters);
194 } else {
195 if(match_all_filter !== '') filters.push([match_all_filter]);
196 }
197 }
198 }
199
200 grid.filter = '';
201 WPUltimatePostGrid.getFilterString(grid_id, '', filters, 0);
202 if(grid.inverse) {
203 if(grid.pagination_type == 'pages') {
204 var page = grid.page || 0;
205 var filter_without_page = grid.filter.replace('.wpupg-page-' + page, '');
206
207 grid.filter = '.wpupg-page-' + page + ':not(' + filter_without_page + ')';
208 } else {
209 grid.filter = ':not(' + grid.filter + ')';
210 }
211 }
212 }
213
214 jQuery('#wpupg-grid-' + grid_id + '-empty').hide();
215 grid.container.isotopewpupg({ filter: grid.filter });
216 grid.container.trigger('wpupgFiltered');
217 WPUltimatePostGrid.updateDeeplink();
218 };
219
220 WPUltimatePostGrid.getFilterString = function(grid_id, s, attrs, k) {
221 if(k==attrs.length) {
222 if(WPUltimatePostGrid.grids[grid_id].filter !== '') s = ', ' + s;
223 WPUltimatePostGrid.grids[grid_id].filter += s;
224 } else {
225 for(var i=0; i<attrs[k].length;i++) {
226 WPUltimatePostGrid.getFilterString(grid_id, s+attrs[k][i], attrs, k+1);
227 }
228 }
229 };
230
231 WPUltimatePostGrid.checkEmpty = function(container) {
232 var grid_id = container.data('grid'),
233 filter = WPUltimatePostGrid.grids[grid_id].filter || '.wpupg-item',
234 visible_items = container.find(filter);
235
236 if(filter !== '' && visible_items.length == 0) {
237 jQuery('#wpupg-grid-' + grid_id + '-empty').slideDown(300);
238 }
239 };
240
241 WPUltimatePostGrid.updateDeeplink = function() {
242 var link = '';
243
244 for(var grid_id in WPUltimatePostGrid.grids) {
245 if(WPUltimatePostGrid.grids.hasOwnProperty(grid_id)) {
246 var grid = WPUltimatePostGrid.grids[grid_id];
247 var grid_link = '';
248
249
250 if(grid.filter_text) {
251 grid_link += '+s:' + grid.filter_text_search;
252 } else {
253 // Page filter
254 if(grid.page != 0) grid_link += '+p:' + (grid.page+1);
255
256 // Taxonomy filters
257 for(var taxonomy in grid.filters) {
258 if(grid.filters.hasOwnProperty(taxonomy)) {
259 var taxonomy_filter = grid.filters[taxonomy];
260
261 if(taxonomy_filter.length > 0) {
262 grid_link += '+' + taxonomy + ':' + taxonomy_filter.join(',');
263 }
264 }
265 }
266 }
267
268 if(grid_link != '') {
269 if(link != '') link += '#';
270 link += grid_id;
271 link += grid_link;
272 }
273 }
274 }
275
276 WPUltimatePostGrid.replaceDeeplink(link);
277 };
278
279 /**
280 * Source: http://stackoverflow.com/questions/1397329/how-to-remove-the-hash-from-window-location-with-javascript-without-page-refresh/5298684#5298684
281 */
282 WPUltimatePostGrid.replaceDeeplink = function(link) {
283 var scrollV, scrollH, loc = window.location;
284 if ("replaceState" in history) {
285 var hash = link == '' ? '' : '#' + link;
286 history.replaceState("", document.title, loc.pathname + hash + loc.search);
287 } else {
288 // Prevent scrolling by storing the page's current scroll offset
289 scrollV = document.documentElement.scrollTop || document.body.scrollTop;
290 scrollH = document.documentElement.scrollLeft || document.body.scrollLeft;
291
292 loc.hash = link;
293
294 // Restore the scroll offset, should be flicker free
295 document.documentElement.scrollTop = document.body.scrollTop = scrollV;
296 document.documentElement.scrollLeft = document.body.scrollLeft = scrollH;
297 }
298 };
299
300 WPUltimatePostGrid.preFilterGrid = function() {
301 var link = document.location.hash;
302 link = link.substr(1);
303
304 if(!link) {
305 var link = '';
306
307 for(var grid_id in WPUltimatePostGrid.grids) {
308 if(WPUltimatePostGrid.grids.hasOwnProperty(grid_id)) {
309 var grid = WPUltimatePostGrid.grids[grid_id];
310 var grid_link = '';
311
312 if(grid.filter_data) {
313 var pre_filter = grid.filter_data['pre_filter'];
314
315 // Taxonomy filters
316 for(var taxonomy in pre_filter) {
317 if(pre_filter.hasOwnProperty(taxonomy)) {
318 var taxonomy_filter = pre_filter[taxonomy];
319
320 if(taxonomy_filter.length > 0) {
321 grid_link += '+' + taxonomy + ':' + taxonomy_filter.join(',');
322 }
323 }
324 }
325 }
326
327 if(grid_link != '') {
328 if(link != '') link += '#';
329 link += grid_id;
330 link += grid_link;
331 }
332 }
333 }
334
335 WPUltimatePostGrid.replaceDeeplink(link);
336 }
337 };
338
339 WPUltimatePostGrid.restoreDeeplink = function() {
340 var link = document.location.hash;
341 link = link.substr(1);
342
343 if(link) {
344 // Make sure characters are not URL encoded
345 link = link.replace('%23', '#');
346 link = link.replace('%7C', '|');
347 link = link.replace('%2B', '+');
348 link = link.replace('%3A', ':');
349 link = link.replace('%2C', ',');
350
351 // Backwards compatibility
352 link = link.replace('|', '+');
353
354 var grids = link.split('#');
355
356 for(var i=0; i < grids.length; i++) {
357 var parts = grids[i].split('+');
358 var grid_id = parts[0];
359
360 for(var j=1; j < parts.length; j++) {
361 var filter = parts[j].split(':');
362
363 if(filter[0] == 'p') {
364 var page = parseInt(filter[1]) - 1;
365 WPUltimatePostGrid.updatePagination(jQuery('#wpupg-grid-' + grid_id + '-pagination'), page);
366 } else if(filter[0] == 's') {
367 WPUltimatePostGrid.updateFilter(jQuery('#wpupg-grid-' + grid_id + '-filter'), filter[0], 'text', filter[1]);
368 } else {
369 var terms = filter[1].split(',');
370 WPUltimatePostGrid.updateFilter(jQuery('#wpupg-grid-' + grid_id + '-filter'), filter[0], 'terms', terms);
371 }
372 }
373 }
374 }
375 };
376
377 WPUltimatePostGrid.checkLinks = function(grid_id) {
378 var grid = WPUltimatePostGrid.grids[grid_id];
379 var default_link_type = grid.container.data('link-type');
380 var link_target = grid.container.data('link-target');
381 var link_rel = link_target == 'post' ? '' : ' rel="lightbox"';
382
383 if(default_link_type != 'none') {
384 grid.container.find('.wpupg-item').each(function() {
385 var item = jQuery(this);
386
387 // Remove links from item
388 item.find('a:not(.wpupg-keep-link, .wpurp-recipe-favorite, .wpurp-recipe-add-to-shopping-list, .wpurp-recipe-add-to-meal-plan, .wpurp-recipe-print-button, .wpurp-recipe-grid-link)').each(function() {
389 var link = jQuery(this);
390 if(link.parents('.sharrre').length == 0) {
391 link.replaceWith(function() { return link.contents(); });
392 }
393 });
394
395 var link = item.data('custom-link') ? item.data('custom-link') : ( link_target == 'post' ? item.data('permalink') : item.data('image') );
396 var link_behaviour = item.data('custom-link-behaviour');
397
398 var link_type = link_behaviour == '_blank' || link_behaviour == '_self' ? link_behaviour : default_link_type;
399
400 // Add link around item
401 if (link_behaviour !== 'none' && link && item.parent('a').length == 0) {
402 item.wrap('<a href="' + link + '" target="' + link_type + '"' + link_rel + ' class="' + wpupg_public.link_class + '"></a>');
403 }
404 });
405 }
406 };
407
408 WPUltimatePostGrid.updateFilter = function(container, taxonomy, type, terms) {
409 var filter_type = container.data('type');
410 var func = 'updateFilter' + filter_type.charAt(0).toUpperCase() + filter_type.slice(1);
411 if(typeof WPUltimatePostGrid[func] == 'function') {
412 WPUltimatePostGrid[func](container, taxonomy, type, terms);
413 }
414 };
415
416 WPUltimatePostGrid.updateFilterIsotope = function(container, taxonomy, type, terms) {
417 for(var i = 0; i < terms.length; i++) {
418 container.find('.wpupg-filter-tag-' + terms[i]).click();
419 }
420 };
421
422 WPUltimatePostGrid.initFilterIsotope = function(container) {
423 var grid_id = container.data('grid');
424
425 WPUltimatePostGrid.grids[grid_id].multiselect = container.data('multiselect');
426 WPUltimatePostGrid.grids[grid_id].multiselect_type = container.data('multiselect-type');
427 WPUltimatePostGrid.grids[grid_id].inverse = container.data('inverse');
428
429 container.find('.wpupg-filter-isotope-term').on('click keydown', function(e) {
430 // On click, space or enter.
431 if(e.isTrigger || e.which === 1 || e.which === 13 || e.which === 32) {
432 var filter_item = jQuery(this);
433 var taxonomy = filter_item.data('taxonomy');
434 var filter_all = filter_item.data('filter') == undefined;
435 var filter_term = filter_item.data('filter');
436
437 var filters = [];
438
439 if(WPUltimatePostGrid.grids[grid_id].multiselect && !filter_all) {
440 // Make sure "All" is not selected
441 filter_item.parents('.wpupg-filter-isotope').find('.wpupg-filter-tag-').removeClass('active').trigger('checkActiveFilter');
442
443 filters = WPUltimatePostGrid.grids[grid_id].filters || [];
444
445 if(filters[taxonomy] == undefined) filters[taxonomy] = [];
446
447 var term_index = filters[taxonomy].indexOf(filter_term);
448 if(term_index == -1) {
449 // Term was not select before, add
450 filter_item.addClass('active').trigger('checkActiveFilter');
451 filters[taxonomy].push(filter_term);
452 } else {
453 // Term was already selected, remove
454 filter_item.removeClass('active').trigger('checkActiveFilter');
455 filters[taxonomy].splice(term_index, 1);
456
457 // Set "All" active if no terms left
458 var nbr_terms = 0;
459
460 for(var filter_taxonomy in filters) {
461 if(filters.hasOwnProperty(filter_taxonomy)) {
462 var filter_taxonomy_terms = filters[filter_taxonomy];
463
464 if(filter_taxonomy_terms) {
465 nbr_terms += filter_taxonomy_terms.length;
466 }
467 }
468 }
469
470 if(nbr_terms == 0) {
471 filter_item.parents('.wpupg-filter-isotope').find('.wpupg-filter-tag-').addClass('active').trigger('checkActiveFilter');
472 }
473 }
474 } else {
475 filter_item.parents('.wpupg-filter-isotope').find('.wpupg-filter-isotope-term').removeClass('active').trigger('checkActiveFilter');
476 filter_item.addClass('active').trigger('checkActiveFilter');
477
478 if(!filter_all) {
479 filters[taxonomy] = [filter_term];
480 }
481 }
482
483 WPUltimatePostGrid.grids[grid_id].filters = filters;
484 WPUltimatePostGrid.filterGrid(grid_id);
485 }
486 });
487
488 var filter_type = container.data('filter-type');
489 var filter_items = container.find('.wpupg-filter-item');
490
491 if(filter_type == 'isotope' || filter_type == 'text_isotope') {
492 var margin = container.data('margin-vertical') + 'px ' + container.data('margin-horizontal') + 'px';
493 var padding = container.data('padding-vertical') + 'px ' + container.data('padding-horizontal') + 'px';
494 var border = container.data('border-width') + 'px solid ' + container.data('border-color');
495 var background_color = container.data('background-color');
496 var text_color = container.data('text-color');
497
498 var active_border = container.data('border-width') + 'px solid ' + container.data('active-border-color');
499 var active_background_color = container.data('active-background-color');
500 var active_text_color = container.data('active-text-color');
501
502 var hover_border = container.data('border-width') + 'px solid ' + container.data('hover-border-color');
503 var hover_background_color = container.data('hover-background-color');
504 var hover_text_color = container.data('hover-text-color');
505
506 filter_items.each(function() {
507 var filter_item = jQuery(this);
508
509 filter_item
510 .css('margin', margin)
511 .css('padding', padding)
512 .css('border', border)
513 .css('background-color', background_color)
514 .css('color', text_color)
515 .hover(function() {
516 if(!filter_item.hasClass('active')) {
517 filter_item
518 .css('border', hover_border)
519 .css('background-color', hover_background_color)
520 .css('color', hover_text_color);
521 }
522 }, function() {
523 if(!filter_item.hasClass('active')) {
524 filter_item
525 .css('border', border)
526 .css('background-color', background_color)
527 .css('color', text_color);
528 }
529 })
530 .on('checkActiveFilter', function() {
531 if(filter_item.hasClass('active')) {
532 filter_item
533 .css('border', active_border)
534 .css('background-color', active_background_color)
535 .css('color', active_text_color);
536 } else {
537 filter_item
538 .css('border', border)
539 .css('background-color', background_color)
540 .css('color', text_color);
541 }
542 }).trigger('checkActiveFilter');
543 });
544 }
545 };
546
547 WPUltimatePostGrid.updatePagination = function(container, page) {
548 var type = container.data('type');
549
550 if(type) {
551 var func = 'updatePagination' + type.charAt(0).toUpperCase() + type.slice(1);
552 if(typeof WPUltimatePostGrid[func] == 'function') {
553 WPUltimatePostGrid[func](container, page);
554 }
555 }
556 };
557
558 WPUltimatePostGrid.updatePaginationPages = function(container, page) {
559 container.find('.wpupg-page-' + page).click();
560 };
561
562 WPUltimatePostGrid.initPaginationPages = function(container) {
563 var grid_id = container.data('grid');
564
565 container.find('.wpupg-pagination-term').click(function() {
566 var pagination_item = jQuery(this);
567 pagination_item.siblings('.wpupg-pagination-term').removeClass('active').trigger('checkActiveFilter');
568
569 var page = parseInt(pagination_item.addClass('active').trigger('checkActiveFilter').data('page'));
570
571 WPUltimatePostGrid.scrollTo(WPUltimatePostGrid.grids[grid_id].container);
572
573 if(WPUltimatePostGrid.grids[grid_id].pages.indexOf(page) !== -1) {
574 WPUltimatePostGrid.grids[grid_id].page = page;
575 WPUltimatePostGrid.filterGrid(grid_id);
576 } else {
577 // Get new page via AJAX
578 var data = {
579 action: 'wpupg_get_page',
580 security: wpupg_public.nonce,
581 grid: grid_id,
582 page: page
583 };
584
585 pagination_item.addClass('wpupg-spinner');
586 pagination_item.css('color', WPUltimatePostGrid.grids[grid_id].pagination_style.active_background_color);
587
588 // Get recipes through AJAX
589 jQuery.post(wpupg_public.ajax_url, data, function(html) {
590 var posts = jQuery(html).toArray();
591
592 WPUltimatePostGrid.grids[grid_id].page = page;
593 WPUltimatePostGrid.insertPosts(grid_id, posts);
594
595 pagination_item.removeClass('wpupg-spinner');
596 pagination_item.css('color', WPUltimatePostGrid.grids[grid_id].pagination_style.active_text_color);
597
598 WPUltimatePostGrid.grids[grid_id].pages.push(page);
599 WPUltimatePostGrid.updatePosts(grid_id);
600 });
601 }
602 });
603
604 var pagination_items = container.find('.wpupg-pagination-term');
605
606 var margin = container.data('margin-vertical') + 'px ' + container.data('margin-horizontal') + 'px';
607 var padding = container.data('padding-vertical') + 'px ' + container.data('padding-horizontal') + 'px';
608 var border = container.data('border-width') + 'px solid ' + container.data('border-color');
609 var background_color = container.data('background-color');
610 var text_color = container.data('text-color');
611
612 var active_border = container.data('border-width') + 'px solid ' + container.data('active-border-color');
613 var active_background_color = container.data('active-background-color');
614 var active_text_color = container.data('active-text-color');
615
616 var hover_border = container.data('border-width') + 'px solid ' + container.data('hover-border-color');
617 var hover_background_color = container.data('hover-background-color');
618 var hover_text_color = container.data('hover-text-color');
619
620 WPUltimatePostGrid.grids[grid_id].pagination_style = {
621 margin: margin,
622 padding: padding,
623 border: border,
624 background_color: background_color,
625 text_color: text_color,
626 active_border: active_border,
627 active_background_color: active_background_color,
628 active_text_color: active_text_color,
629 hover_border: hover_border,
630 hover_background_color: hover_background_color,
631 hover_text_color: hover_text_color
632 }
633
634 pagination_items.each(function() {
635 var pagination_item = jQuery(this);
636
637 pagination_item
638 .css('margin', margin)
639 .css('padding', padding)
640 .css('border', border)
641 .css('background-color', background_color)
642 .css('color', text_color)
643 .hover(function() {
644 if(!pagination_item.hasClass('active')) {
645 pagination_item
646 .css('border', hover_border)
647 .css('background-color', hover_background_color)
648 .css('color', hover_text_color);
649 }
650 }, function() {
651 if(!pagination_item.hasClass('active')) {
652 pagination_item
653 .css('border', border)
654 .css('background-color', background_color)
655 .css('color', text_color);
656 }
657 })
658 .on('checkActiveFilter', function() {
659 if(pagination_item.hasClass('active')) {
660 pagination_item
661 .css('border', active_border)
662 .css('background-color', active_background_color)
663 .css('color', active_text_color);
664 } else {
665 pagination_item
666 .css('border', border)
667 .css('background-color', background_color)
668 .css('color', text_color);
669 }
670 }).trigger('checkActiveFilter');
671 });
672 };
673
674 WPUltimatePostGrid.insertPosts = function(grid_id, posts) {
675 var scrollV = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0,
676 scrollH = document.documentElement.scrollLeft || document.body.scrollLeft;
677
678 WPUltimatePostGrid.grids[grid_id].container.isotopewpupg('destroy');
679
680 WPUltimatePostGrid.grids[grid_id].container.append(posts);
681 WPUltimatePostGrid.grids[grid_id].container.isotopewpupg(WPUltimatePostGrid.grids[grid_id].args);
682
683 // Restore the scroll offset, should be flicker free
684 jQuery(window).scrollTop(scrollV);
685 document.documentElement.scrollLeft = document.body.scrollLeft = scrollH;
686
687 WPUltimatePostGrid.updatePosts(grid_id);
688 WPUltimatePostGrid.checkLinks(grid_id);
689 WPUltimatePostGrid.filterGrid(grid_id);
690
691 WPUltimatePostGrid.grids[grid_id].container.imagesLoaded( function() {
692 WPUltimatePostGrid.grids[grid_id].container.isotopewpupg('layout');
693 WPUltimatePostGrid.grids[grid_id].loading = false;
694 });
695 };
696
697 WPUltimatePostGrid.scrollTo = function(target) {
698 var scroll_to = target.offset().top - 50;
699 scroll_to = scroll_to < 0 ? 0 : scroll_to;
700
701 jQuery('html,body').animate({
702 scrollTop: scroll_to
703 }, 500);
704 };
705
706 jQuery(document).ready(function($) {
707 $('.wpupg-grid').each(function() {
708 WPUltimatePostGrid.initGrid($(this));
709 });
710
711 $('.wpupg-filter').each(function() {
712 var container = $(this);
713 var grid_id = container.data('grid');
714 var type = container.data('type');
715
716 WPUltimatePostGrid.grids[grid_id].filter_type = type;
717 WPUltimatePostGrid.grids[grid_id].filter_data = window['wpupg_filter_' + WPUltimatePostGrid.grids[grid_id].id];
718
719 var func = 'initFilter' + type.charAt(0).toUpperCase() + type.slice(1);
720 if(typeof WPUltimatePostGrid[func] == 'function') {
721 WPUltimatePostGrid[func](container);
722 }
723 });
724
725 $('.wpupg-pagination').each(function() {
726 var container = $(this);
727 var grid_id = container.data('grid');
728 var type = container.data('type');
729
730 WPUltimatePostGrid.grids[grid_id].pagination_type = type;
731
732 var func = 'initPagination' + type.charAt(0).toUpperCase() + type.slice(1);
733 if(typeof WPUltimatePostGrid[func] == 'function') {
734 WPUltimatePostGrid[func](container);
735 }
736 });
737 WPUltimatePostGrid.preFilterGrid();
738 WPUltimatePostGrid.restoreDeeplink();
739 });