Commit | Line | Data |
54310121 |
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'); |
12c5d27a |
92 | print end_html; |