xref: /onnv-gate/usr/src/cmd/perl/5.8.4/distrib/lib/CGI/eg/customize.cgi (revision 0:68f95e015346)
1#!/usr/local/bin/perl
2
3use 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.
15foreach ('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');
28print 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.
38print start_html(-title=>$title,
39		 -bgcolor=>$preferences{'background'},
40		 -text=>$preferences{'text'}
41		 );
42
43print basefont({SIZE=>$preferences{size}}) if $preferences{'size'} > 0;
44
45print h1($title),<<END;
46You can change the appearance of this page by submitting
47the fill-out form below.  If you return to this page any time
48within 30 days, your preferences will be restored.
49END
50    ;
51
52# Create the form
53print 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
91print a({HREF=>"/"},'Go to the home page');
92print end_html;
93