BEGIN
{
+ $W->{"__My::Web_init"}=1;
+
sub Wrequire ($)
{
my($file)=@_;
my $class=$file;
$file=~s#::#/#g;
$file.=".pm";
- my $aref=($W->{"packages_used"}{$Apache::Registry::curstash}||=[]);
+ my $who=$W->{"__PACKAGE__"};
+ $who||="__My::Web" if $W->{"__My::Web_init"};
+ my $aref=($W->{"packages_used"}{$who}||=[]);
push @$aref,$class
if !{ map(($_=>1),@$aref) }->{$class}; # Prevent duplicated entries.
CORE::require $file;
require HTTP::BrowserDetect;
require HTTP::Negotiate;
my $have_Geo_IP; BEGIN { $have_Geo_IP=eval { require Geo::IP; 1; }; }
-require CGI;
use ModPerl::Util qw(exit);
# $W->{"head"}
# $W->{"head_css"}
# $W->{"force_charset"}
- # %{$W->{"packages_used"}
# $W->{"heading_done"}
# $W->{"footer_passed"}
# %{$W->{"headers"}}
# %{$W->{"headers_lc"}} # maps lc($headers_key)=>$headers_key
- # @{$W->{"packages_used"}{$Apache::Registry::curstash}}}
+ # @{$W->{"packages_used"}{$W->{"__PACKAGE__"}}}
+ # @{$W->{"packages_used"}{"__My::Web"}}
# %{$W->{"args"}}
sub init ($%)
my($class,%args)=@_;
print STDERR "$class->init ".Apache->request()->unparsed_uri()."\n";
-cluck;
my $packages_used_save=$W->{"packages_used"};
$W={ %WebConfig,%args }; # override %WebConfig settings
$W->{"packages_used"}=$packages_used_save;
- $W->{"__PACKAGE__"}||="Apache::ROOT".$Apache::Registry::curstash;
+ # {"__PACKAGE__"} is mandatory for mod_perl-2.0;
+ # $Apache::Registry::curstash is no longer supported.
+ do { cluck "No $_" if !$W->{$_}; } for "__PACKAGE__";
$W->{"top_dir"}||=eval '$'.$W->{"__PACKAGE__"}.'::top_dir';
$W->{"r"}->args($W->{"QUERY_STRING"});
# Do not: $W->{"r"}->args()
# as it parses only QUERY_STRING (not POST data).
- $W->{"args"}={ CGI->new()->Vars() };
+ $W->{"args"}={ CGI->new($W->{"r"})->Vars() };
for (keys(%{$W->{"args"}})) {
my @vals=split /\x00/,$W->{"args"}{$_};
next if @vals<=1;
do { args_check(%$_) if $_; } for ($W->{"args_check"});
+ $ENV{"HOSTNAME"}||=&{$W->{"web_hostname_sub"}}();
+
return $W;
}
$W->{"args"}{$name}=[ $W->{"args"}{$name} ] if !ref $W->{"args"}{$name} && ref $regex;
fatal "$name_html passed as multivar although singlevar expected"
if ref $W->{"args"}{$name} && !ref $regex;
- $regex=${$regex}[0] if ref $regex;
+ $regex=$regex->[0] if ref $regex;
for my $val (!ref $W->{"args"}{$name} ? $W->{"args"}{$name} : @{$W->{"args"}{$name}}) {
$val="" if !defined $val;
fatal "$name_html <span class=\"quote\">".CGI::escapeHTML($val)."</span>"
Wprint '</form>'."\n";
}
+ my @packages_used=(
+ $W->{"__PACKAGE__"},
+ __PACKAGE__,
+ @{$W->{"packages_used"}{"__My::Web"}},
+ map((!$_ ? () : @$_),$W->{"packages_used"}{$W->{"__PACKAGE__"}}),
+ );
+ my %packages_used;
+ @packages_used=grep((!$packages_used{$_}++),@packages_used);
if ($W->{"footer_ids"}) {
Wprint '<p class="cvs-id">';
Wprint join("<br />\n",map({ my $package=$_;
}
join " ",@cvs_id_split;
}
- } (
- $W->{"__PACKAGE__"},
- __PACKAGE__,
- @{$W->{"packages_used"}{$Apache::Registry::curstash}},
- )));
+ } @packages_used));
Wprint "</p>\n";
}
- for my $package (
- $W->{"__PACKAGE__"},
- __PACKAGE__,
- @{$W->{"packages_used"}{$Apache::Registry::curstash}},
- ) {
+ for my $package (@packages_used) {
my $cvs_id=(eval('$'.$package."::CVS_ID")
# || $package # debug
);
Wprint "</head><body";
# Wprint ' bgcolor="black" text="white" link="aqua" vlink="teal"'
# if $W->{"browser"}->netscape() && (!$W->{"browser"}->major() || $W->{"browser"}->major()<=4);
+ do { &{$_}($W) if $_; } for $W->{"body_attr_sub"};
Wprint ">\n";
if ($W->{"heading"}) {
}
}
+BEGIN {
+ delete $W->{"__My::Web_init"};
+ }
+
1;