X-Git-Url: http://www.average.org/gitweb/?p=mkgallery.git;a=blobdiff_plain;f=mkgallery.pl;h=f7ef6c3e7ef4ff41411a9b379e9b42e4e8269310;hp=40840b76e1425b639b8412ea592c7a5bf475acb9;hb=c54609fad7876eddd650ffc960d1fa463cf44845;hpb=035a5d0ef46b005f32ffacaba9ae660f9540fed5 diff --git a/mkgallery.pl b/mkgallery.pl index 40840b7..f7ef6c3 100755 --- a/mkgallery.pl +++ b/mkgallery.pl @@ -29,6 +29,7 @@ package FsObj; use strict; use Carp; use POSIX qw/getcwd strftime/; +use HTTP::Date; use CGI qw/:html *table *Tr *td *center *div *Link/; use Image::Info qw/image_info dim/; use Term::ReadLine; @@ -109,7 +110,7 @@ sub new { -depth=>$parent->{-depth}+1, -base=>$name, -fullpath=>$parent->{-fullpath}.'/'.$name, - -relpath=>$parent->{-relpath}.'/'.$name, + -relpath=>$parent->{-relpath}.$name.'/', -inc=>'../'.$parent->{-inc}, }; } else { @@ -164,6 +165,7 @@ sub initpaths { } my $relpath = substr($fullpath,$pos); $relpath =~ s%^/%%; + $relpath .= '/' if ($relpath); $self->{-relpath} = $relpath; $self->{-toppath} = substr($fullpath,0,$pos); #print "rel=$relpath, top=$self->{-toppath}, inc=$inc\n"; @@ -178,8 +180,9 @@ sub initpaths { sub initrss { my $self=shift; # this is not a method but we cheat my $fullpath=$self->{-fullpath}; + my $toppath=$self->{-toppath}; my $inc=$self->{-inc}.$incdir.'/'; - my $conffile=$inc.'rss.conf'; + my $conffile=$toppath.'/'.$incdir.'/rss.conf'; my $CONF; if ($rssfile) { @@ -217,9 +220,16 @@ sub initrss { } $rssobj->{'rss'}->save($rssobj->{'file'}); } else { - my $link=""; - for (my $pos=index($rssfile,'/');$pos>=0; - $pos=index($rssfile,'/',$pos+1)) { + my $link; + my $p1; + my $p2; + for ($p1=0,$p2=length($toppath); + substr($rssfile,$p1,3) eq '../' && $p2>0; + $p1+=3,$p2=rindex($toppath,'/',$p2-1)) {;} + $link=substr($toppath,$p2); + $link =~ s%^/%%; + $link .= '/' if ($link); + while (($p1=index($rssfile,'/',$p1+1)) >= 0) { $link = '../'.$link; } @@ -629,11 +639,11 @@ sub startindex { my $inc = $self->{-inc}.$incdir.'/'; my $title = $self->{-title}; my $rsslink=""; - if ($self->{-rss}) { + if ($rssobj) { $rsslink=Link({-rel=>'alternate', -type=>'application/rss+xml', -title=>'RSS', - -href=>$self->{-rss}}); + -href=>$self->{-inc}.$rssfile}); } print $IND start_html(-title => $title, -encoding=>"utf-8", @@ -657,7 +667,7 @@ sub startindex { -id => 'indexContainer'}), "\n"; my $EVL; - if (open($EVL,$inc.'header.pl')) { + if (open($EVL,$self->{-toppath}.'/'.$incdir.'/header.pl')) { my $prm; while (<$EVL>) { $prm .= $_; @@ -671,6 +681,9 @@ sub startindex { ); print $IND eval $prm,"\n"; } else { + print STDERR "could not open ", + $self->{-toppath}.'/'.$incdir.'/header.pl', + " ($!), reverting to default header"; print $IND a({-href=>"../index.html"},"UP"),"\n", h1({-class=>'title'},$title),"\n", } @@ -682,7 +695,7 @@ sub endindex { print $IND end_div; my $EVL; - if (open($EVL,$self->{-inc}.$incdir.'/footer.pl')) { + if (open($EVL,$self->{-toppath}.'/'.$incdir.'/footer.pl')) { my $prm; while (<$EVL>) { $prm .= $_; @@ -695,6 +708,10 @@ sub endindex { -breadcrumbs => "breadcrumbs unimplemented", ); print $IND eval $prm,"\n"; + } else { + print STDERR "could not open ", + $self->{-toppath}.'/'.$incdir.'/footer.pl', + " ($!), reverting to default empty footer"; } print $IND end_html,"\n"; @@ -706,11 +723,12 @@ sub endindex { $self->{-numofimgs}, $self->{-numofsubs}; my $rsslink=$rssobj->{'rss'}->channel('link'). - $self->{-relpath}."/index.html"; + $self->{-relpath}."index.html"; $rssobj->{'rss'}->add_item( title => $self->{-title}, link => $rsslink, description => $rsstitle, + pubDate => time2str(time), ); } }