212 lines
		
	
	
	
		
			4.3 KiB
		
	
	
	
		
			Perl
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			212 lines
		
	
	
	
		
			4.3 KiB
		
	
	
	
		
			Perl
		
	
	
		
			Executable file
		
	
	
	
	
#	$NetBSD: html.pl,v 1.2 1996/06/14 19:52:38 thorpej Exp $
 | 
						|
#
 | 
						|
# perl routines to help generate html from cgi scripts in perl.
 | 
						|
#
 | 
						|
# written by Philip A. Nelson, 1995 and 1996.
 | 
						|
#
 | 
						|
#  Copyright (c) 1995, 1996 Philip A. Nelson.
 | 
						|
#
 | 
						|
#  Last modified: May 13, 1996.
 | 
						|
#
 | 
						|
#  Copying and distribution permitted under the conditions of the
 | 
						|
#  GNU General Public License Version 2.  
 | 
						|
#     (http://www.gnu.ai.mit.edu/copyleft/gpl.html)
 | 
						|
#
 | 
						|
# $FreeBSD$
 | 
						|
 | 
						|
#
 | 
						|
# typical use is &www_content ("text","html");
 | 
						|
#	Should be the first output from a cgi script.
 | 
						|
#
 | 
						|
sub www_content {
 | 
						|
  print "Content-type: $_[0]/$_[1]\n\n";
 | 
						|
}
 | 
						|
 | 
						|
#
 | 
						|
# &html_title ( title, other_head_html )
 | 
						|
#	Starts the html with a head and title.
 | 
						|
#
 | 
						|
sub html_title {
 | 
						|
  print "<html>\n<head>\n<title>$_[0]</title>\n$_[1]\n</head>\n";
 | 
						|
}
 | 
						|
 | 
						|
#
 | 
						|
# &html_body (Body_tag_attributes);
 | 
						|
#
 | 
						|
sub html_body {
 | 
						|
  print "<body $_[0]>\n";
 | 
						|
}
 | 
						|
 | 
						|
#
 | 
						|
# Last call to end a complete html page.
 | 
						|
#	&html_end();
 | 
						|
#
 | 
						|
sub html_end {
 | 
						|
  print "</body>\n</html>\n";
 | 
						|
}
 | 
						|
 | 
						|
#
 | 
						|
# &www_href (URL, link text, anchor_name)
 | 
						|
#    link text and anchor name are optional.
 | 
						|
#    If no link text, no </a> is generated.
 | 
						|
#
 | 
						|
sub html_href {
 | 
						|
  print "<a href=\"$_[0]\"";
 | 
						|
  if ($_[2]) { print "name=\"$_[2]\""; }
 | 
						|
  if ($_[1]) { print $_[1], "</a>"; }
 | 
						|
}
 | 
						|
 | 
						|
#
 | 
						|
#  &cgi_form_in();
 | 
						|
#
 | 
						|
#  Form support:
 | 
						|
#	Defines:
 | 
						|
#	    $cgi_data{$key} the data indexed by the key.
 | 
						|
#		keys repeated twice gets data collected in
 | 
						|
#		$cgi_data{$key} separated by "|"s.
 | 
						|
#
 | 
						|
#	    @keys (sequential list of keys)
 | 
						|
#	    @vals (sequential list of values)
 | 
						|
#	    $cgi_method
 | 
						|
#
 | 
						|
