X-Git-Url: https://git.distorted.org.uk/~mdw/tgal/blobdiff_plain/ecf3c7a83dc84a2ff6ea23e2aaf70b5d31fccd5f..2fe5383f36780a06574ea3a46e7d4d62ee4111a0:/mason/dhandler diff --git a/mason/dhandler b/mason/dhandler index 2383d6b..42b324c 100755 --- a/mason/dhandler +++ b/mason/dhandler @@ -67,9 +67,9 @@ Failed to find ‘<% $path |h %>’. %###------------------------------------------------------------------------- <%def .contact>\ <%perl> - unless ($r->path_info =~ m!/$!) { - $m->redirect(join_paths($SCRIPTURL, $path) . "/"); - } + unless ($r->path_info =~ m!/$!) + { $m->redirect(join_paths($SCRIPTURL, $path) . "/"); } + my $real = join_paths $IMGROOT, $path; my $url = join_paths $SCRIPTURL, $path; my ($dd, $ff, $ii) = listdir $real; @@ -83,18 +83,27 @@ Failed to find ‘<% $path |h %>’. } (my $nosl = $path) =~ s!/$!!; + my $size = "medthumb"; my %tn; for my $f (@$ff) { $tn{$f} = TrivGal::Image->new($path . $f->name); } for my $d (@$dd) { - my ($ddd, $fff, $iii) = listdir $real . "/" . $d->name; - $tn{$d} = $iii ? - TrivGal::Image->new(join_paths $path, $d->name, $iii->name) : - undef; + my $p = join_paths $path, $d->name; + DIR: for (;;) { + my ($ddd, $fff, $iii) = listdir join_paths $IMGROOT, $p; + if (defined $iii) { + my $index = join_paths $p, $iii->name; + $tn{$d} = TrivGal::Image->new($index); + last DIR; + } + if (!@$ddd) { $tn{$d} = undef; last DIR; } + $p = join_paths $p, $ddd->[0]->name; + } } % -<&| .html, title => "Folder " . $m->interp->apply_escapes($nosl || "[top]", "h"), +<&| .html, title => + "Folder " . $m->interp->apply_escapes($nosl || "[top]", "h"), head => $links &> <& .breadcrumbs, what => "Folder", path => $path &> % @@ -107,28 +116,24 @@ Failed to find ‘<% $path |h %>’. % % if (@$dd) {

Subfolders

-% for my $size (qw{medthumb}) { % } + % } % % if (@$ff) {

Images

-% for my $size (qw{medthumb}) { % } + % } %
@@ -145,11 +150,15 @@ Failed to find ‘<% $path |h %>’. <%perl> my ($dir, $base, $ext) = split_path $path; my $real = join_paths $IMGROOT, $path; + my $img = TrivGal::Image->new($path); + + if (defined $scale) { $m->redirect($img->scale($scale)); } + my $url = join_paths $IMGURL, $path; my $realdir = join_paths $IMGROOT, $dir; my $urldir = join_paths $SCRIPTURL, $dir; my ($dd, $ff, $ii) = listdir $realdir; - my $vw = TrivGal::Image->new($path)->scale("view"); + my $vw = $img->scale("view"); my $fi = undef; FILE: for (my $i = 0; $i < @$ff; $i++) @@ -205,7 +214,7 @@ Failed to find ‘<% $path |h %>’. % for my $f (@$ff) { <& .thumbnail, target => $f->name, img => $img{$f}, size => $size, caption => $m->interp->apply_escapes($f->name, "h"), - focus => $f->name eq "$base$ext" &>\ + focus => $f eq $this &>\ % } % } @@ -214,6 +223,7 @@ Failed to find ‘<% $path |h %>’. % <%args> $path + $scale => undef % @@ -252,12 +262,12 @@ Failed to find ‘<% $path |h %>’. % else { $tn = "$STATICURL/folder.svg"; } % if ($focus) {
- +
<% $caption %>
% } else {
- +
<% $caption %> % if (defined $comment) { @@ -308,7 +318,6 @@ Failed to find ‘<% $path |h %>’. %###------------------------------------------------------------------------- <%once> use autodie; -use Data::Dumper; use File::stat; use TrivGal; @@ -325,7 +334,7 @@ use Data::Dumper; elsif (-f $st) { $comp = ".image"; } else { $comp = ".not-found"; } $r->header_out("X-AGPL-Source" => $SRCURL); - $m->comp($comp, path => $path); + $m->comp($comp, path => $path, %ARGS); % %###----- That's all, folks -------------------------------------------------