#!/usr/bin/perl -w

use strict; # wymus deklaracje zmiennych poprzez uzycie cudzyslowow
use CGI qw(:standard);

my $kto;

my @smaki = ('czekoladowy', 'truskawkowy', 'waniliowy');

my $liczba;
my $maksliczba = 12;

my %zamowienie;

if (param ("przycisk") ne "wyczysc") {

    if (param ("przycisk") eq "zaplac") {

        redirect ("http://www.polcard.pl");
        exit;

    } else {

        # odczytujemy zapisane ustawienia

        $kto = cookie ("imie");

        foreach (@smaki) {
            if (cookie ($_)) {
                $zamowienie {$_} = cookie ($_);
            }
        }

        if (param ("przycisk") eq "dalej") {

            # formularz zostal juz wypelniony

            if (!$kto && param ("imie")) {
                $kto = param ("imie");
            }

            if ($kto) {

                my $smak  = param ("smak");
                my $kulki = param ("kulki");

                $zamowienie {$smak} += $kulki;

                my @ciastka;

                push (@ciastka, cookie (-NAME => "imie", -VALUE => $kto));

                foreach (keys %zamowienie) {
                    my $ciastko = cookie (-NAME => $_, -VALUE => $zamowienie {$_});
                    push (@ciastka, $ciastko);
                }

                print header (-COOKIE => \@ciastka);

            } else {

                # zamowienia anonimowe odrzucamy

                print header ();

            }

        } else {                        # to pierwszy raz

            print header ();

        }

    }

} else {

    # kasowanie (?) ustawien

    my @ciastka;

    push (@ciastka, cookie (-NAME => "imie", -VALUE => ""));

    foreach (@smaki) {
        my $ciastko = cookie (-NAME => $_, -VALUE => "");
        push (@ciastka, $ciastko);
    }

    print header (-COOKIE => \@ciastka);

}

print start_html("Lodziarnia"), h1("Lodziarnia");

print hr(); # narysuj przed formularzem pozioma #kreske

if ($kto) {
    print h2 ("Witaj $kto!");
} else {
    if (param ("przycisk") eq "dalej") {
        print h2 ("Musisz sie przedstawic!");
        print p ("Nie realizujemy zamowien anonimowych");
    }
}

$liczba = $maksliczba;
if (%zamowienie) {
    print "<TABLE BORDER=1> <CAPTION>Twoje zamowienie to:</CAPTION>";
    print Tr (th ("Smak"), th ("Liczba kulek"));
    foreach (sort keys %zamowienie) {
        print Tr (td ({-align=>"center"},, $_),
                  td ({-align=>"center"}, $zamowienie{$_}));
        $liczba -= $zamowienie{$_};
    }
    print "</TABLE>";
    print hr ();
}

print start_form();
if (!$kto) {
    print p("Jak Ci na imie? ", textfield("imie"));
}

if ($liczba > 0) {
    print p ("Jaki smak: ", popup_menu ("smak", \@smaki));
    print p ("Ile kulek? ", popup_menu ("kulki", [ 1..$liczba ]));
    if ($liczba < $maksliczba) {
        print p(submit("przycisk", "dalej"),
                submit("przycisk", "wyczysc"),
                submit("przycisk", "zaplac"));
    } else {
        # pierwszy raz
        print p(submit("przycisk", "dalej"));
    }
} else {
    print h3( "Zamowiles juz $maksliczba kulek lodow." );
    print p( "Wiecej nie zmiesci sie w wafelku!" );
    print p( submit("przycisk", "wyczysc"),
             submit("przycisk", "zaplac"));
}
print end_form(), hr();

print end_html;

Last modified: poniedziałek, 10 sierpnia 2015, 10:49