--- /tmp/photopub/cgi-bin/index.pl Thu Mar 21 22:31:15 2002 +++ index.pl Tue Mar 26 22:56:50 2002 @@ -13,6 +13,7 @@ use PhotoPub::Handlers qw(&forallhandlers &handlephoto); use PhotoPub::Utils qw(&slurp &escape &doifcount &untaint); use PhotoPub::Ages qw(&updateagefromfiles); +use PhotoPub::Images qw(&picrange); init(); @@ -66,6 +67,13 @@ $template=~s/\$$name/$val/ieg; } +# Export $base into the template +$template=~s/\$base/$base/ieg; + +# Export $styleroot, the path of the stylesheet, into the template +my $styleroot = substr( $style, 0, rindex( $style, '/' ) ); +$template=~s/\$styleroot/$styleroot/ieg; + my ($startnum,$endnum,$isprev,$isnext)=(0,$#groups,0,0); my $page; my $max; @@ -114,16 +122,22 @@ printheader(); -my ($pre,$repeat,$post); +my ($pre,$repeat,$post,$repeatop); -while(($pre,$repeat,$post) - =($template=~/^(.*?)\(.*?)\<\/REPEAT\>(.*)$/si)) { +while(($pre,$repeatop,$repeat,$post) + =($template=~/^(.*?)\(.*?)\<\/REPEAT\>(.*)$/si)) { print $pre; my $count=1; my $oldlevel=0; my $out=undef; - foreach my $groupnum ($startnum..$endnum) { + + my @grouplist = ($startnum..$endnum); + if( $repeatop =~ /order=reverse/i ) { + @grouplist = reverse(@grouplist); + } + + foreach my $groupnum (@grouplist) { my $group=$groups[$groupnum]; my $newlevel=$group->{'level'}; if(defined $out) { @@ -136,10 +150,19 @@ my $range=$group->{'range'}; my $desc=$group->{'description'}; $out=$repeat; + my $queryprefix="range=$range&style="; $out=~s/\/\/sig; $out=~s/\$description/$desc/ieg; $out=~s/\$counter/$count/gie; + + if( $out =~ /\$photocount/i ) { + # Only go count if we've been asked to, on performance grounds + my @photos=picrange($range); + my $numphotos = $#photos + 1; + $out=~s/\$photocount/$numphotos/ieg; + } + $out=doifcount($out,$count,$#groups+1); my $upcount=$oldlevel-$newlevel>0 ? $oldlevel-$newlevel : 0; $out=~s/\(.*?)\<\/IFUPPREVLEVEL\>/$1x$upcount/sieg;