# $_{-version} SVN release of the running script
# $_{-depth} subdir depth relative to the "top" with .gallery2
# $_{-title} title of the current subdir (.title contents)
-# $_{-breadcrumbs} not implemented at the moment
+# $_{-path} path from the dir that contains .gallery2
"<h1 class=\"title\">$_{-title}</h1>".
-($_{-depth}?"<div class=\"linkup\"><a href=\"../index.html\">UP</a></div>":"")
+($_{-depth}?
+ "<div class=\"linkup\"><a href=\"../index.html\">UP</a></div>":
+ "<div class=\"linkup\"><a href=\"/\">HOME</a></div>")
$class = ref($this);
my $parent = $this;
my $name = shift;
- my $fullpath = $parent->{-fullpath}.'/'.$name;
$self = {
-parent=>$parent,
-root=>$parent->{-root},
+ -toppath=>$parent->{-toppath},
-depth=>$parent->{-depth}+1,
-base=>$name,
- -fullpath=>$fullpath,
+ -fullpath=>$parent->{-fullpath}.'/'.$name,
+ -relpath=>$parent->{-relpath}.'/'.$name,
-inc=>'../'.$parent->{-inc},
- -rss=>'../'.$parent->{-rss},
};
} else {
$class = $this;
-depth=>0,
-root=>$root,
-fullpath=>$root,
- -inc=>getinc($root),
- -rss=>getrss($root),
};
+ # fill in -inc, -rss, -relpath
+ initpaths($self); # we are not blessed yet, so cheat.
}
bless $self, $class;
if ($debug) {
return $self;
}
-sub getinc {
- my $fullpath=shift; # this is not a method
+sub initpaths {
+ my $self=shift; # this is not a method but we cheat
my $depth=20; # arbitrary max depth
+ my $fullpath=$self->{-fullpath};
+ my $inc;
+ my $rss;
+ my $relpath;
if ($incpath) {
- return $incpath."/.gallery2";
- }
-
- my $inc=".gallery2";
- while ( ! -d $fullpath."/".$inc ) {
- $inc = "../".$inc;
- last unless ($depth-- > 0);
+ $inc = $incpath."/.gallery2";
+ } else {
+ $inc=".gallery2";
+ while ( ! -d $fullpath."/".$inc ) {
+ $inc = "../".$inc;
+ last unless ($depth-- > 0);
+ }
}
if ($depth > 0) {
- return $inc.'/'; # prefix with trailing slash
+ $self->{-inc} = $inc.'/';
+ my $dp=0;
+ my $pos;
+ for ($pos=index($inc,'/');$pos>=0;
+ $pos=index($inc,'/',$pos+1)) {
+ $dp++;
+ }
+ for ($pos=length($fullpath);$dp-->0 && $pos>0;
+ $pos=rindex($fullpath,'/',$pos-1)) {;}
+ my $relpath = substr($fullpath,$pos);
+ $relpath =~ s%^/%%;
+ $self->{-relpath} = $relpath;
+ $self->{-toppath} = substr($fullpath,0,$pos);
+ initrss($self);
} else {
- return 'NO-.INCLUDE-IN-PATH/'; # won't work anyway
+ $self->{-inc} = 'NO-.INCLUDE-IN-PATH/'; # won't work anyway
+ $self->{-rss} = '';
+ $self->{-relpath} = '';
}
}
-sub getrss {
- my $fullpath=shift; # this is not a method
- my $depth=20; # arbitrary max depth
+sub initrss {
+ my $self=shift; # this is not a method but we cheat
+ my $fullpath=$self->{-fullpath};
+ my $depth=20;
+ return;
return "" unless $rssfile;
my $rss=$rssfile;
close($T);
}
if ($asktitle || (!$title && !$noasktitle)) {
- my $prompt = $self->{-base};
+ my $prompt = $self->{-relpath};
$prompt = '/' unless ($prompt);
my $OUT = $term->OUT || \*STDOUT;
print $OUT "Enter title for $fullpath\n";
}
}
unless ($title) {
- $title=substr($fullpath,length($self->{-root}));
+ $title=$self->{-relpath};
}
$self->{-title}=$title;
print "title in $fullpath is $title\n" if ($debug);