PageSourceSearch

https://www.bundesfreiwilligendienst.de/typo3conf/ext/bfd_einsatzs…/bfd_einsatzstellensuche.js?1790583654

js bundesfreiwilligendienst.de collected 2026-10-02 02:54:42 UTC 15,536 bytes, 379 lines download raw bytes

1$(document).ready(function(){
2
3    // Sorting for result table
4    $('#filterEinsatzstelle').change(function () {
5       document.getElementById('azEinsatzstelle').submit();
6    });
7
8    $('.toggle-detailsearch').click(function () {
9        $(this).toggleClass('open');
10        $(".togglebox-detailsearch").slideToggle(500).toggleClass('show-box');
11    }, function () {
12        $(this).toggleClass('open');
13        $(".togglebox-detailsearch").slideToggle(500).toggleClass('show-box');
14    });
15
16    // disable checkboxes if "alle" is checked
17    $('.tx-bfd-einsatzstellensuche .sectionBox').click(function () {
18        var checkboxAlle = $('#alle');
19        var checkboxNotAlle = $('.sectionBox:not(#alle)');
20        if(checkboxAlle.is(':checked'))
21            checkboxNotAlle.prop( "checked", false ).prop( "disabled", true );
22        else
23            checkboxNotAlle.prop( "disabled", false );
24    });
25
26    // Updates results per page for list view
27    // submits form if another option is selected
28    $('form .filter-update').change(function () {
29        $(this).closest( "form" ).submit();
30    });
31
32    // Switch-Toggle für Verfügbarkeit von Einsatzstellen/Einsatzplätzen
33    var switchToggle = function(formId) {
34
35        var on = $('.on');
36        var off = $('.off');
37        var checkbox = $('.verfuegbarkeit-check');
38
39        on.click(function () {
40            checkbox.prop('checked', true);
41
42            $(formId).submit();
43        });
44
45        off.click(function () {
46            checkbox.prop('checked', false);
47            $(formId).submit();
48        });
49    };
50
51    if($('#updateStammdaten').length) {
52        switchToggle('#updateStammdaten');
53    }
54
55    // Submit form for sorting
56    // @todo Diese Funktionalität darf nur für die Filter funktionieren, nicht für das Formular
57    // var submitForm = function (formId) {
58    //
59    //     var select = $('select');
60    //
61    //     select.change(function () {
62    //        $(formId).submit();
63    //     });
64    // };
65
66    // Buchstabenfilter
67    var filterSelect = $('#filterOrt');
68
69    filterSelect.change(function() {
70
71        var url = filterSelect.attr('data-url');
72        var selectedVal = filterSelect.val();
73        var stringToReplace = 'zuErsetzenderBuchstabe';
74
75
76        var urlWithParameter = url.replace(stringToReplace, selectedVal);
77
78        window.open(urlWithParameter);
79
80        // f:uri -> einsatzstellensuche-mit-karte/einsatzstelle-suchen.html?tx_bfdeinsatzstellensuche_einsatzstellensuche%5Bfeld%5D=ort&tx_bfdeinsatzstellensuche_einsatzstellensuche%5Bbuchstabe%5D=buchstabe&tx_bfdeinsatzstellensuche_einsatzstellensuche%5Baction%5D=filter&tx_bfdeinsatzstellensuche_einsatzstellensuche%5Bcontroller%5D=Suchen%5CEinsatzstellensuche&cHash=b17219dcc07eec14072fd1ad80b77fe7
81        // einsatzstellensuche-mit-karte/einsatzstelle-suchen.html?tx_bfdeinsatzstellensuche_einsatzstellensuche%5Bfeld%5D=ort&tx_bfdeinsatzstellensuche_einsatzstellensuche%5Bbuchstabe%5D=C&tx_bfdeinsatzstellensuche_einsatzstellensuche%5Baction%5D=filter&tx_bfdeinsatzstellensuche_einsatzstellensuche%5Bcontroller%5D=Suchen%5CEinsatzstellensuche&cHash=941fdca420583cb919878bbac7b26888
82
83
84    });
85
86
87    if($('#az-einsatzstelle').length) {
88        submitForm('#az-einsatzstelle');
89    }
90
91    if($( ".datepicker-field" ).length) {
92        $( function() {
93            $.datepicker.setDefaults($.datepicker.regional['de']);
94            $( ".datepicker-field.startdate" ).datepicker({
95                // prevText: "zurück",
96                // nextText: "vor",
97                onSelect: function(selected) {
98                    $(".datepicker-field.enddate").datepicker("option","minDate", selected)
99                }
100            });
101            $( ".datepicker-field.enddate" ).datepicker({
102                // prevText: "zurück",
103                // nextText: "vor",
104                minDate: 0
105            });
106        });
107    }
108
109    const checkboxeinsatzstelle = document.getElementById('geodatenManuell');
110
111        document.addEventListener('DOMContentLoaded', function () {
112            if (checkboxeinsatzstelle.checked) {
113                document.getElementById('geodatenBreitengrad').readOnly = false
114                document.getElementById('geodatenLaengengrad').readOnly = false
115            } else {
116                document.getElementById('geodatenBreitengrad').readOnly = true
117                document.getElementById('geodatenLaengengrad').readOnly = true
118        }
119    });
120    if (document.getElementById('geodatenManuell')) {
121        checkboxeinsatzstelle.addEventListener('change', function (event) {
122            if (event.target.checked) {
123                document.getElementById('geodatenBreitengrad').readOnly = false
124                document.getElementById('geodatenLaengengrad').readOnly = false
125            } else {
126                document.getElementById('geodatenBreitengrad').readOnly = true
127                document.getElementById('geodatenLaengengrad').readOnly = true
128            }
129        });
130    }
131
132
133    var emptyModalHtml = '<div class="modaleinstazstellensuche fade" tabindex="-1" role="dialog">' +
134        '    <div class="modal-content">' +
135        '      <div class="modal-header">' +
136        '        <button type="button" class="close" data-dismiss="modal">&times;</button>' +
137        '        <h1>HEADLINE</h1>' +
138        '      </div>' +
139        '      <div class="modal-body">' +
140        '         Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa.' +
141        '      </div>' +
142        '      <div class="modal-footer">' +
143        '        <button class="btn-sm btn-danger" data-dismiss="modal" aria-hidden="true">CANCEL</button>' +
144        '        <button class="btn btn-primary">OK</button>' +
145        '      </div>' +
146        '  </div>' +
147        '</div>';
148
149
150    $('a.bfd-einsatzstellensuche-modal').click(function(event) {
151
152        event.preventDefault();
153
154        // Fetching parameters
155        var _this = this,
156            cntHeadline = $(_this).data('modal-headline') || 'Das ist meine Überschrift',
157            cntCopytext = $(_this).data('modal-copytext') || '<p>Hallo. Ich bin ein <strong>kleiner</strong> Blindtext.<br>
157Und zwar schon so lange ich denken kann. Es war nicht leicht zu verstehen, was es bedeutet, ein blinder Text zu sein: Man macht keinen Sinn. Wirklich keinen Sinn.</p>',
158            btnOkay     = $(_this).data('modal-okay')     || 'okay',
159            btnCancel   = $(_this).data('modal-cancel')   || 'cancel',
160            actUrl      = $(_this).data('modal-action')   || 'http://www.google.de'
161        ;
162
163        // Initialize
164        var modal = $(emptyModalHtml).hide();
165
166        // Replace parameter
167        $(modal).find('.modal-header h1').text(cntHeadline);
168        $(modal).find('.modal-body').html(cntCopytext);
169        $(modal).find('.modal-footer .btn-primary').text(btnOkay);
170        $(modal).find('.modal-footer .btn-danger').text(btnCancel);
171
172        // Bind actions
173        $(modal).find('.modal-footer .btn-primary').click(function () {
174            location.href = actUrl;
175        });
176
177        $(modal).on('hidden.bs.modal', function (e) {
178            $(modal).remove();
179        });
180
181        // Append
182        $(_this).closest( ".tx-bfd-einsatzstellensuche" ).append(modal);
183
184        // Show
185        $(modal).modal('show');
186    });
187
188    $('.tx-bfd-einsatzstellensuche a.collapse-all').click(function(event) {
189        event.preventDefault();
190        $('.tx-bfd-einsatzstellensuche .collapse').collapse({ toggle: false });
191        if ($(this).data('collapseall') === 'hidden') {
192            $('.tx-bfd-einsatzstellensuche .collapse').collapse('show');
193            $(this).data('collapseall', 'shown');
194            $(this).html($(this).data('texthide') + '<i class="fa fa-info-circle"></i>');
195        } else {
196            $('.tx-bfd-einsatzstellensuche .collapse').collapse('hide');
197            $(this).data('collapseall', 'hidden');
198            $(this).html($(this).data('textshow') + '<i class="fa fa-info-circle"></i>');
199        }
200    });
201
202    // Common datepicker
203    $.datepicker.setDefaults($.datepicker.regional['de']);
204    $( ".datepicker" ).datepicker();
205    
206    /**
207     * Einsatzlpatz neu/bearbeiten magie
208     *
209     * Anforderung hierbei ist, einen Hinweistext einzublenden, der den "Spätester Dienstbeginn"
210     * mit Text anzeigt. Herausforderung ist, wenn das Formular einen Fehler besitzt und neu geladen wird,
211     * muss der Dienstbeginn via onLoad in den Hinweistext geschrieben werden, da dieser ggf.
212     * aus dem Form-Kontext kommt. Zudem darf es keinen Text geben, wenn es keinen Dienstbeginn gibt.
213     */
214    let dienstBeginnVonFormField = '.tx-bfd-einsatzstellensuche #dienstbeginnVon',
215        dienstBeginnBisFormField = '.tx-bfd-einsatzstellensuche #dienstbeginnBis',
216
217        // Convert date object to string
218        dateConvertToGermanString = function (dateObject) {
219            let string = '',
220                dateDay = '',
221                dateMonth = '';
222
223            if (typeof dateObject == 'object') {
224                dateDay = (dateObject.getDate().toString().length < 2) ? '0' + dateObject.getDate() : dateObject.getDate();
225                dateMonth = parseInt(dateObject.getMonth().toString()) + 1;
226                dateMonth = dateMonth < 10 ? '0' + dateMonth : dateMonth;
227                string = dateDay + '.' + dateMonth + '.' + dateObject.getFullYear();
228            }
229            return string;
230        },
231
232        // Convert string to date object
233        dateConvertFromGermanString = function (dateString) {
234            let dateArray = dateString.split("."),
235                dateObject = null;
236
237            if (dateArray.length === 3) {
238                dateObject = new Date(dateArray[2], dateArray[1] - 1, dateArray[0], 0,0,0,0);
239            }
240            return dateObject;
241        },
242
243        // Adding days to date object
244        dateAddDay = function (dateObject, day) {
245            let cloneDateObject = new Date(dateObject.getTime()),
246                milliseconds = cloneDateObject.setDate(cloneDateObject.getDate() + day);
247            return new Date(milliseconds);
248        },
249
250        // Adding month to date object
251        dateAddMonth = function (dateObject, month) {
252            let cloneDateObject = new Date(dateObject.getTime()),
253                milliseconds = cloneDateObject.setMonth(cloneDateObject.getMonth() + month);
254            return new Date(milliseconds);
255        },
256
257        // check if dateObjectBis > dateObjectVon + 6 month
258        checkIfBisLaterThanMax = function (dateObjectVon, dateObjectBis) {
259            let dateObjectMax = dateAddMonth(dateObjectVon, 6);
260            return dateObjectBis.getTime() > dateObjectMax;
261        },
262
263        // show notice: later than
264        showNoticeLaterThan = function (dateObjectVon) {
265            let dateObjectMax = dateAddMonth(dateObjectVon, 6);
266            // hide expire notice if shown
267            $('.tx-bfd-einsatzstellensuche .notice-disable').hide();
268            // update date
269            $('.tx-bfd-einsatzstellensuche .notice-later-than .dienstbeginnLaterThan').html(
270                dateConvertToGermanString(dateObjectMax)
271            );
272            // show laterThan notice
273            if ($('.tx-bfd-einsatzstellensuche .notice-later-than').not(":visible")) {
274                $('.tx-bfd-einsatzstellensuche .notice-later-than').fadeIn();
275            }
276        },
277
278        // show notice: expire
279        showNoticeExpire = function (dateObjectBis) {
280            let dateObjectExpire = dateAddDay(dateObjectBis, 14);
281            // hide laterThan notice
282            $('.tx-bfd-einsatzstellensuche .notice-later-than').hide();
283            // update date
284            $('.tx-bfd-einsatzstellensuche .notice-disable .dienstbeginnBisHinweis').html(
285                dateConvertToGermanString(dateObjectExpire)
286            );
287            // show expire notice if shown
288            if ($('.tx-bfd-einsatzstellensuche .notice-disable').not(":visible")) {
289                $('#dienstbeginn-bis-info').collapse({ toggle: false });
290                $('#dienstbeginn-bis-info').collapse('hide');
291                $('.tx-bfd-einsatzstellensuche .notice-disable').fadeIn();
292            }
293        },
294
295        dienstbeginnIndicator = function () {
296            let dateObjectVon = dateConvertFromGermanString($(dienstBeginnVonFormField).val()),
297                dateObjectBis = dateConvertFromGermanString($(dienstBeginnBisFormField).val()),
298                datepickerEndDate = '.tx-bfd-einsatzstellensuche .datepicker-field.enddate';
299
300            if (dateObjectVon !== null) {
301                let dateObjectMax = dateAddMonth(dateObjectVon, 6);
302                $(datepickerEndDate).datepicker("option", "minDate", dateConvertToGermanString(dateObjectVon));
303                // $(datepickerEndDate).datepicker("option", "maxDate", dateConvertToGermanString(dateObjectMax));
304            }
305
306            if (dateObjectVon !== null && dateObjectBis !== null) {
307                if (checkIfBisLaterThanMax(dateObjectVon, dateObjectBis)) {
308                    showNoticeLaterThan(dateObjectVon);
309                } else {
310                    showNoticeExpire(dateObjectBis);
311                }
312            } else {
313                $('.tx-bfd-einsatzstellensuche .notice-disable').hide();
314                $('.tx-bfd-einsatzstellensuche .notice-later-than').hide();
315                $(datepickerEndDate).datepicker("option", "minDate", null);
316                // $(datepickerEndDate).datepicker("option", "maxDate", null);
317            }
318        };
319
320    if ( $(".tx-bfd-einsatzstellensuche form[name='formEinsatzplatz']").length ) {
321
322        // disable onSelect option
323        $('.tx-bfd-einsatzstellensuche .datepicker-field.startdate').datepicker({
324            onSelect: null
325        });
326
327        dienstbeginnIndicator();
328
329        // onChange (Bei änderung des Feldes soll der Text geändert werden)
330        $(dienstBeginnVonFormField).change(function (event) {
331            dienstbeginnIndicator();
332        });
333
334        $(dienstBeginnBisFormField).change(function (event) {
335            dienstbeginnIndicator();
336        });
337
338        // Togle more link
339        $('#accDienstbeginnBisHinweis a').click(function (event) {
340            $('#accDienstbeginnBisHinweis').collapse('hide');
341            $('.accDienstbeginnBisHinweis').addClass('collapsed');
342            event.preventDefault();
343        });
344    }
345
346    // Show modal "stammdaten incomplete" if rendered
347    if (document.getElementById('bafza-est-incomplete')) {
348        $('#bafza-est-incomplete').modal('show');
349    }
350
351});
352
353function showOnClick(elementID) {
354
355    var element = $("#" + elementID);
356    element.toggleClass('show-foldout')
357    if (element.hasClass('show-foldout')) {
358        $('.toggle-map').find("i").removeClass("fa-caret-down")
359        $('.toggle-map').find("i").addClass("fa-caret-right")
360        $('.toggle-map').find("span").html(' Ergebnisse auf Karte anzeigen');
361        element.animate({
362            opacity: 0,
363        }, 1 );
364        element.css("visibility","hidden");
365        element.css("z-index","-9999");
366        element.css("position","absolute");
367    } else {
368        $('.toggle-map').find("i").removeClass("fa-caret-right")
369        $('.toggle-map').find("i").addClass("fa-caret-down")
370        $('.toggle-map').find("span").html(' Karte ausblenden');
371        element.animate({
372            opacity: 1,
373        }, 1500 );
374        element.css("visibility","visible");
375        element.css("z-index","1");
376        element.css("position","relative");
377    }
378
379}

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.