$NetBSD: patch-aa,v 1.7 2006/04/16 14:19:25 kim Exp $ --- lib/Apache/Gallery.pm.orig 2004-09-12 00:53:05.000000000 +0300 +++ lib/Apache/Gallery.pm 2006-04-16 16:43:43.000000000 +0300 @@ -13,22 +13,22 @@ eval('require mod_perl;'); if ( $@ ) { - require Apache2::mod_perl; + require mod_perl2; } $::MP2 = ($mod_perl::VERSION >= 1.99); if ($::MP2) { - require Apache2; - require Apache::Server; - require Apache::RequestRec; - require Apache::Log; + #require Apache2; + #require Apache2::Server; + require Apache2::RequestRec; + require Apache2::Log; require APR::Table; - require Apache::RequestIO; - require Apache::SubRequest; - require Apache::Const; + require Apache2::RequestIO; + require Apache2::SubRequest; + require Apache2::Const; - Apache::Const->import(-compile => 'OK','DECLINED','FORBIDDEN','NOT_FOUND'); + Apache2::Const->import(-compile => 'OK','DECLINED','FORBIDDEN','NOT_FOUND'); } else { @@ -84,10 +84,10 @@ } if (-f $filename or -d $filename) { - return $::MP2 ? Apache::OK() : Apache::Constants::OK(); + return $::MP2 ? Apache2::Const::OK() : Apache::Constants::OK(); } else { - return $::MP2 ? Apache::NOT_FOUND() : Apache::Constants::NOT_FOUND(); + return $::MP2 ? Apache2::Const::NOT_FOUND() : Apache::Constants::NOT_FOUND(); } } @@ -105,7 +105,7 @@ } $r->print($content); - return $::MP2 ? Apache::OK() : Apache::Constants::OK(); + return $::MP2 ? Apache2::Const::OK() : Apache::Constants::OK(); } # Selectmode providing checkboxes beside all thumbnails @@ -113,7 +113,7 @@ # Let Apache serve icons without us modifying the request if ($r->uri =~ m/^\/icons/i) { - return $::MP2 ? Apache::DECLINED() : Apache::Constants::DECLINED(); + return $::MP2 ? Apache2::Const::DECLINED() : Apache::Constants::DECLINED(); } # Lookup the file in the cache and scale the image if the cached # image does not exist @@ -142,7 +142,7 @@ if ($::MP2) { $r->sendfile($file); - return Apache::OK(); + return Apache2::Const::OK(); } else { $r->path_info(''); @@ -157,7 +157,7 @@ unless (-f $filename or -d $filename) { show_error($r, 404, "404!", "No such file or directory: ".uri_escape($r->uri, $escape_rule)); - return $::MP2 ? Apache::OK() : Apache::Constants::OK(); + return $::MP2 ? Apache2::Const::OK() : Apache::Constants::OK(); } my $doc_pattern = $r->dir_config('GalleryDocFile'); @@ -171,14 +171,14 @@ # Let Apache serve files we don't know how to handle anyway if (-f $filename && $filename !~ m/$img_pattern/i) { - return $::MP2 ? Apache::DECLINED() : Apache::Constants::DECLINED(); + return $::MP2 ? Apache2::Const::DECLINED() : Apache::Constants::DECLINED(); } if (-d $filename) { unless (-d cache_dir($r, 0)) { unless (create_cache($r, cache_dir($r, 0))) { - return $::MP2 ? Apache::OK() : Apache::Constants::OK(); + return $::MP2 ? Apache2::Const::OK() : Apache::Constants::OK(); } } @@ -198,7 +198,7 @@ unless (opendir (DIR, $filename)) { show_error ($r, 500, $!, "Unable to access directory $filename: $!"); - return $::MP2 ? Apache::OK() : Apache::Constants::OK(); + return $::MP2 ? Apache2::Const::OK() : Apache::Constants::OK(); } $tpl_vars{MENU} = generate_menu($r); @@ -253,9 +253,28 @@ # Combine directories and files to one listing my @listing; - push (@listing, @directories); - push (@listing, @files); - push (@listing, @downloadable_files); + if (!defined($r->dir_config('GallerySortReverse')) + || $r->dir_config('GallerySortReverse') eq '0') { + push (@listing, @directories); + push (@listing, @files); + push (@listing, @downloadable_files); + } else { + if ($r->dir_config('GallerySortReverse') & 1) { + push (@listing, reverse @directories); + } else { + push (@listing, @directories); + } + if ($r->dir_config('GallerySortReverse') & 2) { + push (@listing, reverse @files); + } else { + push (@listing, @files); + } + if ($r->dir_config('GallerySortReverse') & 4) { + push (@listing, reverse @downloadable_files); + } else { + push (@listing, @downloadable_files); + } + } if (@listing) { @@ -319,7 +338,7 @@ if (-d $thumbfilename) { my $dirtitle = ''; if (-e $thumbfilename . ".folder") { - $dirtitle = get_filecontent($thumbfilename . ".folder"); + $dirtitle = get_filecontent($thumbfilename . ".folder", 1); } $dirtitle = $dirtitle ? $dirtitle : $file; @@ -393,7 +412,7 @@ if (-f $topdir . '.comment') { my $comment_ref = get_comment($topdir . '.comment'); my %comment_vars; - $comment_vars{COMMENT} = $comment_ref->{COMMENT} . '
' if $comment_ref->{COMMENT}; + $comment_vars{COMMENT} = $comment_ref->{COMMENT} if $comment_ref->{COMMENT}; $comment_vars{TITLE} = $comment_ref->{TITLE} if $comment_ref->{TITLE}; $tpl_vars{DIRCOMMENT} = fill_in_file($tpl_vars{comment}, HASH => \%comment_vars, @@ -420,7 +439,7 @@ } $r->print($tpl_vars{MAIN}); - return $::MP2 ? Apache::OK() : Apache::Constants::OK(); + return $::MP2 ? Apache2::Const::OK() : Apache::Constants::OK(); } else { @@ -429,9 +448,9 @@ if (defined($ENV{QUERY_STRING}) && $ENV{QUERY_STRING} eq 'orig') { if ($r->dir_config('GalleryAllowOriginal') ? 1 : 0) { $r->filename($filename); - return $::MP2 ? Apache::DECLINED() : Apache::Constants::DECLINED(); + return $::MP2 ? Apache2::Const::DECLINED() : Apache::Constants::DECLINED(); } else { - return $::MP2 ? Apache::FORBIDDEN() : Apache::Constants::FORBIDDEN(); + return $::MP2 ? Apache2::Const::FORBIDDEN() : Apache::Constants::FORBIDDEN(); } } @@ -443,7 +462,7 @@ unless (-d $cache_path) { unless (create_cache($r, $cache_path)) { - return $::MP2 ? Apache::OK() : Apache::Constants::OK(); + return $::MP2 ? Apache2::Const::OK() : Apache::Constants::OK(); } } @@ -465,7 +484,7 @@ if ($cgi->param('width')) { unless ((grep $cgi->param('width') == $_, @sizes) or ($cgi->param('width') == $original_size)) { show_error($r, 200, "Invalid width", "The specified width is invalid"); - return $::MP2 ? Apache::OK() : Apache::Constants::OK(); + return $::MP2 ? Apache2::Const::OK() : Apache::Constants::OK(); } $width = $cgi->param('width'); @@ -534,7 +553,7 @@ unless (opendir(DATADIR, $path)) { show_error($r, 500, "Unable to access directory", "Unable to access directory $path"); - return $::MP2 ? Apache::OK() : Apache::Constants::OK(); + return $::MP2 ? Apache2::Const::OK() : Apache::Constants::OK(); } my @pictures = grep { /$img_pattern/i } readdir (DATADIR); closedir(DATADIR); @@ -542,6 +561,9 @@ $tpl_vars{TOTAL} = scalar @pictures; + my $prevtext = (defined($r->dir_config('GalleryPreviousText')) ? $r->dir_config('GalleryPreviousText') : '« prev' ); + my $nexttext = (defined($r->dir_config('GalleryNextText')) ? $r->dir_config('GalleryNextText') : 'next »' ); + my $prevpicture; my $nextpicture; @@ -567,13 +589,13 @@ $nav_vars{FILENAME} = $prevpicture; $nav_vars{WIDTH} = $width; $nav_vars{PICTURE} = uri_escape(".cache/$cached", $escape_rule); - $nav_vars{DIRECTION} = "« prev"; + $nav_vars{DIRECTION} = $prevtext; $tpl_vars{BACK} = fill_in_file($tpl_vars{navpicture}, HASH => \%nav_vars, ); } else { - $tpl_vars{BACK} = " "; + $tpl_vars{BACK} = ''; } $nextpicture = $pictures[$i+1]; @@ -591,14 +613,14 @@ $nav_vars{FILENAME} = $nextpicture; $nav_vars{WIDTH} = $width; $nav_vars{PICTURE} = uri_escape(".cache/$cached", $escape_rule); - $nav_vars{DIRECTION} = "next »"; + $nav_vars{DIRECTION} = $nexttext; $tpl_vars{NEXT} = fill_in_file($tpl_vars{navpicture}, HASH => \%nav_vars ); } else { - $tpl_vars{NEXT} = " "; + $tpl_vars{NEXT} = ''; } } } @@ -607,7 +629,7 @@ if (-f $path . '/' . $picfilename . '.comment') { my $comment_ref = get_comment($path . '/' . $picfilename . '.comment'); $foundcomment = 1; - $tpl_vars{COMMENT} = $comment_ref->{COMMENT} . '
' if $comment_ref->{COMMENT}; + $tpl_vars{COMMENT} = $comment_ref->{COMMENT} if $comment_ref->{COMMENT}; $tpl_vars{TITLE} = $comment_ref->{TITLE} if $comment_ref->{TITLE}; } else { $tpl_vars{COMMENT} = ''; @@ -749,7 +771,7 @@ unless ((grep $cgi->param('slideshow') == $_, @slideshow_intervals)) { show_error($r, 200, "Invalid interval", "Invalid slideshow interval choosen"); - return $::MP2 ? Apache::OK() : Apache::Constants::OK(); + return $::MP2 ? Apache2::Const::OK() : Apache::Constants::OK(); } $tpl_vars{URL} = uri_escape($nextpicture, $escape_rule); @@ -781,7 +803,7 @@ } $r->print($tpl_vars{MAIN}); - return $::MP2 ? Apache::OK() : Apache::Constants::OK(); + return $::MP2 ? Apache2::Const::OK() : Apache::Constants::OK(); } @@ -1040,7 +1062,7 @@ } } elsif (ref($element) eq 'HASH') { - $value .= "
{ "; + $value .= " { "; foreach (sort keys %{$element}) { $value .= "$_ = " . $element->{$_} . ' '; } @@ -1226,6 +1248,7 @@ sub get_filecontent { my $file = shift; + my $fold = shift; open(FH, $file) or return undef; my $content = ''; { @@ -1233,6 +1256,8 @@ $content = ; } close(FH); + chomp($content); + $content =~ s/\n/
\n/g if $fold; return $content; } @@ -1252,7 +1277,6 @@ } while () { - chomp; $comment_ref->{COMMENT} .= $_; } close(FH); @@ -1319,6 +1343,8 @@ return qq{ $root_text }; } + my $delim = (defined($r->dir_config('GalleryMenuSeparator')) ? $r->dir_config('GalleryMenuSeparator') : ' / ' ); + my $menu; my $menuurl; foreach my $link (@links) { @@ -1326,23 +1352,26 @@ $menuurl .= $link."/"; my $linktext = $link; unless (length($link)) { - $linktext = "$root_text "; + $linktext = $root_text; } else { $dirname = File::Spec->catdir($dirname, $link); if (-e $dirname . ".folder") { - $linktext = get_filecontent($dirname . ".folder"); + $linktext = get_filecontent($dirname . ".folder", 0); } } - $menu .= "$linktext / "; + if (length($menu)) { + $menu .= $delim; + } + $menu .= '' . $linktext . ''; } if (-f $filename) { - $menu .= $picturename; + $menu .= $delim . $picturename; } else { @@ -1752,7 +1781,7 @@ Example: TITLE: This is the new title of the page - And this is the comment.
+ And this is the comment.
And this is line two of the comment. The visible name of the folder is by default identical to the name of