home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / perl560.zip / eg / cgi / customize.cgi < prev    next >
Text File  |  1999-07-20  |  2KB  |  93 lines

  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;
  93.