1// JavaScript Document ne pas enlever 2document.addEventListener('DOMContentLoaded', function() { // Remplacé par du js natif pour plus de compatibilité 3 4 modele = { 5 // function qui recherche la class refresh 6 getClassRefresh: function(elem){ 7 // on recherche la class a refresh 8 var class_refresh = ''; 9 if(fmod = elem.getParent('.fmodele')){ 10 var cl = fmod.get('class').toString(); 11 tclass = cl.split(" "); 12 for(i=0; i<tclass.length; i++){ 13 if(ereg('_refresh',tclass[i])){ 14 return str_replace("_refresh","",tclass[i]); 15 break; 16 } 17 } 18 } 19 return false; 20 }, 21 // function qui ajoute tous les events sur la page panier 22 chargeEvents: function(){ 23 24 // choice 25 if( typeof flexit_choice_multiselect == "function" )flexit_choice_multiselect(); 26 27 // rechargement automatique 28 //if(charge_cache)flexitModuleRefreshDiv('fmodfcache',"",1,'modele.chargeEvents();'); 29 30 // pagination 31 fmoo.$$('.modele_pagination ul li a').each(function(e){ 32 if( e.get('href') ) { 33 e.removeEvents(); 34 e.addEvent('click', function (event) { 35 event.preventDefault(); 36 event.stopPropagation(); 37 var tparam = JSON.decode(e.get('data-paginate') ? e.get('data-paginate') : e.get('rel')); 38 class_refresh = modele.getClassRefresh(this); 39 40 // Calcul de la cible pour scroller en entête 41 var fElemTargetScroll = e.getParent('div.fmodele.fmodeleScroll'); 42 43 // Rafraichissement du div 44 flexitModuleRefreshDiv(this.getParent('.fmodele'), tparam.param + "=" + tparam.num, 1, 'modele.chargeEvents();', null, null, fElemTargetScroll); 45 }); 46 } 47 }); 48 49 if( flexit.hasJQuery ) { 50 fmoo.$$('a[data-pagination][data-direction]').each(function (e) { 51 52 // si j'ai un chargement automatique 53 if (strstr(e.get('data-load-mode'), 'auto')) { 54 55 // création d'un observateur 56 if ("IntersectionObserver" in window) { 57 if (typeof objsObserver == "undefined") { 58 objsObserver = new IntersectionObserver(function (entries) { 59 entries.forEach(function (entry) { 60 61 // si je suis visible 62 if (entry.isIntersecting) { 63 64 // Désenregistre pour éviter plusieurs déclenchements en boucle 65 objsObserver.unobserve(entry.target); 66 67 // si j'ai un démarrage auto 68 if (e.get('data-load-start') == "auto") fmoo.$(entry.target).fireEvent('click'); 69 70 } 71 }); 72 }, { 73 root: null, 74 threshold: [0.7] 75 }); 76 } 77 78 objsObserver.observe(e.elements[0]); 79 } 80 81 } 82 83 e.removeEvents(); 84 e.addEvent('click', function (event) { 85 event.preventDefault(); 86 event.stopPropagation(); 87 e.addClass('loading'); 88 89 // on envoi le post 90 new Request.HTML({ 91 method: 'post', 92 url: this.get('href')+"&paginate=auto", 93 onSuccess: function (a, b, datas, d) { 94 95 // j'ajoute un clic une qte de plus 96 var nbclic = e.get('data-qte-click') + 1;
97 e.set('data-qte-click', nbclic); 98 99 // je récupère ma cible 100 var cible = fmoo.$$(e.get('data-selector')); 101 102 // je crée un element html 103 var htmlTmp = new Element('div', {'html': datas}); 104 105 // je parcours tous les éléments 106 var itemsList = htmlTmp.getElements(e.get('data-selector') + ' > *'); 107 108 var direction = e.get('data-direction'); 109 var inject = ''; 110 itemsList.each(function (item) { 111 item.inject(cible, direction == 'prev' ? 'top' : inject); 112 113 // je dois les inserer dans l'ordre inverse 114 if (e.get('data-direction') == 'prev') { 115 cible = item; 116 inject = 'after'; 117 direction = ''; 118 } 119 120 }); 121 122 // si je trouve encore un bouton 123 if ((btnpag = htmlTmp.getElement('a[data-pagination][data-direction="' + e.get('data-direction') + '"]')) && btnpag.length) { 124 e.set('href', btnpag.get('href')); 125 } else { 126 e.addClass('off'); 127 } 128 129 // si je suis en autoclick 130 if (e.get('data-load-mode') == 'auto' && e.get('data-load-start') == 'click') { 131 e.set('data-load-start', 'auto'); 132 } 133 134 // si jamais j'ai un stop 135 if (e.get('data-load-mode') == 'auto' && e.get('data-load-stop')) { 136 var nbstop = Number(e.get('data-load-stop')); 137 138 // si je suis un multiple du stop 139 if (nbclic % nbstop === 0) e.set('data-load-start', 'click'); 140 } 141 142 // Ensuite, exécute les <script> du retour AJAX : 143 htmlTmp.getElements('script').each(function(script) { 144 if( script = script.elements[0] ) { 145 // Si c'est un script externe 146 if (script.src) { 147 var newScript = document.createElement('script'); 148 newScript.src = script.src; 149 document.head.appendChild(newScript); 150 } else { 151 // Script inline 152 try { 153 eval(script.text); 154 } catch (err) { 155 156 } 157 } 158 } 159 }); 160 161 e.removeClass('loading'); 162 163 if (typeof objsObserver != "undefined")objsObserver.observe(e.elements[0]); 164 165 } 166 }).send(); 167 168 }); 169 }); 170 } 171 172 // produit par page 173 fmoo.$$('.modele_nbparpage').each(function(e){ 174 e.removeEvents(); 175 e.set('href','javascript:;'); 176 e.addEvent('click', function(){ 177 var tparam = JSON.decode(e.get('rel')); 178 flexitModuleRefreshDiv(this.getParent('.fmodele'),tparam.param+"="+tparam.value,1,'modele.chargeEvents();'); 179 }); 180 }); 181 182 // tri 183 fmoo.$$('.modele_tri').each(function(e){
184 e.removeEvents(); 185 186 var ev = (e.get('tag') == 'a' || e.get('tag') == 'A') ? 'click' : 'change'; 187 e.addEvent(ev, function(){ 188 if( this.getParent('form.modele_filtre')){ 189 var infos = flexit_charge_form( this.getParent('form.modele_filtre') ); 190 if(infos == ""){ 191 // je prend le premier name 192 var firstInput = this.getElement('input'); 193 if( firstInput ) { 194 var elem = firstInput.get('name'); 195 var myArray = elem.match(/filter\[([^\]]+)\]/g); 196 infos+=myArray[0]+"=1"; 197 } 198 } 199 } else { 200 var tparam = JSON.decode(e.get('value')); 201 var infos = tparam.param+"="+tparam.value; 202 } 203 flexitModuleRefreshDiv(this.getParent('.fmodele'),infos,1,'modele.chargeEvents();'); 204 }); 205 }); 206 207 // filtre 208 fmoo.$$('.modele_filtre').each(function(e){ 209 e.removeEvents('submit'); 210 e.addEvent('submit', function(event){ 211 if( typeof( event ) != "undefined" ) event.preventDefault(); 212 213 var infos = this.toQueryString(); 214 if(infos == ""){ 215 // je prend le premier name 216 var firstInput = this.getElement('input'); 217 if( firstInput ) { 218 var elem = this.getElement('input').get('name'); 219 var myArray = elem.match(/filter\[([^\]]+)\]/g); 220 infos+=myArray[0]+"=1"; 221 } 222 } 223 flexitModuleRefreshDiv(this.getParent('.fmodele'),infos,1,'modele.chargeEvents();'); 224 return false; 225 }); 226 }); 227 228 // on lance le traitement des champs téléphone 229 if (fmoo.$$('[data-type="tel"]').length > 0) { 230 if( typeof(flexit_commun) != "undefined" ) { 231 flexit_commun.initTelInput(); 232 } 233 } 234 235 // on lance le traitement des champs calendrier 236 if(fmoo.$$('.calendrier_flexit_front').length > 0) { 237 if( typeof(flexit) != "undefined" && !flexit.hasMootools && flexit.hasJQuery ) { 238 jQuery.flexit.initDatePicker(); 239 } else { 240 fmoo.$$('.calendrier_flexit_front').each(function(e){ 241 my_datepicker = new DatePicker(e, {pickerClass: 'datepicker_vista',allowEmpty: true,timePicker: false,inputOutputFormat: 'Y-m-d',format: 'd/m/Y',onlyDays: e.get('data-only-days'),minDate: e.get('data-min-date') ? new Date(e.get('data-min-date') ) : '',maxDate: e.get('data-max-date') ? new Date(e.get('data-max-date') ) : '',datesExcludes: e.get('data-dates-excludes') ? e.get('data-dates-excludes') : ''}); 242 }); 243 } 244 } 245 246 if(fmoo.$$('.calendrier_flexit_front_time').length > 0) { 247 if( typeof(flexit) != "undefined" && !flexit.hasMootools && flexit.hasJQuery ) { 248 jQuery.flexit.initDatePicker('datetime'); 249 } else { 250 my_datepicker_time = new DatePicker('.calendrier_flexit_front_time', {pickerClass: 'datepicker_vista',allowEmpty: true,timePicker: true,inputOutputFormat: 'Y-m-d H:i:s',format: 'd/m/Y H:i:s'}); 251 } 252 } 253 254 // je lance les plugins si besoins 255 if( typeof favoris != "undefined" )favoris.chargeEvents(); // plugin favoris 256 257 // je lance la tempalte si besoin 258 if( typeof templatejs != "undefined" )templatejs.chargeEvents(); 259 } 260 } 261 262 modele.chargeEvents(); 263});
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.