X-Git-Url: http://git.jankratochvil.net/?p=MyWeb.git;a=blobdiff_plain;f=Web.pm;fp=Web.pm;h=35bdb386a0d361caac4fe359d57c70f12c6bba64;hp=885620df5ae3b0ee530d2e735e54a8f1f9c784c1;hb=aba10a49c1e0d87b131388fe7b7342bf87a6a539;hpb=6a26dcbc13f70543517060e58e0eaced7847a535 diff --git a/Web.pm b/Web.pm index 885620d..35bdb38 100644 --- a/Web.pm +++ b/Web.pm @@ -156,7 +156,7 @@ my($class,%args)=@_; $W->{"have_js"}=($W->{"args"}{"have_js"} ? 1 : 0); if ($W->{"detect_js"} && !$W->{"have_js"}) { - $W->{"head"}.=''."\n"; + $W->{"head"}.=''."\n"; } do { args_check(%$_) if $_; } for ($W->{"args_check"}); @@ -170,16 +170,33 @@ sub top_dir_disk () return $INC[0]; # fallback } -sub top_dir () +sub top_dir (;$) { +my($in)=@_; + if (my $uri=$ENV{"REQUEST_URI"}) { $uri.="Index" if $uri=~m#/$#; + if (defined $in) { + my($inpath,$inquery)=split /[?]/,$in,2; + $inpath=~tr///cs; + $uri=~tr///cs; + for (;;) { + my($in1 ,$in2 )=($in =~m#^(/[^/]+)(/.*)$#); + my($uri1,$uri2)=($uri=~m#^(/[^/]+)(/.*)$#); + last if !defined $in1 || !defined $uri1 || $in1 ne $uri1; + $in=$in2; + $uri=$uri2; + } + } $uri=~s#^/*##; $uri=~s#[^/]+#..#g; $uri=File::Basename::dirname($uri); - return $uri; + my $r=$uri.(defined $in ? $in : ""); +# 1 while $r=~s#^[.]/##; +# $r="./$r" if $r=~m#^(?:?.*)$#; # empty pathname? + return $r; } - return top_dir_disk(); + return top_dir_disk().$in; } sub fatal (;$); @@ -228,7 +245,7 @@ sub footer (;$) print "