From: Steve Peters Date: Tue, 3 Oct 2006 15:36:55 +0000 (+0000) Subject: Upgrade to CGI.pm-3.25 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=0664a57d8d8db765643a0ef6294bbbd013a00df5;p=p5sagit%2Fp5-mst-13.2.git Upgrade to CGI.pm-3.25 p4raw-id: //depot/perl@28930 --- diff --git a/lib/CGI.pm b/lib/CGI.pm index ffb8ce9..440ef5a 100644 --- a/lib/CGI.pm +++ b/lib/CGI.pm @@ -18,8 +18,8 @@ use Carp 'croak'; # The most recent version and complete docs are available at: # http://stein.cshl.org/WWW/software/CGI/ -$CGI::revision = '$Id: CGI.pm,v 1.208 2006/04/23 14:25:14 lstein Exp $'; -$CGI::VERSION='3.22'; +$CGI::revision = '$Id: CGI.pm,v 1.221 2006/09/28 17:04:10 lstein Exp $'; +$CGI::VERSION='3.25'; # HARD-CODED LOCATION FOR FILE UPLOAD TEMPORARY FILES. # UNCOMMENT THIS ONLY IF YOU KNOW WHAT YOU'RE DOING. @@ -1653,6 +1653,7 @@ sub _style { my ($self,$style) = @_; my (@result); my $type = 'text/css'; + my $rel = 'stylesheet'; my $cdata_start = $XHTML ? "\n\n" : " -->\n"; @@ -1661,25 +1662,26 @@ sub _style { for my $s (@s) { if (ref($s)) { - my($src,$code,$verbatim,$stype,$foo,@other) = - rearrange([qw(SRC CODE VERBATIM TYPE FOO)], + my($src,$code,$verbatim,$stype,$alternate,$foo,@other) = + rearrange([qw(SRC CODE VERBATIM TYPE ALTERNATE FOO)], ('-foo'=>'bar', ref($s) eq 'ARRAY' ? @$s : %$s)); $type = $stype if $stype; + $rel = 'alternate stylesheet' if $alternate; my $other = @other ? join ' ',@other : ''; if (ref($src) eq "ARRAY") # Check to see if the $src variable is an array reference { # If it is, push a LINK tag for each one foreach $src (@$src) { - push(@result,$XHTML ? qq() - : qq()) if $src; + push(@result,$XHTML ? qq() + : qq()) if $src; } } else { # Otherwise, push the single -src, if it exists. - push(@result,$XHTML ? qq() - : qq() + push(@result,$XHTML ? qq() + : qq() ) if $src; } if ($verbatim) { @@ -1691,8 +1693,8 @@ sub _style { } else { my $src = $s; - push(@result,$XHTML ? qq() - : qq()); + push(@result,$XHTML ? qq() + : qq()); } } @result; @@ -1798,7 +1800,7 @@ sub startform { $action = $self->escapeHTML($action); } else { - $action = $self->escapeHTML($self->request_uri); + $action = $self->escapeHTML($self->request_uri || $self->self_url); } $action = qq(action="$action"); my($other) = @other ? " @other" : ''; @@ -2591,7 +2593,7 @@ sub image_button { my($name,$src,$alignment,@other) = rearrange([NAME,SRC,ALIGN],@p); - my($align) = $alignment ? " align=\U\"$alignment\"" : ''; + my($align) = $alignment ? " align=\L\"$alignment\"" : ''; my($other) = @other ? " @other" : ''; $name=$self->escapeHTML($name); return $XHTML ? qq() @@ -3419,7 +3421,7 @@ END_OF_FUNC 'upload' =><<'END_OF_FUNC', sub upload { my($self,$param_name) = self_or_default(@_); - my @param = grep {ref && defined(fileno($_))}, $self->param($param_name)); + my @param = grep {ref($_) && defined(fileno($_))} $self->param($param_name); return unless @param; return wantarray ? @param : $param[0]; } @@ -6664,6 +6666,7 @@ SSL session. The cookie created by cookie() must be incorporated into the HTTP header within the string returned by the header() method: + use CGI ':standard'; print header(-cookie=>$my_cookie); To create multiple cookies, give header() an array reference: @@ -6675,12 +6678,13 @@ To create multiple cookies, give header() an array reference: print header(-cookie=>[$cookie1,$cookie2]); To retrieve a cookie, request it by name by calling cookie() method -without the B<-value> parameter: +without the B<-value> parameter. This example uses the object-oriented +form: use CGI; $query = new CGI; - $riddle = cookie('riddle_name'); - %answers = cookie('answers'); + $riddle = $query->cookie('riddle_name'); + %answers = $query->cookie('answers'); Cookies created with a single scalar value, such as the "riddle_name" cookie, will be returned in that form. Cookies with array and hash @@ -6723,7 +6727,7 @@ There is no specific support for creating sections in CGI.pm, but the HTML is very simple to write. See the frame documentation in Netscape's home pages for details - http://home.netscape.com/assist/net_sites/frames.html + http://wp.netscape.com/assist/net_sites/frames.html =item 2. Specify the destination for the document in the HTTP header @@ -7015,6 +7019,14 @@ and pass it to start_html() in the -head argument, as in: Link({-rel=>'stylesheet',-type=>'text/css',-src=>'/ss/fred.css',-media=>'paper'})); print start_html({-head=>\@h}) +To create primary and "alternate" stylesheet, use the B<-alternate> option: + + start_html(-style=>{-src=>[ + {-src=>'/styles/print.css'}, + {-src=>'/styles/alt.css',-alternate=>1} + ] + }); + =head1 DEBUGGING If you are running the script from the command line or in the perl diff --git a/lib/CGI/Changes b/lib/CGI/Changes index 3d5b712..23db2a2 100644 --- a/lib/CGI/Changes +++ b/lib/CGI/Changes @@ -1,3 +1,17 @@ + Version 3.25 + 1. Fixed the link to the Netscape frames page. + 2. Added ability to specify an alternate stylesheet. + + Version 3.24 + 1. In startform(), if request_uri() returns undef, then falls back + to self_url(). This should rarely happen except when run outside of + the CGI environment. + 2. image button alignment options were mistakenly being capitalized, causing xhtml validation to fail. + + Version 3.23 + 1. Typo in upload() persisted, now fixed for real. Thanks to + Emanuele Zeppieri for correct patch and regression test. + Version 3.22 1. Typo in upload() function broke uploads. Now fixed (CPAN bug 21126). diff --git a/lib/CGI/Util.pm b/lib/CGI/Util.pm index 523007c..b934916 100644 --- a/lib/CGI/Util.pm +++ b/lib/CGI/Util.pm @@ -261,7 +261,7 @@ sub expire_calc { $offset = 0; } elsif ($time=~/^\d+/) { return $time; - } elsif ($time=~/^([+-]?(?:\d+|\d*\.\d*))([mhdMy]?)/) { + } elsif ($time=~/^([+-]?(?:\d+|\d*\.\d*))([mhdMy])/) { $offset = ($mult{$2} || 1)*$1; } else { return $time;