PluginProbe
WP Ultimate Post Grid / 2.0
WP Ultimate Post Grid v2.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
← All changes | js/grid.js +62 -177 2.4.02.0 View file →
@@ -26,12 +26,12 @@
26 26 isFitWidth: true
27 27 };
28 28 }
29 29
30 - container.isotopewpupg(args);
30 + container.isotope(args);
31 31
32 32 container.imagesLoaded( function() {
33 - container.isotopewpupg('layout');
33 + container.isotope('layout');
34 34 });
35 35
36 36 WPUltimatePostGrid.grids[grid_id] = {
37 37 args: args,
@@ -40,13 +40,9 @@
40 40 data: window['wpupg_grid_' + container.data('grid-id')],
41 41 id: container.data('grid-id'),
42 42 pages: [0],
43 43 page: 0,
44 - filter: '',
45 - filters: {},
46 - filter_text: false,
47 - filter_text_search: '',
48 - filter_text_posts: []
44 + filters: {}
49 45 };
50 46
51 47 WPUltimatePostGrid.checkLinks(grid_id);
52 48 WPUltimatePostGrid.updatePosts(grid_id);
@@ -54,13 +50,8 @@
54 50 jQuery(container).on('hover', '.wpupg-item', function(e) {
55 51 var hovering = e.type == 'mouseenter';
56 52 WPUltimatePostGrid.hoverGridItem(jQuery(this), hovering);
57 53 });
58 -
59 - // Check for empty grid
60 - container.on('arrangeComplete', function() {
61 - WPUltimatePostGrid.checkEmpty(container);
62 - });
63 54 };
64 55
65 56 WPUltimatePostGrid.hoverGridItem = function(grid_item, hovering) {
66 57 if(hovering) {
@@ -142,74 +133,57 @@
142 133 WPUltimatePostGrid.filterGrid = function(grid_id) {
143 134 var grid = WPUltimatePostGrid.grids[grid_id];
144 135 var filters = [];
145 136
146 - if(grid.filter_text) {
147 - grid.filter = '';
148 - var posts = [];
137 + // Page filter
138 + if(grid.pagination_type == 'pages') {
139 + var page = grid.page || 0;
140 + filters.push(['.wpupg-page-' + page]);
141 + }
149 142
150 - for(var i=0; i < grid.filter_text_posts.length; i++) {
151 - posts.push('#wpupg-container-post-' + grid.filter_text_posts[i]);
152 - posts.push('#wpurp-container-recipe-' + grid.filter_text_posts[i]);
153 - }
143 + // Taxonomy filters
144 + for(var taxonomy in grid.filters) {
145 + if(grid.filters.hasOwnProperty(taxonomy)) {
146 + var taxonomy_filters = grid.filters[taxonomy];
154 147
155 - if(posts.length == 0) {
156 - posts.push('no-result');
157 - }
148 + var match_one_filters = [];
149 + var match_all_filter = '';
150 + var filter = '';
158 151
159 - WPUltimatePostGrid.getFilterString(grid_id, '', [posts], 0);
160 - } else {
161 - // Page filter
162 - if(grid.pagination_type == 'pages') {
163 - var page = grid.page || 0;
164 - filters.push(['.wpupg-page-' + page]);
165 - }
152 + if(taxonomy_filters) {
153 + for(var i = 0; i < taxonomy_filters.length; i++) {
154 + filter = '.wpupg-tax-' + taxonomy + '-' + taxonomy_filters[i];
166 155
167 - // Taxonomy filters
168 - for(var taxonomy in grid.filters) {
169 - if(grid.filters.hasOwnProperty(taxonomy)) {
170 - var taxonomy_filters = grid.filters[taxonomy];
171 -
172 - var match_one_filters = [];
173 - var match_all_filter = '';
174 - var filter = '';
175 -
176 - if(taxonomy_filters) {
177 - for(var i = 0; i < taxonomy_filters.length; i++) {
178 - filter = '.wpupg-tax-' + taxonomy + '-' + taxonomy_filters[i];
179 -
180 - if(grid.multiselect_type == 'match_one') {
181 - match_one_filters.push(filter);
182 - } else {
183 - match_all_filter += filter;
184 - }
156 + if(grid.multiselect_type == 'match_one') {
157 + match_one_filters.push(filter);
158 + } else {
159 + match_all_filter += filter;
185 160 }
186 161 }
162 + }
187 163
188 - if(grid.multiselect_type == 'match_one') {
189 - if(match_one_filters.length > 0) filters.push(match_one_filters);
190 - } else {
191 - if(match_all_filter !== '') filters.push([match_all_filter]);
192 - }
164 + if(grid.multiselect_type == 'match_one') {
165 + if(match_one_filters.length > 0) filters.push(match_one_filters);
166 + } else {
167 + if(match_all_filter !== '') filters.push([match_all_filter]);
193 168 }
194 169 }
170 + }
195 171
196 - grid.filter = '';
197 - WPUltimatePostGrid.getFilterString(grid_id, '', filters, 0);
198 - if(grid.inverse) {
199 - if(grid.pagination_type == 'pages') {
200 - var page = grid.page || 0;
201 - var filter_without_page = grid.filter.replace('.wpupg-page-' + page, '');
172 + grid.filter = '';
173 + WPUltimatePostGrid.getFilterString(grid_id, '', filters, 0);
174 + if(grid.inverse) {
175 + if(grid.pagination_type == 'pages') {
176 + var page = grid.page || 0;
177 + var filter_without_page = grid.filter.replace('.wpupg-page-' + page, '');
202 178
203 - grid.filter = '.wpupg-page-' + page + ':not(' + filter_without_page + ')';
204 - } else {
205 - grid.filter = ':not(' + grid.filter + ')';
206 - }
179 + grid.filter = '.wpupg-page-' + page + ':not(' + filter_without_page + ')';
180 + } else {
181 + grid.filter = ':not(' + grid.filter + ')';
207 182 }
208 183 }
209 184
210 - jQuery('#wpupg-grid-' + grid_id + '-empty').hide();
211 - grid.container.isotopewpupg({ filter: grid.filter });
185 + grid.container.isotope({ filter: grid.filter });
212 186 grid.container.trigger('wpupgFiltered');
213 187 WPUltimatePostGrid.updateDeeplink();
214 188 };
215 189
@@ -223,18 +197,8 @@
223 197 }
224 198 }
225 199 };
226 200
227 -WPUltimatePostGrid.checkEmpty = function(container) {
228 - var grid_id = container.data('grid'),
229 - filter = WPUltimatePostGrid.grids[grid_id].filter,
230 - visible_items = container.find(filter);
231 -
232 - if(filter !== '' && visible_items.length == 0) {
233 - jQuery('#wpupg-grid-' + grid_id + '-empty').slideDown(300);
234 - }
235 -};
236 -
237 201 WPUltimatePostGrid.updateDeeplink = function() {
238 202 var link = '';
239 203
240 204 for(var grid_id in WPUltimatePostGrid.grids) {
@@ -241,23 +205,18 @@
241 205 if(WPUltimatePostGrid.grids.hasOwnProperty(grid_id)) {
242 206 var grid = WPUltimatePostGrid.grids[grid_id];
243 207 var grid_link = '';
244 208
209 + // Page filter
210 + if(grid.page != 0) grid_link += '+p:' + (grid.page+1);
245 211
246 - if(grid.filter_text) {
247 - grid_link += '+s:' + grid.filter_text_search;
248 - } else {
249 - // Page filter
250 - if(grid.page != 0) grid_link += '+p:' + (grid.page+1);
212 + // Taxonomy filters
213 + for(var taxonomy in grid.filters) {
214 + if(grid.filters.hasOwnProperty(taxonomy)) {
215 + var taxonomy_filter = grid.filters[taxonomy];
251 216
252 - // Taxonomy filters
253 - for(var taxonomy in grid.filters) {
254 - if(grid.filters.hasOwnProperty(taxonomy)) {
255 - var taxonomy_filter = grid.filters[taxonomy];
256 -
257 - if(taxonomy_filter.length > 0) {
258 - grid_link += '+' + taxonomy + ':' + taxonomy_filter.join(',');
259 - }
217 + if(taxonomy_filter.length > 0) {
218 + grid_link += '+' + taxonomy + ':' + taxonomy_filter.join(',');
260 219 }
261 220 }
262 221 }
263 222
@@ -268,71 +227,11 @@
268 227 }
269 228 }
270 229 }
271 230
272 - WPUltimatePostGrid.replaceDeeplink(link);
231 + document.location.hash = link;
273 232 };
274 233
275 -/**
276 - * Source: http://stackoverflow.com/questions/1397329/how-to-remove-the-hash-from-window-location-with-javascript-without-page-refresh/5298684#5298684
277 - */
278 -WPUltimatePostGrid.replaceDeeplink = function(link) {
279 - var scrollV, scrollH, loc = window.location;
280 - if ("replaceState" in history) {
281 - var hash = link == '' ? '' : '#' + link;
282 - history.replaceState("", document.title, loc.pathname + hash + loc.search);
283 - } else {
284 - // Prevent scrolling by storing the page's current scroll offset
285 - scrollV = document.documentElement.scrollTop || document.body.scrollTop;
286 - scrollH = document.documentElement.scrollLeft || document.body.scrollLeft;
287 -
288 - loc.hash = link;
289 -
290 - // Restore the scroll offset, should be flicker free
291 - document.documentElement.scrollTop = document.body.scrollTop = scrollV;
292 - document.documentElement.scrollLeft = document.body.scrollLeft = scrollH;
293 - }
294 -};
295 -
296 -WPUltimatePostGrid.preFilterGrid = function() {
297 - var link = document.location.hash;
298 - link = link.substr(1);
299 -
300 - if(!link) {
301 - var link = '';
302 -
303 - for(var grid_id in WPUltimatePostGrid.grids) {
304 - if(WPUltimatePostGrid.grids.hasOwnProperty(grid_id)) {
305 - var grid = WPUltimatePostGrid.grids[grid_id];
306 - var grid_link = '';
307 -
308 - if(grid.filter_data) {
309 - var pre_filter = grid.filter_data['pre_filter'];
310 -
311 - // Taxonomy filters
312 - for(var taxonomy in pre_filter) {
313 - if(pre_filter.hasOwnProperty(taxonomy)) {
314 - var taxonomy_filter = pre_filter[taxonomy];
315 -
316 - if(taxonomy_filter.length > 0) {
317 - grid_link += '+' + taxonomy + ':' + taxonomy_filter.join(',');
318 - }
319 - }
320 - }
321 - }
322 -
323 - if(grid_link != '') {
324 - if(link != '') link += '#';
325 - link += grid_id;
326 - link += grid_link;
327 - }
328 - }
329 - }
330 -
331 - WPUltimatePostGrid.replaceDeeplink(link);
332 - }
333 -};
334 -
335 234 WPUltimatePostGrid.restoreDeeplink = function() {
336 235 var link = document.location.hash;
337 236 link = link.substr(1);
338 237
@@ -358,13 +257,11 @@
358 257
359 258 if(filter[0] == 'p') {
360 259 var page = parseInt(filter[1]) - 1;
361 260 WPUltimatePostGrid.updatePagination(jQuery('#wpupg-grid-' + grid_id + '-pagination'), page);
362 - } else if(filter[0] == 's') {
363 - WPUltimatePostGrid.updateFilter(jQuery('#wpupg-grid-' + grid_id + '-filter'), filter[0], 'text', filter[1]);
364 261 } else {
365 262 var terms = filter[1].split(',');
366 - WPUltimatePostGrid.updateFilter(jQuery('#wpupg-grid-' + grid_id + '-filter'), filter[0], 'terms', terms);
263 + WPUltimatePostGrid.updateFilter(jQuery('#wpupg-grid-' + grid_id + '-filter'), filter[0], terms);
367 264 }
368 265 }
369 266 }
370 267 }
@@ -371,13 +268,12 @@
371 268 };
372 269
373 270 WPUltimatePostGrid.checkLinks = function(grid_id) {
374 271 var grid = WPUltimatePostGrid.grids[grid_id];
375 - var default_link_type = grid.container.data('link-type');
272 + var link_type = grid.container.data('link-type');
376 273 var link_target = grid.container.data('link-target');
377 - var link_rel = link_target == 'post' ? '' : ' rel="lightbox"';
378 274
379 - if(default_link_type != 'none') {
275 + if(link_type != 'none') {
380 276 grid.container.find('.wpupg-item').each(function() {
381 277 var item = jQuery(this);
382 278
383 279 // Remove links from item
@@ -388,29 +284,27 @@
388 284 }
389 285 });
390 286
391 287 var link = item.data('custom-link') ? item.data('custom-link') : ( link_target == 'post' ? item.data('permalink') : item.data('image') );
392 - var link_behaviour = item.data('custom-link-behaviour');
288 + var rel = link_target == 'post' ? '' : ' rel="lightbox"';
393 289
394 - var link_type = link_behaviour == '_blank' || link_behaviour == '_self' ? link_behaviour : default_link_type;
395 -
396 290 // Add link around item
397 - if (link_behaviour !== 'none' && link && item.parent('a').length == 0) {
398 - item.wrap('<a href="' + link + '" target="' + link_type + '"' + link_rel + ' class="' + wpupg_public.link_class + '"></a>');
291 + if (link && item.parent('a').length == 0) {
292 + item.wrap('<a href="' + link + '" target="' + link_type + '"' + rel + ' class="' + wpupg_public.link_class + '"></a>');
399 293 }
400 294 });
401 295 }
402 296 };
403 297
404 -WPUltimatePostGrid.updateFilter = function(container, taxonomy, type, terms) {
405 - var filter_type = container.data('type');
406 - var func = 'updateFilter' + filter_type.charAt(0).toUpperCase() + filter_type.slice(1);
298 +WPUltimatePostGrid.updateFilter = function(container, taxonomy, terms) {
299 + var type = container.data('type');
300 + var func = 'updateFilter' + type.charAt(0).toUpperCase() + type.slice(1);
407 301 if(typeof WPUltimatePostGrid[func] == 'function') {
408 - WPUltimatePostGrid[func](container, taxonomy, type, terms);
302 + WPUltimatePostGrid[func](container, taxonomy, terms);
409 303 }
410 304 };
411 305
412 -WPUltimatePostGrid.updateFilterIsotope = function(container, taxonomy, type, terms) {
306 +WPUltimatePostGrid.updateFilterIsotope = function(container, taxonomy, terms) {
413 307 for(var i = 0; i < terms.length; i++) {
414 308 container.find('.wpupg-filter-tag-' + terms[i]).click();
415 309 }
416 310 };
@@ -480,9 +374,9 @@
480 374
481 375 var filter_type = container.data('filter-type');
482 376 var filter_items = container.find('.wpupg-filter-item');
483 377
484 - if(filter_type == 'isotope' || filter_type == 'text_isotope') {
378 + if(filter_type == 'isotope') {
485 379 var margin = container.data('margin-vertical') + 'px ' + container.data('margin-horizontal') + 'px';
486 380 var padding = container.data('padding-vertical') + 'px ' + container.data('padding-horizontal') + 'px';
487 381 var border = container.data('border-width') + 'px solid ' + container.data('border-color');
488 382 var background_color = container.data('background-color');
@@ -664,26 +558,19 @@
664 558 });
665 559 };
666 560
667 561 WPUltimatePostGrid.insertPosts = function(grid_id, posts) {
668 - var scrollV = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0,
669 - scrollH = document.documentElement.scrollLeft || document.body.scrollLeft;
562 + WPUltimatePostGrid.grids[grid_id].container.isotope('destroy');
670 563
671 - WPUltimatePostGrid.grids[grid_id].container.isotopewpupg('destroy');
672 -
673 564 WPUltimatePostGrid.grids[grid_id].container.append(posts);
674 - WPUltimatePostGrid.grids[grid_id].container.isotopewpupg(WPUltimatePostGrid.grids[grid_id].args);
565 + WPUltimatePostGrid.grids[grid_id].container.isotope(WPUltimatePostGrid.grids[grid_id].args);
675 566
676 - // Restore the scroll offset, should be flicker free
677 - jQuery(window).scrollTop(scrollV);
678 - document.documentElement.scrollLeft = document.body.scrollLeft = scrollH;
679 -
680 567 WPUltimatePostGrid.updatePosts(grid_id);
681 568 WPUltimatePostGrid.checkLinks(grid_id);
682 569 WPUltimatePostGrid.filterGrid(grid_id);
683 570
684 571 WPUltimatePostGrid.grids[grid_id].container.imagesLoaded( function() {
685 - WPUltimatePostGrid.grids[grid_id].container.isotopewpupg('layout');
572 + WPUltimatePostGrid.grids[grid_id].container.isotope('layout');
686 573 WPUltimatePostGrid.grids[grid_id].loading = false;
687 574 });
688 575 };
689 576
@@ -706,9 +593,8 @@
706 593 var grid_id = container.data('grid');
707 594 var type = container.data('type');
708 595
709 596 WPUltimatePostGrid.grids[grid_id].filter_type = type;
710 - WPUltimatePostGrid.grids[grid_id].filter_data = window['wpupg_filter_' + WPUltimatePostGrid.grids[grid_id].id];
711 597
712 598 var func = 'initFilter' + type.charAt(0).toUpperCase() + type.slice(1);
713 599 if(typeof WPUltimatePostGrid[func] == 'function') {
714 600 WPUltimatePostGrid[func](container);
@@ -726,7 +612,6 @@
726 612 if(typeof WPUltimatePostGrid[func] == 'function') {
727 613 WPUltimatePostGrid[func](container);
728 614 }
729 615 });
730 - WPUltimatePostGrid.preFilterGrid();
731 616 WPUltimatePostGrid.restoreDeeplink();
732 617 });