PageSourceSearch

https://volleybretagne.fr/components/com_dropfiles/assets/js/search_filter.js

js volleybretagne.fr collected 2026-10-02 00:02:38 UTC 24,002 bytes, 719 lines download raw bytes

1function initDatepicker() {
2    initDateRange('cfrom', 'cto');
3    initDateRange('ufrom', 'uto');
4
5    initDateRange('mod_cfrom', 'mod_cto');
6    initDateRange('mod_ufrom', 'mod_uto');
7
8}
9
10function initDateRange(fromId, toId) {
11    jQuery("#" + fromId).datetimepicker({
12        format: search_date_format,
13        onShow: function (ct) {
14            this.setOptions({
15                maxDate: jQuery("#" + toId).val() ? jQuery("#" + toId).val() : false
16            })
17        },
18        timepicker: false
19    });
20
21    jQuery("#" + toId).datetimepicker({
22        format: search_date_format,
23        onShow: function (ct) {
24            this.setOptions({
25                minDate: jQuery("#" + fromId).val() ? jQuery("#" + fromId).val() : false
26            })
27        },
28        timepicker: false
29    });
30}
31
32function initSorting() {
33    jQuery('.orderingCol').click(function (e) {
34        e.preventDefault();
35        var ordering = jQuery(this).data('ordering');
36        var direction = jQuery(this).data('direction');
37        ajaxSearch(ordering, direction);
38    });
39
40    jQuery(".list-results #limit").removeAttr("onchange");
41    jQuery(".list-results #limit").change(function (e) {
42        e.preventDefault();
43        ajaxSearch();
44        return false;
45    });
46}
47
48function initTags() {
49    var $ = jQuery;
50    if ($(".input_tags").length > 0) {
51        var taglist = $(".input_tags").val();
52        var tagArr = taglist.split(",");
53        $('.chk_ftags').each(function () {
54            var temp = $(this).val();
55            if (tagArr.indexOf(temp) > -1) {
56                $(this).prop('checked', true);
57                $(this).parent(".tags-item").addClass('active');
58            }
59        });
60    }
61    if ($("#filter_catid").length > 0) {
62        catChange("filter_catid");
63    }
64}
65
66function catChange(filterCat) {
67    var $ = jQuery;
68    var catId = $("#" + filterCat).val();
69    if (catId == "") {
70        $('.chk_ftags').parent().show();
71        return;
72    }
73    if ($('.chk_ftags').length == 0) {
74        return;
75    }
76    var catChilds = getChilds(catId, window.catDatas);
77    var childTags = getChildTags(catChilds);
78    if (childTags.length > 0) {
79
80        $('.chk_ftags').each(function () {
81            var chkVal = $(this).val();
82            if (childTags.indexOf(chkVal) == -1) {
83                $(this).prop('checked', false);
84                $(this).parent().hide();
85            } else {
86                $(this).parent().show();
87            }
88        });
89        fillInputTags();
90    } else {
91        $('.chk_ftags').prop('checked', false);
92        $(".input_tags").val("");
93    }
94    addtoSearchbuttonbelow();
95}
96
97function fillInputTags() {
98    var tagVal = [];
99    jQuery('.chk_ftags').each(function () {
100        if (this.checked && jQuery(this).is(":visible")) {
101            tagVal.push(jQuery(this).val());
102        }
103    });
104    if (tagVal.length > 0) {
105        jQuery(".input_tags").val(tagVal.join(","));
106    } else {
107        jQuery(".input_tags").val("");
108    }
109}
110
111function getChilds(catId, catDatas) {
112    var lft = 0;
113    var rgt = 0;
114    for (i = 0; i < catDatas.length; i++) {
115        if (catDatas[i].id == catId) {
116            lft = catDatas[i].lft;
117            rgt = catDatas[i].rgt;
118        }
119    }
120    var result = [];
121    result.push(catId);
122    for (i = 0; i < catDatas.length; i++) {
123        if (catDatas[i].lft > lft && catDatas[i].rgt < rgt) {
124            result.push(catDatas[i].id);
125        }
126    }
127    return result;
128}
129
130function getChildTags(catChilds) {
131    var result = [];
132    for (i = 0; i < catChilds.length; i++) {
133        if (catChilds[i] in window.catTags) {
134            jQuery.merge(result, window.catTags[catChilds[i]]);
135        }
136    }
137
138    return result;
139}
140
141function ajaxSearch(ordering, direction) {
142    var $ = jQuery;
143    var sform = $("#adminForm");
144
145    // get the form data
146    var formData = {
147        'q': $(sform).find('input[name=q]').val(),
148        'catid': $(sform).find('select[name=catid]').val(),
149        'cattype': $(sform).find('.dropfiles_cat_type').val(),
150        'ftags': $(sform).find('input[name=ftags]').val(),
151        'cfrom': $(sform).find('input[name=cfrom]').val(),
152        'cto': $(sform).find('input[name=cto]').val(),
153        'ufrom': $(sform).find('input[name=ufrom]').val(),
154        'uto': $(sform).find('input[name=uto]').val(),
155    };
156    formData = cleanObj(formData);
157    if (jQuery.isEmptyObject(formData)) {
158        $("#txtfilename").focus();
159        return false;
160    }
161
162    if (typeof ordering != 'undefined') formData.ordering = ordering;
163    if (typeof direction != 'undefined') formData.dir = direction;
164    //pagination
165    if ($(sform).find('input[name=limitstart]').length > 0) {
166        formData.limitstart = $(sform).find('input[name=limitstart]').val();
167    }
168    if ($(sform).find('select[name=limit]').length > 0) {
169        formData.limit = $(sform).find('select[name=limit]').val();
170    }
171
172    if ($(sform).find('input[name=Itemid]').length > 0) {
173        formData.Itemid = $(sform).find('input[name=Itemid]').val();
174    }
175    var filter_url = jQuery.param(formData);
176    window.history.pushState(formData, "", basejUrl + "index.php?option=com_dropfiles&view=frontsearch&" + filter_url);
177
178    formData.view = "frontsearch";
179    formData.format = "raw";
180    $.ajax({
181        type: "POST",
182        url: basejUrl + 'index.php?option=com_dropfiles',
183        data: formData,
184        beforeSend: function () {
185            $("#dropfiles-results").prepend($("#loader").html());
186        }
187    }).done(function (result) {
188        $("#dropfiles-results").html(result);
189        initSorting();
190        dropfilesColorboxInit();
191        showViewOption();
192    });
193}
194
195function openSearchfilter(evt, searchName) {
196    evt.preventDefault();
197
198    var $ = jQuery;
199    var $this = $(evt.target);
200
201    $this.parent().find('.tablinks').removeClass('active');
202    $this.addClass('active');
203
204    $this.parent().parent().find('.dropfiles_tabcontainer .dropfiles_tabcontent').removeClass('active');
205    $this.parent().parent().find('.dropfiles_tabcontainer #' + searchName).addClass('active');
206
207    return false;
208}
209
210function selectdChecktags() {
211    var $ = jQuery;
212    jQuery('li.tags-item').on('click', function () {
213        $(this).toggleClass("active");
214        if ($(this).hasClass("active")) {
215            $(this).children("input[type='checkbox']").prop('checked', true);
216        } else {
217            $(this).children("input[type='checkbox']").prop('checked', false);
218        }
219        var tagVal = [];
220        jQuery(".chk_ftags").each(function () {
221            if ($(this).prop("checked") == true) {
222                tagVal.push($(this).val());
223            }
224        });
225        if (tagVal.length > 0) {
226            jQuery(".input_tags").val(tagVal.join(","));
227        } else {
228            jQuery(".input_tags").val("");
229        }
230    });
231}
232
233function dropfilescancelSelectedCate() {
234    var $, dropfileslCurrentselectedCate;
235    $ = jQuery;
236    dropfileslCurrentselectedCate = $(".categories-filtering .cate-lab");
237    $(".cate-lab .cancel").unbind('click').on('click', function () {
238        if (dropfileslCurrentselectedCate.hasClass('display-cate')) {
239            dropfileslCurrentselectedCate.removeClass('display-cate');
240        }
241        dropfileslCurrentselectedCate.empty();
242        dropfileslCurrentselectedCate.append("<label id='root-cate'>" + Joomla.JText._('COM_DROPFILES_SEARCH_FILES_CATEGORY_FILTERING', 'Files category') + "</label>");
243        $(".categories-filtering #dropfiles-listCate #filter_catid").val('').trigger('change');
244        if($(".categories-filtering .cate-item").hasClass("checked")) {
245            $(".categories-filtering .cate-item").removeClass("checked");
246        } else {
247            if($(".categories-filtering .cate-item").hasClass("choosed")) {
248                $(".categories-filtering .cate-item").removeClass("choosed");
249            }
250        }
251        catChange("filter_catid");
252    });
253}
254
255function dropfilesShowCateReload() {
256    var $, SelectedCateReloadCase, dropfilesdisplayCateReloadCase;
257    $ = jQuery;
258    SelectedCateReloadCase = $(".categories-filtering .cate-item.choosed label").text();
259    if ($(".mod_dropfiles_search .cate-item.choosed label").length) {
260        SelectedCateReloadCase = $(".mod_dropfiles_search .cate-item.choosed label").text();
261    }
262    dropfilesdisplayCateReloadCase = $(".categories-filtering .cate-lab");
263    var selectedCatecontentReloadCase = "<label>" + SelectedCateReloadCase + "</label>";
264    if($(".cate-item.choosed").length > 0) {
265        dropfilesdisplayCateReloadCase.addClass('display-cate');
266        dropfilesdisplayCateReloadCase.empty();
267        dropfilesdisplayCateReloadCase.append(selectedCatecontentReloadCase);
268        if(dropfilesdisplayCateReloadCase.text() !== null ) {
269            dropfilesdisplayCateReloadCase.append('<a class="cancel"></a>');
270        }
271    }
272    dropfilescancelSelectedCate();
273}
274
275function parentFolderIcon() {
276    var $ = jQuery;
277    $("li.cate-item").each(function () {
278        var count = $(this).find('span.child-cate').length;
279        var prelevel = $(this).prev().attr("data-catlevel");
280        var catelevel = $(this).attr("data-catlevel");
281        if((count == 1 && catelevel > prelevel) || (count == 1 && prelevel == 9)) {
282            $(this).prev().addClass("parent-cate");
283        }
284    });
285}
286
287function showCategory() {
288    var $ = jQuery;
289    $(".categories-filtering .cateicon").unbind('click').on('click', function (e) {
290        e.preventDefault();
291        var $this = $(this);
292        var $container = $this.parent();
293        $('#dropfiles-listCate', $container).toggle();
294        $('li.cate-item', $container).unbind('click').on('click', function () {
295            var selected_catid = $(this).data('catid').toString();
296            $('li.cate-item.checked', $container).removeClass("checked");
297            $('li.cate-item', $container).removeClass("choosed");
298
299            $(this).addClass("checked");
300            if ($("#filter_catid", $container).length) {
301                $("#filter_catid option", $container).removeAttr('selected');
302                $("#filter_catid option", $container).each(function () {
303                    var related_catid = $(this).val();
304                    if (related_catid === selected_catid) {
305                        $(this).attr('selected', 'selected');
306                    }
307                });
308                $("#filter_catid", $container).val(selected_catid).trigger("change");
309            }
310            if ($("#search_catid", $container).length) {
311                $("#search_catid option", $container).removeAttr('selected');
312                $("#search_catid option", $container).each(function () {
313                    var related_catid = $(this).val();
314                    if (related_catid === selected_catid) {
315                        $(this).attr('selected', 'selected');
316                    }
317                });
318                $("#search_catid", $container).val(selected_catid).trigger("change");
319            }
320            $('#dropfiles-listCate', $container).hide();
321
322            // Show selected category
323            var dropfilesSelectedCatename = $(".cate-item.checked label", $container).text();
324            var dropfilesdisplayCate = $('.cate-lab', $container);
325            if($('.showitems', $container).length > 0) {
326                $('.show-selected-cate', $container).css("display", "");
327            } else {
328                var selectedCatecontent = "<label>" + dropfilesSelectedCatename + "</label>";
329                $('.show-selected-cate', $container).css("display", "block");
330                if($('.cate-item.checked', $container).length === 1) {
331                    dropfilesdisplayCate.addClass('display-cate');
332                    dropfilesdisplayCate.empty();
333                    dropfilesdisplayCate.append(selectedCatecontent);
334                    if(dropfilesdisplayCate.text() !== null ) {
335                        dropfilesdisplayCate.append('<a class="cancel"></a>');
336                    }
337                }
338            }
339
340            dropfilescancelSelectedCate();
341
342            catChange("filter_catid");
343        });
344
345        $(document).mouseup(function(e) {
346            if (!$(".categories-filtering > .ui-widget").is(e.target) // if the target of the click isn't the container...
347                && !$(".categories-filtering .cateicon").is(e.target)
348                && $(".categories-filtering > .ui-widget").has(e.target).length === 0) // ... nor a descendant of the container
349            {
350                $(".categories-filtering > .ui-widget").hide();
351            }
352        });
353    });
354}
355
356//add class to search button
357function addtoSearchbuttonbelow() {
358    var $ = jQuery;
359    $("div#Tags").each(function () {
360        if ($(this).find('.tags-filtering').length) {
361            $(this).siblings('.box-btngroup-below').addClass("searchboxClass");
362        }
363    });
364}
365
366function dropfilesDateFilter() {
367    var $ = jQuery;
368    $('#Filter').each(function () {
369        if ($(this).find('.dropfiles-date-hidden').length) {
370            $(this).addClass('no-date');
371        } else {
372            $(this).removeClass('no-date');
373        }
374    });
375
376}
377
378function  noTagscase() {
379    var $ =jQuery;
380    if($("#Tags .no-tags").length > 0) {
381        $(".feature .box-btngroup-below").addClass("notags-case");
382    } else {
383        $(".feature .box-btngroup-below").removeClass("notags-case");
384    }
385}
386
387function  initdefaultOption() {
388    var $ = jQuery;
389    var checkitem = $('.mediaTableMenu .media-item');
390    var showList = [];
391    checkitem.each(function () {
392        if ($(this).prop("checked") === true) {
393            showList.push($(this).val());
394        }
395    });
396    if (showList.length > 0) {
397        jQuery("#total-media-list").val(showList.join(","));
398    } else {
399        jQuery("#total-media-list").val("");
400        showList = new Array('version','size','hits','date_added','download');
401    }
402    var desc = "";
403    var ver = "";
404    var size = "";
405    var hits = "";
406    var dateadd = "";
407    var download = "";
408    for(var i = 0; i<showList.length;i++) {
409        if(showList[i] == "description" ) {
410            desc = "description";
411        }
412        if(showList[i] == "version") {
413            ver = "version";
414        }
415        if(showList[i] == "size") {
416            size = "size";
417        }
418        if(showList[i] == "hits") {
419            hits = "hits";
420        }
421        if(showList[i] == "date_added") {
422            dateadd = "date_added";
423        }
424        if(showList[i] == "download") {
425            download = "download";
426        }
427    }
428    if(desc === "description") {
429        jQuery(".file_desc").removeClass('filehidden');
430    } else {
431        jQuery(".file_desc").addClass('filehidden');
432    }
433    if (ver === "version") {
434        jQuery(".file_version").removeClass('filehidden');
435    } else {
436        jQuery(".file_version").addClass('filehidden');
437    }
438    if (size === "size") {
439        jQuery(".file_size").removeClass('filehidden');
440    } else {
441        jQuery(".file_size").addClass('filehidden');
442    }
443    if (hits === "hits") {
444        jQuery(".file_hits").removeClass('filehidden');
445    } else {
446        jQuery(".file_hits").addClass('filehidden');
447    }
448    if (dateadd === "date_added") {
449        jQuery(".file_created").removeClass('filehidden');
450    } else {
451        jQuery(".file_created").addClass('filehidden');
452    }
453    if (download === "download") {
454        jQuery(".file_download").removeClass('filehidden');
455    } else {
456        jQuery(".file_download").addClass('filehidden');
457    }
458}
459
460function showViewOption() {
461    var $ = jQuery;
462    $('.mediaTableMenu').on('click', function () {
463        $(this).addClass('showlist');
464        $('.mediaTableMenu .media-item').on('click', function () {
465            initdefaultOption();
466            if($(".list-results .file_desc").hasClass("filehidden") && $(".list-results .file_created").hasClass("filehidden") ) {
467                $(".list-results .file_download").addClass("file_download_inline");
468            } else {
469                $(".list-results .file_download").removeClass("file_download_inline");
470            }
471            var checkall = $(".list-results .table thead th");
472            if(!checkall.hasClass("filehidden")) {
473                $(".list-results .file_title").addClass("adv_file_tt");
474            } else {
475                $(".list-results .file_title").removeClass("adv_file_tt");
476            }
477        });
478
479        $(document).mouseup(e => {
480            if (!$(".mediaTableMenu").is(e.target) // if the target of the click isn't the container...
481                && $(".mediaTableMenu").has(e.target).length === 0) // ... nor a descendant of the container
482            {
483                $(".mediaTableMenu").removeClass('showlist');
484            }
485        });
486    });
487}
488
489function showtbResultonMobile() {
490    if(jQuery("#dropfiles-results").width() <=420) {
491        jQuery(".file_version").css("display", "none");
492        jQuery(".file_size").css("display", "none");
493        jQuery(".file_hits").css("display", "none");
494        jQuery(".file_created").css("display", "none");
495    }
496}
497
498jQuery(document).ready(function ($) {
499    initDatepicker();
500    initSorting();
501    initTags();
502
503    $(".chk_ftags").click(function () {
504        fillInputTags();
505    });
506    $("#filter_catid").change(function () {
507        catChange("filter_catid");
508        var filter_cat = $(this).find(':selected').val();
509        var filter_cattype = $(this).find('option[value="' + filter_cat + '"]').data('type');
510        $('.dropfiles_cat_type').val(filter_cattype);
511    });
512    $("#search_catid").change(function () {
513        catChange("search_catid");
514    });
515
516    var oldJoomlaSubmit;
517    if (typeof Joomla != 'undefined') {
518        oldJoomlaSubmit = Joomla.submitform;
519        Joomla.submitform = function ($task) {
520            ajaxSearch();
521            if ($task) {
522                oldJoomlaSubmit($task);
523            }
524        };
525    }
526    $("#adminForm.dropfiles_search").submit(function (e) {
527        e.preventDefault();
528
529        return false;
530    });
531    jQuery('.icon-date').click(function () {
532        var txt = jQuery(this).attr('data-id');
533        jQuery('#' + txt).datetimepicker('show');
534    });
535
536    jQuery('.feature-toggle').click(function () {
537        var container = jQuery(this).parents('.by-feature');
538        jQuery(container).find('.feature').slideToggle('slow', function () {
539            jQuery(".feature-toggle").toggleClass(function () {
540                if (jQuery(this).is(".toggle-arrow-up-alt")) {
541                    return "toggle-arrow-down-alt";
542                } else {
543                    return "toggle-arrow-up-alt";
544                }
545            });
546        });
547    });
548
549    //ajax filters
550    $("#btnsearchbelow, #btnsearch").click(function (e) {
551        e.preventDefault();
552        ajaxSearch();
553    });
554
555    $("#mod_btnReset").click(function (e) {
556        e.preventDefault();
557        resetFilters();
558    });
559
560    $("#btnReset").click(function (e) {
561        e.preventDefault();
562        resetFilters();
563        $("#dropfiles-results").html("");
564    });
565
566    jQuery('.list-results table tr td a.file-item').click(function (e) {
567        e.preventDefault();
568        var popupid = "#popup-" + jQuery(this).attr('id');
569        var dd = jQuery(popupid).dialog({
570            minHeight: 250,
571            minWidth: 250,
572            modal: true,
573            draggable: false,
574            resizable: false
575        });
576        jQuery('.ui-widget-overlay').click(function () {
577            dd.dialog('close');
578        });
579        return false;
580    });
581
582    resetFilters = function (formSelect) {
583
584        var sform = $("#adminForm");
585        if (typeof formSelect != 'undefined') {
586            sform = $(formSelect);
587        }
588
589        var inputs = $(sform).find('input, select');
590        $.each(inputs, function (i, el) {
591            var eType = $(el).attr('type');
592            if (eType == 'checkbox') {
593                $(el).prop('checked', false);
594            } else {
595                if ($(el).attr('name') != 'task' && $(el).attr('name') != 'Itemid') {
596                    $(el).val("").trigger('change').trigger("liszt:updated").trigger("chosen:updated");
597                    if ($(el).hasClass("tagit")) {
598                        $(el).tagit("removeAll");
599                    }
600                }
601            }
602
603        });
604        $('.tags-item').removeClass('active');
605        if($(".cate-lab .cancel").length === 1) {
606            $('.cate-item').removeClass('checked');
607            var dropfileslCurrentselectedCate = $(".categories-filtering .cate-lab");
608            if (dropfileslCurrentselectedCate.hasClass('display-cate')) {
609                dropfileslCurrentselectedCate.removeClass('display-cate');
610            }
611            dropfileslCurrentselectedCate.empty();
612            dropfileslCurrentselectedCate.append("<label id='root-cate'>" + Joomla.JText._('COM_DROPFILES_SEARCH_FILES_CATEGORY_FILTERING', 'Files category') + "</label>");
613        }
614    };
615
616    populateFilters = function (filters) {
617
618        var sform = $("#adminForm");
619        $.each(filters, function (f, v) {
620            var els = $(sform).find('input[name=' + f + '], select[name=' + f + ']');
621            if (els.length > 0) {
622                $(els).val(v).trigger('change').trigger("liszt:updated").trigger("chosen:updated");
623                if ($(els).hasClass("tagit")) {
624                    $(els).tagit("removeAll");
625                    if (v != "") {
626                        var tgs = v.split(",");
627                        for (var i = 0; i < tgs.length; i++) {
628                            $(els).tagit("createTag", tgs[i]);
629                        }
630                    }
631
632                }
633            }
634        });
635    };
636
637    //Remove propery with empty value
638    cleanObj = function (obj) {
639        for (var k in obj) {
640            if (obj.hasOwnProperty(k)) {
641                if (!obj[k]) delete obj[k];
642            }
643        }
644        return obj;
645    };
646
647    //back on browser
648    window.addEventListener('load', function () {
649        setTimeout(function () {
650            jQuery(window).on('popstate', function (event) {
651                var state = event.originalEvent.state;
652                resetFilters();
653                if (state != null) {
654                    var formData = state;
655                    populateFilters(formData);
656                    formData.view = "frontsearch";
657                    formData.format = "raw";
658                    $.ajax({
659                        type: "POST",
660                        url: basejUrl + 'index.php?option=com_dropfiles',
661                        data: formData,
662                    }).done(function (result) {
663                        $("#dropfiles-results").html(result);
664                    });
665                } else {
666                    $("#dropfiles-results").html("");
667                }
668            });
669        }, 100);
670    }, false);
671
672    //get checktags
673    selectdChecktags();
674
675    //show cate
676    showCategory();
677
678    //display selected category when reload.
679    dropfilesShowCateReload();
680
681    //Search category
682    $('#dropfilesCategorySearch').on('keydown keyup', function(e) {
683        if (e.keyCode === 13 || e.which === 13 || e.key === 'Enter')
684        {
685            e.preventDefault();
686            return;
687        }
688        var scateList, filter, labl, txtValue;
689        var $this = $(this);
690        scateList = $("li.cate-item", $this.parent().parent());
691
692        filter =  $this.val().toUpperCase();
693        scateList.each(function () {
694            labl = $(this).find("label");
695            txtValue = labl.text().toUpperCase();
696            if (txtValue.indexOf(filter) > -1) {
697                $(this).css("display","");
698            } else {
699                $(this).css("display", "none");
700            }
701        });
702    });
703
704    //Set icons
705    parentFolderIcon();
706
707    //get searchbox
708    addtoSearchbuttonbelow();
709
710    dropfilesDateFilter();
711
712    noTagscase();
713
714    initdefaultOption();
715
716    showViewOption();
717
718    showtbResultonMobile();
719});

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.