summaryrefslogtreecommitdiffstats
path: root/contrib/perl5/eg/cgi/customize.cgi
blob: c1c818751441b84fedb69b526f81fbdc9e5135e1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#!/usr/local/bin/perl

use CGI qw(:standard :html3);

# Some constants to use in our form.
@colors=qw/aqua black blue fuschia gray green lime maroon navy olive
    purple red silver teal white yellow/;
@sizes=("<default>",1..7);

# recover the "preferences" cookie.
%preferences = cookie('preferences');

# If the user wants to change the background color or her
# name, they will appear among our CGI parameters.
foreach ('text','background','name','size') {
    $preferences{$_} = param($_) || $preferences{$_};
}

# Set some defaults
$preferences{'background'} = $preferences{'background'} || 'silver';
$preferences{'text'} = $preferences{'text'} || 'black';

# Refresh the cookie so that it doesn't expire.  This also
# makes any changes the user made permanent.
$the_cookie = cookie(-name=>'preferences',
			 -value=>\%preferences,
			 -expires=>'+30d');
print header(-cookie=>$the_cookie);

# Adjust the title to incorporate the user's name, if provided.
$title = $preferences{'name'} ? 
    "Welcome back, $preferences{name}!" : "Customizable Page";

# Create the HTML page.  We use several of Netscape's
# extended tags to control the background color and the
# font size.  It's safe to use Netscape features here because
# cookies don't work anywhere else anyway.
print start_html(-title=>$title,
		 -bgcolor=>$preferences{'background'},
		 -text=>$preferences{'text'}
		 );

print basefont({SIZE=>$preferences{size}}) if $preferences{'size'} > 0;

print h1($title),<<END;
You can change the appearance of this page by submitting
the fill-out form below.  If you return to this page any time
within 30 days, your preferences will be restored.
END
    ;

# Create the form
print hr(),
    start_form,
    
    "Your first name: ",
    textfield(-name=>'name',
	      -default=>$preferences{'name'},
	      -size=>30),br,
    
    table(
	  TR(
	     td("Preferred"),
	     td("Page color:"),
	     td(popup_menu(-name=>'background',
			   -values=>\@colors,
			   -default=>$preferences{'background'})
		),
	     ),
	  TR(
	     td(''),
	     td("Text color:"),
	     td(popup_menu(-name=>'text',
			   -values=>\@colors,
			   -default=>$preferences{'text'})
		)
	     ),
	  TR(
	     td(''),
	     td("Font size:"),
	     td(popup_menu(-name=>'size',
			   -values=>\@sizes,
			   -default=>$preferences{'size'})
		)
	     )
	  ),

    submit(-label=>'Set preferences'),
    hr;
	   
print a({HREF=>"/"},'Go to the home page');
print end_html;
OpenPOWER on IntegriCloud