Commit | Line | Data |
---|---|---|
920dae64 AT |
1 | #!/usr/local/bin/perl |
2 | ||
3 | use CGI qw(:standard :html3); | |
4 | ||
5 | # Some constants to use in our form. | |
6 | @colors=qw/aqua black blue fuschia gray green lime maroon navy olive | |
7 | purple red silver teal white yellow/; | |
8 | @sizes=("<default>",1..7); | |
9 | ||
10 | # recover the "preferences" cookie. | |
11 | %preferences = cookie('preferences'); | |
12 | ||
13 | # If the user wants to change the background color or her | |
14 | # name, they will appear among our CGI parameters. | |
15 | foreach ('text','background','name','size') { | |
16 | $preferences{$_} = param($_) || $preferences{$_}; | |
17 | } | |
18 | ||
19 | # Set some defaults | |
20 | $preferences{'background'} = $preferences{'background'} || 'silver'; | |
21 | $preferences{'text'} = $preferences{'text'} || 'black'; | |
22 | ||
23 | # Refresh the cookie so that it doesn't expire. This also | |
24 | # makes any changes the user made permanent. | |
25 | $the_cookie = cookie(-name=>'preferences', | |
26 | -value=>\%preferences, | |
27 | -expires=>'+30d'); | |
28 | print header(-cookie=>$the_cookie); | |
29 | ||
30 | # Adjust the title to incorporate the user's name, if provided. | |
31 | $title = $preferences{'name'} ? | |
32 | "Welcome back, $preferences{name}!" : "Customizable Page"; | |
33 | ||
34 | # Create the HTML page. We use several of Netscape's | |
35 | # extended tags to control the background color and the | |
36 | # font size. It's safe to use Netscape features here because | |
37 | # cookies don't work anywhere else anyway. | |
38 | print start_html(-title=>$title, | |
39 | -bgcolor=>$preferences{'background'}, | |
40 | -text=>$preferences{'text'} | |
41 | ); | |
42 | ||
43 | print basefont({SIZE=>$preferences{size}}) if $preferences{'size'} > 0; | |
44 | ||
45 | print h1($title),<<END; | |
46 | You can change the appearance of this page by submitting | |
47 | the fill-out form below. If you return to this page any time | |
48 | within 30 days, your preferences will be restored. | |
49 | END | |
50 | ; | |
51 | ||
52 | # Create the form | |
53 | print hr(), | |
54 | start_form, | |
55 | ||
56 | "Your first name: ", | |
57 | textfield(-name=>'name', | |
58 | -default=>$preferences{'name'}, | |
59 | -size=>30),br, | |
60 | ||
61 | table( | |
62 | TR( | |
63 | td("Preferred"), | |
64 | td("Page color:"), | |
65 | td(popup_menu(-name=>'background', | |
66 | -values=>\@colors, | |
67 | -default=>$preferences{'background'}) | |
68 | ), | |
69 | ), | |
70 | TR( | |
71 | td(''), | |
72 | td("Text color:"), | |
73 | td(popup_menu(-name=>'text', | |
74 | -values=>\@colors, | |
75 | -default=>$preferences{'text'}) | |
76 | ) | |
77 | ), | |
78 | TR( | |
79 | td(''), | |
80 | td("Font size:"), | |
81 | td(popup_menu(-name=>'size', | |
82 | -values=>\@sizes, | |
83 | -default=>$preferences{'size'}) | |
84 | ) | |
85 | ) | |
86 | ), | |
87 | ||
88 | submit(-label=>'Set preferences'), | |
89 | hr; | |
90 | ||
91 | print a({HREF=>"/"},'Go to the home page'); | |
92 | print end_html; |