Upgrade to CGI.pm 3.10
Nicholas Clark [Sun, 15 May 2005 11:32:15 +0000 (11:32 +0000)]
p4raw-id: //depot/perl@24470

MANIFEST
lib/CGI.pm
lib/CGI/Changes
lib/CGI/t/can.t [new file with mode: 0644]
lib/CGI/t/form.t

index d2f1464..7cf5ec8 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -1228,6 +1228,7 @@ lib/CGI/Pretty.pm         Output nicely formatted HTML
 lib/CGI/Push.pm                        Support for server push
 lib/CGI/Switch.pm              Simple interface for multiple server types
 lib/CGI/t/apache.t             See if CGI::Apache still loads
+lib/CGI/t/can.t                        See if CGI.pm works
 lib/CGI/t/carp.t               See if CGI::Carp works
 lib/CGI/t/cookie.t             See if CGI::Cookie works
 lib/CGI/t/fast.t               See if CGI::Fast works (if FCGI is installed)
index 2346f75..c241562 100644 (file)
@@ -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.179 2005/04/07 22:40:37 lstein Exp $';
-$CGI::VERSION=3.08;
+$CGI::revision = '$Id: CGI.pm,v 1.181 2005/05/13 21:45:26 lstein Exp $';
+$CGI::VERSION='3.10';
 
 # HARD-CODED LOCATION FOR FILE UPLOAD TEMPORARY FILES.
 # UNCOMMENT THIS ONLY IF YOU KNOW WHAT YOU'RE DOING.
