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

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

Anmeldung/Startseite:

  • Anmeldebutton hübscher gestaltet
  • Bestätigungsmail und Spamschutz-Captcha deaktiviert und Möglichkeit zum späteren Aktivieren eingebaut
File size: 3.8 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                $anmeldebox = $('<div class="anmelde-maske dynamisch"><h2>Anmelden</h2><p>Hier können Sie sich für eine Veranstaltung anmelden</p></div>');
20                $.get('/de/anmeldung.php?ajax', function(data) {
21                        form = $(data).find(".anmelde-maske").html();
22                        $anmeldebox.append(form);
23                       
24                        // Termine aus Startseite extrahieren
25                        veranstaltungen = $("#termine .box.termin").not(".archiv .termin");
26                       
27                        if(veranstaltungen.length > 1) {
28                                // Input-Box durch Chooser ersetzen
29                                $anmeldebox.find("input[name='veranstaltung']").replaceWith('<select name="veranstaltung"></select>');
30                                $ver_select = $anmeldebox.find("select[name='veranstaltung']");
31                               
32                                $.each(veranstaltungen, function() {
33                                        name = $(this).find('h4').text();
34                                        datum = $(this).find('dd.termin').text();
35                                       
36                                        $('<option/>').text(name).data({
37                                                'ver_element': this,
38                                                'ver_datum': datum
39                                        }).appendTo($ver_select);
40                                });
41                               
42                                $terminbox = $anmeldebox.find("dd.termin");
43                                $terminbox.find("input").replaceWith('<input type="hidden" name="termin">');
44                                $terminbox.append("<span>leer</span>");
45                               
46                                $ver_select.change(function() {
47                                        if(d = $(this).find(':selected').data('ver_datum')) {
48                                                $terminbox.find("input").val(d);
49                                                $terminbox.find('span').text(d);
50                                        }
51                                }).change();
52                        } else if(veranstaltungen.length == 1) {
53                                // nur ein Termin angeboten:
54                                // statt chooser einfach fixe Vorgabe machen (keine Auswahlmoeglichkeit)
55                                $anmeldebox.find("input[name='veranstaltung']").val(veranstaltungen.find('h4').text());
56                                $anmeldebox.find("input[name='termin']").val(veranstaltungen.find('dd.termin').text());
57                        }
58                       
59                        // Abbrechen-Button mit Funktion befüllen
60                        anmeldung_abbrechen = function(){
61                                a = confirm("Soll die Anmeldung verworfen werden?");
62                                if(a) {
63                                        $anmeldebox.slideUp(function(){
64                                                $anmeldebox.remove();
65                                        });
66                                        $("a.anmeldung-btn").text("Zu Führung anmelden").off().click(anmeldung_zeigen);
67                                        return false; // ist eh egal da formular geloescht wird
68                                } else return false
69                        };
70                       
71                        $("a.anmeldung-btn").text("Anmeldung abbrechen").off().click(anmeldung_abbrechen);
72                        $anmeldebox.find("input[type=reset]").click(anmeldung_abbrechen);
73                       
74                        // Submit-Button mit lightweight form checking client side befaehigen
75                        $anmeldebox.find("form").submit(function(){
76                                i = ['veranstaltung', 'termin', 'anmelder_name', 'email_adresse'];
77                                $.each(i, function(){
78                                        ie = $anmeldebox.find("input[name='"+this+"']");
79                                        if(/^\s*$/.test(ie.val())) {
80                                                alert("Bitte füllen Sie die Anmeldung vollständig aus");
81                                                ie.focus();
82                                                return false;
83                                        }
84                                });
85                        });
86                       
87                        $anmeldebox.hide().insertBefore('.archiv').slideDown();
88                       
89                        // Bugfix: Recaptcha kann nicht per JavaScript inserted werden, muss also
90                        // per AJAX nachgeladen werden
91                        t29_recaptcha_insert_id = "t29-recaptcha-insert";
92                        $captcha_box = $anmeldebox.find(".t29-recaptcha").attr("id", t29_recaptcha_insert_id);
93                        publickey = $anmeldebox.find(".t29-recaptcha").data("publickey");
94                        if($captcha_box.length) // only load if captchas enabled
95                            t29.load.js("http://www.google.com/recaptcha/api/js/recaptcha_ajax.js", function() {
96                                 Recaptcha.create(publickey, t29_recaptcha_insert_id, {
97                                        theme: "clean",
98                                        callback: Recaptcha.focus_response_field
99                                 });
100                        });
101                });
102               
103                // + load css
104                t29.load.pagestyle("anmeldung");
105               
106                return false;
107        };
108        $("a.anmeldung-btn").click(anmeldung_zeigen);
109});
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