1(function ($) { 2 var tags = []; 3 var deletedImages = []; 4 var api = null; 5 var resizeInterval; 6 7 $(document).ready(function () { 8 $('body').onPageLoadFlickr(); 9 }); 10 $.fn.onPageLoadFlickr = function(){ 11 12 if(window.isMobile == null){ 13 getFlickrData(); 14 }else{ 15 $('.movie-shoots-btn').removeClass('hidden'); 16 $('#flickr-btn-activate').click(function(){ 17 $(this).addClass('hidden'); 18 $('#flickr-waiting-text').removeClass('hidden'); 19 getFlickrData(); 20 }); 21 } 22 23 $(window).on('flickr-gallery-ready', function(){ 24 setTimeout(function(){ 25 var $filter = $('.vpm-filter-delete'), 26 $first = $filter.find('>ul>li').first(); 27 $first.addClass('current'); 28 $filter.vpmBeginFilter({delete: true}); 29 $filter.find(".current-item").text($first.text()); 30 },100); 31 }); 32 }; 33 /** 34 * Get Flickr preprocessed data from Flickr custom module 35 */ 36 function getFlickrData(param) { 37 if (typeof param === 'undefined') { 38 param = {}; 39 } 40 $.ajax({ 41 type: "GET", 42 url: "/ajax/flickr/get-images", 43 success: function (data) { 44 $('#flickr-waiting-text').addClass('hidden'); 45 if (data.hasOwnProperty('photos')) { 46 var images = []; 47 for (var i = 0; i < data.photos.length; i++) { 48 images.push(buildFlickrImage(data.photos[i])); 49 } 50 images = images.join(''); 51 var $flickr = $('#flickr-images-wrapper'); 52 if ($flickr.length == 1) { 53 $flickr.html(images); 54 api = $flickr.unitegallery({ 55 gallery_theme: 'tiles', 56 tiles_type: 'nested', 57 tiles_nested_optimal_tile_width: 500 58 }); 59 $flickr.find('.ug-thumb-wrapper').each(function () { 60 $(this)[0].setAttribute('data-vpm-tag', $(this).find('img').attr('alt')); 61 $(this)[0].setAttribute('data-vpm-no-split', 'true'); 62 }); 63 $('#flickr-bar-filter').removeClass('hidden'); 64 var $filter = $('.bar-filter ul'); 65 tags.sort(function (a, b) { 66 return flickrTranslate(tagSorting(a)).localeCompare(flickrTranslate(tagSorting(b))); 67 }); 68 function tagSorting(visibleTag){ 69 if (visibleTag.indexOf('/') != -1) { 70 switch ($('html').attr('lang')) { 71 case 'fr': 72 visibleTag = visibleTag.substr(0, visibleTag.indexOf('/') - 1); 73 break; 74 case 'en': 75 visibleTag = visibleTag.substr(visibleTag.indexOf('/') + 1); 76 break; 77 } 78 } 79 return visibleTag; 80 } 81 for (var j = 0; j < tags.length; j++) { 82 var visibleTag = tags[j]; 83 if (visibleTag.indexOf('/') != -1) { 84 switch ($('html').attr('lang')) { 85 case 'fr': 86 visibleTag = visibleTag.substr(0, visibleTag.indexOf('/') - 1); 87 break; 88 case 'en': 89 visibleTag = visibleTag.substr(visibleTag.indexOf('/') + 1); 90 break; 91 } 92 } 93 var tag = tags[j].replace(/'/g, ' '); 94 $filter.append('<li data-vpm-tag="' + tag + '">' + flickrTranslate(visibleTag) + '</li>'); 95 } 96 $filter.find('li').initDropdownElementClick(); 97 $('.vpm-filter-delete').on('dropdown-completed', function () { 98 var $wrapper = $flickr.find('.ug-tiles-wrapper'); 99 for (var i = 0; i < deletedImages.length; i++) { 100 $wrapper.append($(deletedImages[i][0].outerHTML).vpmHide()); 101 } 102 deletedImages = []; 103 $(this).vpmBeginFilter({delete: true}); 104 $wrapper.children().vpmShow(); 105 }); 106 $(document).on('vpmFilterEnd', function (e, deleted) { 107 deletedImages = deleted.slice(0); 108 setTimeout(function(){ 109 replaceFlickr(); 110 },100); 111 }); 112 } 113 } 114 } 115 }); 116 } 117 118 /** 119 * Resize the Flickr gallery 120 */ 121 function replaceFlickr() { 122 if (api != null) { 123 var $flickr = $('#flickr-images-wrapper'); 124 api.resize($flickr.innerWidth() - 1); 125 api.resize($flickr.innerWidth()); 126 } 127 } 128 129 /** 130 * Build HTML image from Flickr preprocessed data 131 * 132 * @param data 133 * @returns {string} 134 */ 135 function buildFlickrImage(data) { 136 // Data parsing 137 var attr = { 138 'src': data.small, 139 'data-src': data.large, 140 'data-src-small': data.large, 141 'data-image': data.original, 142 'data-description': data.title, 143 'alt': data.album.replace(/'/g, ' ') 144 }; 145 // Image construction 146 var img = '<img '; 147 for (var k in attr) { 148 img += k + '="' + attr[k] + '" '; 149 } 150 img += ' />'; 151 152 if (tags.indexOf(data.album) == -1) { 153 tags.push(data.album); 154 } 155 return img; 156 } 157 158 /** 159 * 160 * @param str 161 * @returns {string} 162 */ 163 function flickrTranslate(str) { 164 var translations = { 165 "AIRPORT SCENES": "SCÃNES D'AÃROPORT",
166 "CLOCK TOWER": "TOUR DE L'HORLOGE", 167 "OUTSIDE AND INSIDE LOCATIONS": "SITES EXTÃRIEURS ET INTÃRIEURS", 168 "WINTER SCENES AT THE OLD PORT": "SCÃNES D'HIVER AU VIEUX-PORT", 169 "AUTUMN SCENES AT THE OLD PORT": "SCÃNES D'AUTOMNE AU VIEUX PORT", 170 "CONVEYOR QUAY": "QUAI DES CONVOYEURS", 171 "MONTREAL SCIENCE CENTRE": "CENTRE DES SCIENCES DE MONTRÃAL", 172 "CLOCK TOWER BEACH": "PLAGE DE L'HORLOGE", 173 "PORT OF CALL & YACHT CLUB - OLD PORT OF MONTREAL": "PORT D'ESCALE & YACHT CLUB - VIEUX-PORT DE MONTRÃAL" 174 }; 175 while (str.charAt(0) == ' ') { 176 str = str.substr(1); 177 } 178 while (str.charAt(str.length - 1) == ' ') { 179 str = str.substr(0, str.length - 2); 180 } 181 var lang = $('html').attr('lang'); 182 if (lang == 'fr') { 183 if (translations.hasOwnProperty(str)) { 184 return translations[str]; 185 } 186 } 187 if (lang == 'en') { 188 for (var i in translations) { 189 if (translations[i] == str) { 190 return i; 191 } 192 } 193 } 194 return str; 195 } 196})(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.