PageSourceSearch

https://generac.fr/wp-content/plugins/communeactu/js/cua-agenda.js?ver=4.2

js generac.fr collected 2026-10-02 16:47:07 UTC 22,203 bytes, 544 lines download raw bytes

1(function ($) {
2    "use strict";
3    
4    if ($(".cua-wp-detail-titre").length > 0) {
5        let titre = $(".cua-wp-detail-titre h1").text();
6        $(".breadcrumb.colibri-breadcrumb li:last").remove();
7        $(".breadcrumb.colibri-breadcrumb").append("<li class='breadcrumb-item'>" + titre + "</li>");
8        let track = $(".splide__track");
9        let trackWidth = track.width();
10        $(".cua-wp-slide-li").css("width", "calc(" + trackWidth / 3 + " - 1em)");
11    }
12    
13    let spinnerEle = $("<div>").addClass("loader-box").css("display", "none").append($("<div>").addClass("lds-facebook").append("<div></div><div></div><div></div>"));
14    let spinnerElePage = $("<div>").addClass("loader").css("display", "none").append($("<div>").addClass("lds-facebook").append("<div></div><div></div><div></div>"));
15    /*
16     * Ajax
17     */
18    let ajax = {
19        
20        /**
21         * Default ajax function.
22         *
23         * @param url
24         * @param postData
25         * @param callback
26         * @param spinnerBlock
27         * @param async
28         */
29        send: function (url, postData, callback, spinnerBlock, async = true) {
30            if (helpers.empty(spinnerBlock) || spinnerBlock === "main") {
31                spinnerBlock = $("main");
32            }
33            $.post({
34                url: url,
35                data: postData,
36                dataType: "json",
37                async: async,
38                beforeSend: function () {
39                    // run the spinner
40                    ajax.runSpinner(spinnerBlock);
41                },
42                statusCode: {
43                    
44                    200: function (data) {
45                        
46                        if (!helpers.empty(spinnerBlock)) {
47                            setTimeout(function () {
48                                callback(data);
49                                ajax.stopSpinner(spinnerBlock);
50                            }, 200);
51                        } else {
52                            callback(data);
53                            ajax.stopSpinner(spinnerBlock);
54                        }
55                        
56                    },
57                    0: function (data) {
58                        callback({"error": "Connexion interrompue."});
59                        ajax.stopSpinner(spinnerBlock);
60                        
61                    },
62                    401: function (data) {
63                        callback({"error": "Vous êtes déconnecté de Comm'une Actu. Veuillez vous connecter pour effectuer cette action."});
64                        ajax.stopSpinner(spinnerBlock);
65                        
66                    },
67                    404: function (data) {
68                        callback({"error": "Page introuvable."});
69                        ajax.stopSpinner(spinnerBlock);
70                        
71                    },
72                    400: function (data) {
73                        callback({"error": "Demande invalide."});
74                        ajax.stopSpinner(spinnerBlock);
75                        
76                    },
77                    403: function (data) {
78                        callback({"error": "Opération non autorisée."});
79                        ajax.stopSpinner(spinnerBlock);
80                        
81                    },
82                    500: function (data) {
83                        callback({"error": "Erreur interne, opération impossible."});
84                        ajax.stopSpinner(spinnerBlock);
85                        
86                    }
87                    
88                }
89            });
90        },
91        /**
92         * Ajax call - ONLY for files.
93         *
94         *
95         * @param url
96         * @param spinnerBlock
97         * @param fileData
98         * @param callback
99         */
100        upload: function (url, fileData, callback, spinnerBlock) {
101            if (helpers.empty(spinnerBlock) || spinnerBlock === "main") {
102                spinnerBlock = $("main");
103            }
104            
105            $.ajax({
106                url: url,
107                type: "POST",
108                data: helpers.appendCsrfToken(fileData),
109                contentType: false,
110                processData: false,
111                async: true,
112                beforeSend: function () {
113                    // run the spinner
114                    if (!helpers.empty(spinnerBlock)) {
115                        ajax.runSpinner(spinnerBlock);
116                    }
117                },
118                statusCode: {
119                    
120                    200: function (data) {
121                        if (!helpers.empty(spinnerBlock)) {
122                            setTimeout(function () {
123                                callback(data);
124                                ajax.stopSpinner(spinnerBlock);
125                                
126                            }, 200);
127                        } else {
128                            callback(data);
129                            ajax.stopSpinner(spinnerBlock);
130                        }
131                    },
132                    0: function (data) {
133                        console.log("0", data.responseText);
134                        callback({"error": "Connexion interrompue."});
135                        ajax.stopSpinner(spinnerBlock);
136                    },
137                    401: function (data) {
138                        console.log("401", data.responseText);
139                        callback({"error": "Vous êtes déconnecté de Comm'une Actu. Veuillez vous connecter pour effectuer cette action."});
140                        ajax.stopSpinner(spinnerBlock);
141                    },
142                    404: function (data) {
143                        console.log("404", data.responseText);
144                        callback({"error": "Page introuvable."});
145                        ajax.stopSpinner(spinnerBlock);
146                    },
147                    400: function (data) {
148                        console.log("400", data.responseText);
149                        
150                        callback({"error": "Demande invalide."});
151                        ajax.stopSpinner(spinnerBlock);
152                    },
153                    403: function (data) {
154                        console.log("403", data.responseText);
155                        callback({"error": "Opération non autorisée."});
156                        ajax.stopSpinner(spinnerBlock);
157                    },
158                    500: function (data) {
159                        console.log("500", data.responseText);
160                        callback({"error": "Erreur interne, opération impossible."});
161                        ajax.stopSpinner(spinnerBlock);
162                    }
163                    
164                }
165            });
166        },
167        runSpinner: function (spinnerBlock) {
168            let newSpinner = spinnerElePage.clone();
169            if (helpers.empty(spinnerBlock) || spinnerBlock === "main") {
170                spinnerBlock = $("main");
171                newSpinner = spinnerElePage.clone();
172            } else {
173                newSpinner = spinnerEle.clone();
174            }
175            if (spinnerBlock instanceof jQuery) {
176                spinnerBlock.each(function () {
177                    $(this).css("position", "relative").append(newSpinner);
178                });
179            } else {
180                $(spinnerBlock).each(function () {
181                    $(this).css("position", "relative").append(newSpinner);
182                });
183            }
184            
185            $(newSpinner).show();
186            
187        },
188        stopSpinner: function (spinnerBlock) {
189            
190            setTimeout(function () {
191                
192                if (helpers.empty(spinnerBlock) || spinnerBlock === "main") {
193                    spinnerBlock = $("main");
194                    if (spinnerBlock instanceof jQuery) {
195                        spinnerBlock.find(".loader").remove();
196                    } else {
197                        $(spinnerBlock).find(".loader").remove();
198                    }
199                } else {
200                    if (spinnerBlock instanceof jQuery) {
201                        spinnerBlock.find(".loader-box").remove();
202                    } else {
203                        $(spinnerBlock).find(".loader-box").remove();
204                    }
205                }
206            }, 200);
207            
208        },
209    };
210    
211    /*
212     * Helpers
213     *
214     */
215    
216    let helpers = {
217        
218        tooltip: function () {
219            if (typeof $.fn.tooltip === 'function') {
220                $('[data-bs-toggle="tooltip"]').each(function (e) {
221                    if ($(this).data("tooltip-container") !== undefined) {
222                        $(this).tooltip({container: $(this).data("tooltip-container")});
223                    } else {
224                        $(this).tooltip();
225                    }
226                });
227            }
228        },
229        scrollTo: function (target) {
230            
231            let offset = $(".navbar.fixed-top").height() + 100;
232            $([document.documentElement, document.body]).animate({
233                scrollTop: $(target).offset().top - offset
234            }, 500);
235            
236        },
237        modal: function (title, body, id, size, _class, autofooter) {
238            
239            $(".modal, .modal-backdrop").each(function (e) {
240                $(this).remove();
241            });
242            
243            if (helpers.empty(_class)) _class = "modal-primary";
244            if (helpers.empty(size)) size = "modal-lg";
245            let close = "Fermer";
246            let footer = "";
247            if (autofooter === 'false') {
248                footer = "";
249            } else if (!helpers.empty(autofooter)) {
250                footer = '<div class="modal-footer">' + autofooter + '</div>';
251            } else {
252                footer = '<div class="modal-footer text-center">' +
253                    '<button class="btn btn-outline-default btn-sm" data-bs-dismiss="modal">' +
254                    '<i class="fas fa-fw fa-times"></i> Fermer' +
255                    '</button>' +
256                    '</div>';
257            }
258            
259            
260            let html = '' +
261                '<div id="' + id + '" class="modal ' + _class + ' fade" role="dialog">' +
262                '   <div class="modal-dialog ' + size + '">' +
263                '       <div class="modal-content">' +
264                '           <div class="modal-header">' +
265                '               <h4 class="modal-title">' + title + '</h4>' +
266                '               <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>' +
267                '           </div>' +
268                '           <div class="modal-body">' + body + '</div>' +
269                footer +
270                '       </div>' +
271                '   </div>' +
272                '</div>';
273            
274            $("body").append(html);
275            
276            let myModal = document.getElementById(id);
277            let modal = new bootstrap.Modal(myModal);
278            myModal.addEventListener("shown.bs.modal", function (e) {
279                $("body").addClass("modal-open");
280                helpers.tooltip();
281                if ($(".datetimepicker").length > 0) helpers.dateTimePicker();
282            });
283            modal.show();
284            
285        },
286        
287        /**
288         * Checks if an element is empty(set to null or undefined)
289         *
290         * @return boolean
291         *
292         * @param foo
293         */
294        empty: function (foo) {
295            return (foo === null || foo === '' || typeof (foo) === "undefined");
296        },
297        
298        /**
299         * extends $().html() in jQuery
300         *
301         * @param target
302         * @param str
303         */
304        html: function (target, str) {
305            $(target).html(str);
306        },
307        
308        /**
309         * extends $().after() in jQuery
310         *
311         * @param target
312         * @param str
313         */
314        after: function (target, str) {
315            $(target).after(str);
316        },
317        
318        /**
319         * clears all error and success messages
320         *
321         * @param target
322         */
323        clearMessages: function (target) {
324            
325            if (helpers.empty(target)) {
326                $("div.error, .alert-error").remove();
327                $("div.success, .alert-success").remove();
328            } else {
329                $(target).find(".error").remove();
330                $(target).find(".success").remove();
331                $(target).find(".alert-error").remove();
332                $(target).find(".alert-success").remove();
333                $(target).nextAll(".error:eq(0)").remove();
334                $(target).nextAll(".success:eq(0)").remove();
335            }
336        },
337        
338        
339        /**
340         * This function is used to redirect.
341         *
342         * @param location
343         */
344        redirectTo: function (location) {
345            window.location.href = location;
346        },
347        
348        
349        /**
350         * display error message
351         *
352         *
353         * @param targetBlock
354         * @param message
355         */
356        displayError: function (targetBlock, message) {
357            
358            helpers.clearMessages(targetBlock);
359            
360            message = helpers.empty(message) ? "Une erreur inconnue s'est produite" : message;
361            
362            if (null == targetBlock) {
363                
364                if (message.includes("alert-danger")) {
365                    return message;
366                }
367                // 2. display
368                let alert = $("<div>").addClass("alert alert-danger alert-dismissible fade show");
369                let notation = $("<i>").addClass("fa fa-exclamation-circle");
370                alert.append(notation);
371                alert.append(" " + message);
372                alert.append("<button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"alert\" aria-label=\"Close\"></button>");
373                return $("<div>").addClass("error").html(alert);
374                
375            } else {
376                
377                if (message.includes("alert-danger")) {
378                    return $(targetBlock).prepend(message);
379                }
380                
381                // 2. display
382                let alert = $("<div>").addClass("alert alert-danger alert-dismissible fade show");
383                let notation = $("<i>").addClass("fa fa-exclamation-circle");
384                alert.append(notation);
385                alert.append(" " + message);
386                alert.append("<button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"alert\" aria-label=\"Close\"></button>");
387                let error = $("<div>").addClass("error").html(alert);
388                $(targetBlock).prepend(error);
389                
390                
391                helpers.scrollTo(targetBlock);
392            }
393            
394        },
395        displaySuccess: function (targetBlock, message) {
396            
397            // 1. clear
398            helpers.clearMessages(targetBlock);
399            
400            message = helpers.empty(message) ? "Une erreur inconnue s'est produite" : message;
401            
402            if (message.includes("alert-success")) {
403                return $(targetBlock).prepend(message);
404            }
405            
406            // 2. display
407            let alert = $("<div>").addClass("alert alert-success");
408            let notation = $("<i>").addClass("fa fa-exclamation-circle");
409            alert.append(notation);
410            alert.append(" " + message);
411            alert.append("<button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"alert\" aria-label=\"Close\"></button>");
412            
413            return $(targetBlock).prepend(alert);
414            
415        },
416        
417        /**
418         * Validate the data coming from server side(PHP)
419         *
420         * The data coming from PHP should be something like this:
421         *      data = [error = "some html code", success = "some html code", data = "some html code", redirect = "link"];
422         *
423         * @return  boolean
424         * @param result
425         * @param targetBlock
426         * @param errorFunc
427         * @param errorType
428         * @param returnVal
429         */
430        validateData: function (result, targetBlock, errorFunc, errorType, returnVal) {
431            
432            // 1. clear all existing error or success messages
433            helpers.clearMessages(targetBlock);
434            
435            // 2. Define and extend jQuery functions required to display the error.
436            if (errorFunc === "html") errorFunc = helpers.html;
437            else if (errorFunc === "after") errorFunc = helpers.after;
438            else errorFunc = helpers.html;
439            
440            // 3. check if result is empty
441            if (helpers.empty(result)) {
442                helpers.displayError(targetBlock);
443                return false;
444            }
445            
446            // If there was a redirection
447            else if (!helpers.empty(result.redirect)) {
448                helpers.redirectTo(result.redirect);
449                return false;
450            }
451            
452            // If there was errors encountered and sent from the server, then display it
453            else if (!helpers.empty(result.error)) {
454                
455                if (errorType === "default" || helpers.empty(errorType)) {
456                    errorFunc(targetBlock, result.error);
457                } else if (errorType === "row") {
458                    let td = $("<td>").attr("colspan", "5");
459                    errorFunc(targetBlock, $(td).html(result.error));
460                }
461                
462                return false;
463            } else {
464                
465                if (returnVal === "success" && helpers.empty(result.success)) {
466                    helpers.displayError(targetBlock);
467                    return false;
468                } else if (returnVal === "data" && helpers.empty(result.data)) {
469                    helpers.displayError(targetBlock);
470                    return false;
471                } else if (returnVal !== "data" && returnVal !== "success") {
472                    helpers.displayError(targetBlock);
473                    return false;
474                }
475            }
476            
477            return true;
478        },
479        
480        validateURL: function (url) {
481            return /^((http|https):\/\/)(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(url);
482        },
483        
484        toggle: function () {
485            if (typeof $.fn.bootstrapToggle === 'function') {
486                
487                $("input[data-toggle=toggle]").each(function (e) {
488                    let target = $(this);
489                    if (!target.parent().hasClass("toggle")) {
490                        target.bootstrapToggle();
491                    }
492                });
493            }
494        },
495        
496        
497    };
498    
499    
500    $("body").on("submit", ".agenda-filter", function (e) {
501        e.preventDefault();
502        let form = $(this);
503        let btnForm = form.find("[type=submit]");
504        $(".cua-list-events").attr("aria-busy", true);
505        ajax.send(
506            cuaAgendaOption.ajax_url,
507            {
508                action: "filterAgenda",
509                date_debut: $(this).find('input[name=date_debut]').val(),
510                date_fin: $(this).find('input[name=date_fin]').val(),
511            },
512            function (result) {
513                form.closest(".cua-wp-agenda").find(".cua-list-events").html(result.data.list).removeAttr("aria-busy");
514                $(".agenda-filter .controls button").removeAttr("aria-pressed").find("i").attr("class", "fa fa-square");
515                btnForm.attr("aria-pressed", true)
516                $(".cua-list-events .cua-wp-agenda-event:first-of-type").attr("tabindex", -1).focus();
517            },
518            form.closest(".cua-wp-agenda").find(".cua-list-events"),
519        );
520        
521    })
522        .on("click", ".agenda-filter .controls button", function (e) {
523            e.preventDefault();
524            let btn = $(this);
525            let form = btn.closest("form");
526            let btnForm = form.find("[type=submit]");
527    
528            $(".cua-list-events").attr("aria-busy", true);
529            ajax.send(
530                cuaAgendaOption.ajax_url,
531                {action: "filterAgenda", filter: $(this).data("filter")},
532                function (result) {
533                    form.closest(".cua-wp-agenda").find(".cua-list-events").html(result.data.list).removeAttr("aria-busy");
534                    $(".agenda-filter .controls button").removeAttr("aria-pressed").find("i").attr("class", "fa fa-square");
535                    btn.attr("aria-pressed", true).find("i").toggleClass(["fa-square-check","fa-square"]);
536                    btnForm.removeAttr("aria-pressed");
537                    $(".cua-list-events .cua-wp-agenda-event:first-of-type").attr("tabindex", -1).focus();
538    
539                },
540                form.closest(".cua-wp-agenda").find(".cua-list-events"),
541            );
542        })
543    
544}(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.