source: t29-www/shared/js-v6/pagescripts/startseite.js @ 434

Last change on this file since 434 was 434, checked in by sven, 11 years ago

Anmeldung: Buttons ersetzt druch "Anmelden"-Icon mit Textkombination
in linker Spalte.

File size: 4.5 KB
Line 
1/**
2 * Ein bisschen Dynamik-Funktionalitaet fuer die Startseite
3 *
4 **/
5
6$(function() {
7        // Archiv-Button
8        $("a.archiv-btn").toggle(function(){
9                $('#termine .archiv').slideDown();
10                //$(this).slideUp();
11                $(this).text("Vergangene Termine ausblenden");
12        }, function() {
13                $('#termine .archiv').slideUp();
14                $(this).text("Vergangene Termine einblenden");
15        });
16       
17        // Anmelde-Button
18        anmeldung_zeigen = function() {
19                // rausfinden, ob Funktion durch Button in einem konkreten Termin aufgerufen wurde
20                $termin = $(this).closest(".termin");
21                called_with_termin = $termin.length;
22               
23                $anmeldebox = $('<div class="anmelde-maske dynamisch"><h2>Anmelden</h2><p>Hier können Sie sich für eine Veranstaltung anmelden</p></div>');
24                $.get('/de/anmeldung.php?ajax', function(data) {
25                        form = $(data).find(".anmelde-maske").html();
26                        $anmeldebox.append(form);
27                       
28                        // Termine aus Startseite extrahieren
29                        veranstaltungen = $("#termine .box.termin").not(".archiv .termin");
30                       
31                        if(veranstaltungen.length > 1 && !called_with_termin) {
32                                // Input-Box durch Chooser ersetzen
33                                $anmeldebox.find("input[name='veranstaltung']").replaceWith('<select name="veranstaltung"></select>');
34                                $ver_select = $anmeldebox.find("select[name='veranstaltung']");
35                               
36                                $.each(veranstaltungen, function() {
37                                        name = $(this).find('h4').text();
38                                        datum = $(this).find('dd.termin').text();
39                                       
40                                        $('<option/>').text(name).data({
41                                                'ver_element': this,
42                                                'ver_datum': datum
43                                        }).appendTo($ver_select);
44                                });
45                               
46                                $terminbox = $anmeldebox.find("dd.termin");
47                                $terminbox.find("input").replaceWith('<input type="hidden" name="termin">');
48                                $terminbox.append("<span>leer</span>");
49                               
50                                $ver_select.change(function() {
51                                        if(d = $(this).find(':selected').data('ver_datum')) {
52                                                $terminbox.find("input").val(d);
53                                                $terminbox.find('span').text(d);
54                                        }
55                                }).change();
56                        } else if(veranstaltungen.length == 1 || called_with_termin) {
57                                // nur ein Termin angeboten:
58                                // statt chooser einfach fixe Vorgabe machen (keine Auswahlmoeglichkeit)
59                                $anmeldebox.find("input[name='veranstaltung']").val(
60                                        (called_with_termin ? $termin : veranstaltungen).find('h4').text());
61                                $anmeldebox.find("input[name='termin']").val(
62                                        (called_with_termin ? $termin : veranstaltungen).find('dd.termin').text());
63                        }
64                       
65                        // Abbrechen-Button mit Funktion befüllen
66                        anmeldung_abbrechen = function(){
67                                a = confirm("Soll die Anmeldung verworfen werden?");
68                                if(a) {
69                                        $anmeldebox.slideUp(function(){
70                                                $anmeldebox.remove();
71                                        });
72                                        $("a.anmeldung-btn").text("Zu Führung anmelden").off().click(anmeldung_zeigen);
73                                        return false; // ist eh egal da formular geloescht wird
74                                } else return false
75                        };
76                       
77                        $("a.anmeldung-btn").text("Anmeldung abbrechen").off().click(anmeldung_abbrechen);
78                        $anmeldebox.find("input[type=reset]").click(anmeldung_abbrechen);
79                       
80                        // Submit-Button mit lightweight form checking client side befaehigen
81                        $anmeldebox.find("form").submit(function(){
82                                i = ['veranstaltung', 'termin', 'anmelder_name', 'email_adresse'];
83                                $.each(i, function(){
84                                        ie = $anmeldebox.find("input[name='"+this+"']");
85                                        if(/^\s*$/.test(ie.val())) {
86                                                alert("Bitte füllen Sie die Anmeldung vollständig aus");
87                                                ie.focus();
88                                                return false;
89                                        }
90                                });
91                        });
92                       
93                        $anmeldebox.hide().insertBefore('.archiv');
94                       
95                        if(called_with_termin) {
96                                // $anmeldebox einsliden und hinscrollen, weil man sich ja weiter oben befindet
97                                $anmeldebox.show();
98                                $("html,body").animate({
99                                        scrollTop: $anmeldebox.offset().top
100                                }, 1200);
101                               
102                        } else {
103                                // $anmeldebox sofort einsliden, weil Button in Buttonbox genau da ist wo Anmeldemaske.
104                                $anmeldebox.slideDown();
105                        }
106                       
107                        // Bugfix: Recaptcha kann nicht per JavaScript inserted werden, muss also
108                        // per AJAX nachgeladen werden
109                        t29_recaptcha_insert_id = "t29-recaptcha-insert";
110                        $captcha_box = $anmeldebox.find(".t29-recaptcha").attr("id", t29_recaptcha_insert_id);
111                        publickey = $anmeldebox.find(".t29-recaptcha").data("publickey");
112                        if($captcha_box.length) // only load if captchas enabled
113                            t29.load.js("http://www.google.com/recaptcha/api/js/recaptcha_ajax.js", function() {
114                                 Recaptcha.create(publickey, t29_recaptcha_insert_id, {
115                                        theme: "clean",
116                                        callback: Recaptcha.focus_response_field
117                                 });
118                        });
119                });
120               
121                // + load css
122                t29.load.pagestyle("anmeldung");
123               
124                // Don't follow link
125                return false;
126        };
127        $("a.anmeldung-btn, a.anmeldung").click(anmeldung_zeigen);
128        //$("dd.anmeldung a").click(anmeldung_zeigen);
129});
Note: See TracBrowser for help on using the repository browser.
© 2008 - 2013 technikum29 • Sven Köppel • Some rights reserved
Powered by Trac
Expect where otherwise noted, content on this site is licensed under a Creative Commons 3.0 License