PageSourceSearch

https://www.pulligny.fr/globalflexit/backoffice/modules/templates/front/templates/js/modele.js?d=1790351071

js pulligny.fr collected 2026-10-02 22:56:16 UTC 12,759 bytes, 263 lines download raw bytes

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.