1(function($) { 2 window.NggPaginatedGallery = function(displayed_gallery_id, container) { 3 this.displayed_gallery_id = displayed_gallery_id; 4 this.container = $(container); 5 this.container_name = container; 6 7 this.get_displayed_gallery_obj = function() { 8 var index = 'gallery_' + this.displayed_gallery_id; 9 if (typeof(window.galleries[index]) == 'undefined') { 10 return false; 11 } else { 12 return window.galleries[index]; 13 } 14 }; 15 16 this.enable_ajax_pagination = function() { 17 var self = this; 18 // Attach a click event handler for each pagination link to adjust the request to be sent via XHR 19 $('body').on('click', 'a.ngg-browser-prev, a.ngg-browser-next', function (event) { 20 21 var skip = true; 22 $(this).parents(container).each(function() { 23 if ($(this).data('nextgen-gallery-id') != self.displayed_gallery_id) { 24 return true; 25 } 26 skip = false; 27 }); 28 29 if (!skip) { 30 event.preventDefault(); 31 } else { 32 return; 33 } 34 35 // Adjust the user notification 36 window['ngg_ajax_operaton_count']++; 37 $('body, a').css('cursor', 'wait'); 38 39 // Send the AJAX request 40 $.get($(this).attr('href'), function (response) { 41 window['ngg_ajax_operaton_count']--; 42 if (window['ngg_ajax_operaton_count'] <= 0) { 43 window['ngg_ajax_operaton_count'] = 0; 44 $('body, a').css('cursor', 'auto'); 45 } 46 47 if (response) { 48 var html = $(response); 49 var replacement = false; 50 html.find(self.container_name).each(function() { 51 if (replacement) { 52 return true; 53 } 54 if ($(this).data('nextgen-gallery-id') != self.dis
54played_gallery_id) { 55 return true; 56 } 57 replacement = $(this); 58 }); 59 if (replacement) { 60 self.container.each(function () { 61 var $this = $(this); 62 63 if ($this.data('nextgen-gallery-id') != self.displayed_gallery_id) { 64 return true; 65 } 66 67 // If the image gallery makes up the bulk of the post/page content the .html() call 68 // below will empty the contents causing the browser's scroll position to be reset to 69 // zero as the browser believes it has been pushed back to the top of the page. Here 70 // we give the parent container a min-height equal to the gallery's height to prevent 71 // this flicker and resetting of the scroll position. 72 var $new_element = $(replacement.html()); 73 var promises = $new_element.find('img').toArray().map(function(img){ 74 return new Promise(function(resolve, reject){ 75 var i = new Image(); 76 i.src = img.src; 77 $(i).on('load', resolve); 78 }); 79 }); 80 81 Promise.all(promises).then(function(){ 82 $this.html($new_element); 83 84 // Let the user know that we've refreshed the content 85 $(document).trigger('refreshed'); 86 }); 87 88 return true; 89 }); 90 } 91 } 92 }); 93 }); 94 }; 95 96 // Initialize 97 var displayed_gallery = this.get_displayed_gallery_obj(); 98 if (displayed_gallery) { 99 if (typeof(displayed_gallery.display_settings['ajax_pagination']) != 'undefined') { 100 if (parseInt(displayed_gallery.display_settings['ajax_pagination'])) { 101 this.enable_ajax_pagination(); 102 } 103 } 104 } 105 106 // We maintain a count of all the current AJAX actions initiated 107 if (typeof(window['ngg_ajax_operation_count']) == 'undefined') { 108 window['ngg_ajax_operaton_count'] = 0; 109 } 110 }; 111 112 // Polyfill for older browsers 113 Object.setPrototypeOf = Object.setPrototypeOf || function(obj, proto) { 114 obj.__proto__ = proto; 115 return obj; 116 }; 117 118 if (typeof window.galleries !== 'undefined') { 119 Object.setPrototypeOf( 120 window.galleries, 121 { 122 get_api_version: function() { 123 return '0.1'; 124 }, 125 126 get_from_id: function (gallery_id) { 127 var self = this; 128 var retval = null; 129 var keys = Object.keys(this); 130 131 for (var i = 1; i <= keys.length; i++) { 132 var gallery = self[keys[i - 1]]; 133 if (gallery.ID === gallery_id || gallery.ID === 'gallery_' + gallery_id || gallery.ID === parseInt(gallery_id)) { 134 retval = gallery; 135 break; 136 } 137 } 138 139 return retval; 140 }, 141 142 get_from_slug: function (slug) { 143 var self = this; 144 var retval = null; 145 var keys = Object.keys(this); 146 147 for (var i = 1; i <= keys.length; i++) { 148 var gallery = self[keys[i - 1]]; 149 if (gallery.slug === slug) { 150 retval = gallery; 151 break; 152 } 153 } 154 155 return retval; 156 }, 157 158 get_setting: function(gallery_id, name, def) { 159 var tmp = ''; 160 var gallery = this.get_from_id(gallery_id); 161 if (gallery && typeof gallery[name] !== 'undefined') { 162 tmp = gallery[name]; 163 } else { 164 tmp = def; 165 } 166 167 if (tmp === 1) tmp = true; 168 if (tmp === 0) tmp = false;
169 if (tmp === '1') tmp = true; 170 if (tmp === '0') tmp = false; 171 if (tmp === 'false') tmp = false; 172 if (tmp === 'true') tmp = true; 173 174 return tmp; 175 }, 176 177 get_display_setting: function(gallery_id, name, def) { 178 var tmp = ''; 179 var gallery = this.get_from_id(gallery_id); 180 if (gallery && typeof gallery.display_settings[name] !== 'undefined') { 181 tmp = gallery.display_settings[name]; 182 } else { 183 tmp = def; 184 } 185 186 if (tmp === 1) tmp = true; 187 if (tmp === 0) tmp = false; 188 if (tmp === '1') tmp = true; 189 if (tmp === '0') tmp = false; 190 if (tmp === 'false') tmp = false; 191 if (tmp === 'true') tmp = true; 192 193 return tmp; 194 }, 195 196 is_widget: function(gallery_id) { 197 var retval = false; 198 var gallery = this.get_from_id(gallery_id); 199 var slug = gallery.slug; 200 201 if (slug) { 202 return slug.indexOf('widget-ngg-images') !== -1; 203 } 204 205 return retval; 206 } 207 } 208 ); } 209 210})(jQuery);
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.