@@ -179,11 +179,12 @@ $IIS++ if defined($ENV{'SERVER_SOFTWARE'}) && $ENV{'SERVER_SOFTWARE'}=~/IIS/;
 if (exists $ENV{MOD_PERL}) {
   # mod_perl handlers may run system() on scripts using CGI.pm;
   # Make sure so we don't get fooled by inherited $ENV{MOD_PERL}
-  if ($ENV{MOD_PERL_API_VERSION} == 2) {
+  if (exists $ENV{MOD_PERL_API_VERSION} && $ENV{MOD_PERL_API_VERSION} == 2) {
     $MOD_PERL = 2;
     require Apache2::Response;
     require Apache2::RequestRec;
     require Apache2::RequestUtil;
+    require Apache2::RequestIO;
     require APR::Pool;
   } else {
     $MOD_PERL = 1;
@@ -888,6 +889,7 @@ sub element_id {
 
 sub element_tab {
   my ($self,$new_value) = self_or_default(@_);
+  $self->{'.etab'} ||= 1;
   $self->{'.etab'} = $new_value if defined $new_value;
   $self->{'.etab'}++;
 }
index 9b22a52..467ee64 100644 (file)
@@ -1,3 +1,10 @@
+  Version 3.10
+    1. Added Apache2::RequestIO, which is necessary for mp2 interoperability.
+
+  Version 3.09
+    1. Fixed tabindex="0" when using CGI to create forms without a prior start_html
+    2. Removed warning about non-numeric MOD_PERL_API_VERSION.
+
   Version 3.08
     1. update support for mod_perl 2.0.  versions prior to
        mod_perl 1.999_22 (2.0.0-RC5) are no longer supported.
diff --git a/lib/CGI/t/can.t b/lib/CGI/t/can.t
new file mode 100644 (file)
index 0000000..720eb49
--- /dev/null
@@ -0,0 +1,12 @@
+#!/usr/local/bin/perl -w
+
+# Due to a bug in older versions of MakeMaker & Test::Harness, we must
+# ensure the blib's are in @INC, else we might use the core CGI.pm
+
+use lib qw(blib/lib blib/arch);
+
+use Test::More tests => 2;
+
+BEGIN{ use_ok('CGI'); }
+
+can_ok('CGI', qw/cookie param/);
\ No newline at end of file
index 61b6b62..dd8338c 100755 (executable)
@@ -33,43 +33,43 @@ is(start_form(-action=>'foobar',-method=>'get'),
    "start_form()");
 
 is(submit(),
-   qq(<input type="submit" tabindex="0" name=".submit" />),
+   qq(<input type="submit" tabindex="1" name=".submit" />),
    "submit()");
 
 is(submit(-name  => 'foo',
          -value => 'bar'),
-   qq(<input type="submit" tabindex="1" name="foo" value="bar" />),
+   qq(<input type="submit" tabindex="2" name="foo" value="bar" />),
    "submit(-name,-value)");
 
 is(submit({-name  => 'foo',
           -value => 'bar'}),
-   qq(<input type="submit" tabindex="2" name="foo" value="bar" />),
+   qq(<input type="submit" tabindex="3" name="foo" value="bar" />),
    "submit({-name,-value})");
 
 is(textfield(-name => 'weather'),
-   qq(<input type="text" name="weather" tabindex="3" value="dull" />),
+   qq(<input type="text" name="weather" tabindex="4" value="dull" />),
    "textfield({-name})");
 
 is(textfield(-name  => 'weather',
             -value => 'nice'),
-   qq(<input type="text" name="weather" tabindex="4" value="dull" />),
+   qq(<input type="text" name="weather" tabindex="5" value="dull" />),
    "textfield({-name,-value})");
 
 is(textfield(-name     => 'weather',
             -value    => 'nice',
             -override => 1),
-   qq(<input type="text" name="weather" tabindex="5" value="nice" />),
+   qq(<input type="text" name="weather" tabindex="6" value="nice" />),
    "textfield({-name,-value,-override})");
 
 is(checkbox(-name  => 'weather',
            -value => 'nice'),
-   qq(<label><input type="checkbox" name="weather" value="nice" tabindex="6" />weather</label>),
+   qq(<label><input type="checkbox" name="weather" value="nice" tabindex="7" />weather</label>),
    "checkbox()");
 
 is(checkbox(-name  => 'weather',
            -value => 'nice',
            -label => 'forecast'),
-   qq(<label><input type="checkbox" name="weather" value="nice" tabindex="7" />forecast</label>),
+   qq(<label><input type="checkbox" name="weather" value="nice" tabindex="8" />forecast</label>),
    "checkbox()");
 
 is(checkbox(-name     => 'weather',
@@ -77,41 +77,41 @@ is(checkbox(-name     => 'weather',
            -label    => 'forecast',
            -checked  => 1,
            -override => 1),
-   qq(<label><input type="checkbox" name="weather" value="nice" tabindex="8" checked="checked" />forecast</label>),
+   qq(<label><input type="checkbox" name="weather" value="nice" tabindex="9" checked="checked" />forecast</label>),
    "checkbox()");
 
 is(checkbox(-name  => 'weather',
            -value => 'dull',
            -label => 'forecast'),
-   qq(<label><input type="checkbox" name="weather" value="dull" tabindex="9" checked="checked" />forecast</label>),
+   qq(<label><input type="checkbox" name="weather" value="dull" tabindex="10" checked="checked" />forecast</label>),
    "checkbox()");
 
 is(radio_group(-name => 'game'),
-   qq(<label><input type="radio" name="game" value="chess" checked="checked" tabindex="10" />chess</label> <label><input type="radio" name="game" value="checkers" tabindex="11" />checkers</label>),
+   qq(<label><input type="radio" name="game" value="chess" checked="checked" tabindex="11" />chess</label> <label><input type="radio" name="game" value="checkers" tabindex="12" />checkers</label>),
    'radio_group()');
 
 is(radio_group(-name   => 'game',
               -labels => {'chess' => 'ping pong'}),
-   qq(<label><input type="radio" name="game" value="chess" checked="checked" tabindex="12" />ping pong</label> <label><input type="radio" name="game" value="checkers" tabindex="13" />checkers</label>),
+   qq(<label><input type="radio" name="game" value="chess" checked="checked" tabindex="13" />ping pong</label> <label><input type="radio" name="game" value="checkers" tabindex="14" />checkers</label>),
    'radio_group()');
 
 is(checkbox_group(-name   => 'game',
                  -Values => [qw/checkers chess cribbage/]),
-   qq(<label><input type="checkbox" name="game" value="checkers" checked="checked" tabindex="14" />checkers</label> <label><input type="checkbox" name="game" value="chess" checked="checked" tabindex="15" />chess</label> <label><input type="checkbox" name="game" value="cribbage" tabindex="16" />cribbage</label>),
+   qq(<label><input type="checkbox" name="game" value="checkers" checked="checked" tabindex="15" />checkers</label> <label><input type="checkbox" name="game" value="chess" checked="checked" tabindex="16" />chess</label> <label><input type="checkbox" name="game" value="cribbage" tabindex="17" />cribbage</label>),
    'checkbox_group()');
 
 is(checkbox_group(-name       => 'game',
                  '-values'   => [qw/checkers chess cribbage/],
                  '-defaults' => ['cribbage'],
                  -override=>1),
-   qq(<label><input type="checkbox" name="game" value="checkers" tabindex="17" />checkers</label> <label><input type="checkbox" name="game" value="chess" tabindex="18" />chess</label> <label><input type="checkbox" name="game" value="cribbage" checked="checked" tabindex="19" />cribbage</label>),
+   qq(<label><input type="checkbox" name="game" value="checkers" tabindex="18" />checkers</label> <label><input type="checkbox" name="game" value="chess" tabindex="19" />chess</label> <label><input type="checkbox" name="game" value="cribbage" checked="checked" tabindex="20" />cribbage</label>),
    'checkbox_group()');
 
 is(popup_menu(-name     => 'game',
              '-values' => [qw/checkers chess cribbage/],
              -default  => 'cribbage',
              -override => 1),
-   '<select name="game" tabindex="20">
+   '<select name="game" tabindex="21">
 <option value="checkers">checkers</option>
 <option value="chess">chess</option>
 <option selected="selected" value="cribbage">cribbage</option>