sub cgi_form_in {
 | 
						|
  local ($data);
 | 
						|
  $cgi_method = $ENV{'REQUEST_METHOD'};
 | 
						|
  if ($cgi_method eq 'GET') {
 | 
						|
    $data = $ENV{'QUERY_STRING'};
 | 
						|
  } else {
 | 
						|
    read(STDIN,$data,$ENV{'CONTENT_LENGTH'});
 | 
						|
  }
 | 
						|
  @lines = split (/&/, $data);
 | 
						|
  $nkeys = 0;
 | 
						|
  foreach $line (@lines) {
 | 
						|
    ($key,$val) = split (/=/, $line);
 | 
						|
    $val =~ s/\+/ /g;
 | 
						|
    $val =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("C",hex($1))/eg ;
 | 
						|
    if ($cgi_data{$key}) {
 | 
						|
	$cgi_data{$key} = $cgi_data{$key}."|".$val;
 | 
						|
    } else {
 | 
						|
	$cgi_data{$key} = $val;
 | 
						|
    }
 | 
						|
    push (@keys, "$key");
 | 
						|
    push (@vals, "$val");
 | 
						|
    $nkeys += 1;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
#
 | 
						|
# Form creation routines
 | 
						|
#
 | 
						|
 | 
						|
#
 | 
						|
# &html_form (action)  - form with post method
 | 
						|
#
 | 
						|
sub html_form {
 | 
						|
  print "<form action=\"$_[0]\" method=POST>\n";
 | 
						|
}
 | 
						|
 | 
						|
#
 | 
						|
# &html_getform (action)  - form with get method
 | 
						|
#
 | 
						|
sub html_getform {
 | 
						|
  print "<form action=\"$_[0]\" method=POST>\n";
 | 
						|
}
 | 
						|
 | 
						|
#
 | 
						|
# &html_endform();
 | 
						|
#
 | 
						|
sub html_endform {
 | 
						|
  print "</form>\n";
 | 
						|
}
 | 
						|
 | 
						|
#
 | 
						|
# &html_input (type, name, value, size, maxlength, checked)
 | 
						|
#
 | 
						|
sub html_input {
 | 
						|
  local ($type, $name, $value, $size, $maxlength, $checked) = @_;
 | 
						|
  print "<input type=\"$type\" ";
 | 
						|
  if ($name)      { print "name=\"$name\" "; }
 | 
						|
  if ($value)     { print "value=\"$value\" "; }
 | 
						|
  if ($size)      { print "size=\"$size\" "; }
 | 
						|
  if ($maxlength) { print "maxlength=\"$maxlength\" "; }
 | 
						|
  if ($checked)   { print "checked "; }
 | 
						|
  print ">\n";
 | 
						|
}
 | 
						|
 | 
						|
#
 | 
						|
# &html_radio (name, value_list)
 | 
						|
#
 | 
						|
sub html_radio {
 | 
						|
  local ($name, @values) = @_;
 | 
						|
  foreach $val (@values) {
 | 
						|
    &html_input ("radio", $name, $val);
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
#
 | 
						|
# &html_checkbox (name, values)
 | 
						|
#    checked values include a : which is removed.
 | 
						|
#
 | 
						|
sub html_checkbox {
 | 
						|
  local ($name, @values) = @_;
 | 
						|
  foreach $val (@values) {
 | 
						|
    $val1 = $val;
 | 
						|
    $val1 =~ s/://;
 | 
						|
    if ($val eq $val1) 
 | 
						|
      { &html_input ("checkbox", $name, $val); }
 | 
						|
    else
 | 
						|
      { &html_input ("checkbox", $name, $val1,"" ,"" ,"checked"); }
 | 
						|
    print $val1;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
#
 | 
						|
# &htlm_select (name, options ...)
 | 
						|
#
 | 
						|
#   options including : are selected and the : is removed.
 | 
						|
#
 | 
						|
sub html_select {
 | 
						|
  local ($name, @options) = @_;
 | 
						|
  print "<select name=\"$name\">\n";
 | 
						|
  foreach $opt (@options) {
 | 
						|
    $opt1 = $opt;
 | 
						|
    $opt1 =~ s/://;
 | 
						|
    if ($opt eq $opt1) 
 | 
						|
      { print "<option> $opt1\n"; }
 | 
						|
    else
 | 
						|
      { print "<option SELECTED> $opt1\n"; }
 | 
						|
  }
 | 
						|
  print "</select>\n";
 | 
						|
}
 | 
						|
 | 
						|
#
 | 
						|
# &htlm_selectmult (name, options ...)
 | 
						|
#
 | 
						|
#    allow multiple selections
 | 
						|
#
 | 
						|
sub html_selectmult {
 | 
						|
  local ($name, @options) = @_;
 | 
						|
  print "<select name=\"$name\" multiple>\n";
 | 
						|
  foreach $opt (@options) {
 | 
						|
    $opt1 = $opt;
 | 
						|
    $opt1 =~ s/://;
 | 
						|
    if ($opt eq $opt1) 
 | 
						|
      { print "<option> $opt1\n"; }
 | 
						|
    else
 | 
						|
      { print "<option SELECTED> $opt1\n"; }
 | 
						|
  }
 | 
						|
  print "</select>\n";
 | 
						|
}
 | 
						|
 | 
						|
#
 | 
						|
#  &html_textarea (name, rows, cols, value);
 | 
						|
#
 | 
						|
sub html_textarea {
 | 
						|
  local ($name, $rows, $cols, $value) = @_;
 | 
						|
  print "<textarea name=\"$name\" rows=\"$rows\" cols=\"$cols\">\n";
 | 
						|
  print "$value\n";
 | 
						|
  print "</textarea>"; 
 | 
						|
}
 | 
						|
 | 
						|
# return true!
 | 
						|
1;
 |