use File::Spec;
my $show_img;
+my $want_archive;
my %args = (
'i' => { 'var' => \$show_img, 'check' => '\d+' },
+ 'a' => { 'var' => \$want_archive },
);
sub error($) {
return $self->{gal}->get($key);
}
+sub extras($$) {
+ my ($self, $key) = @_;
+ my $val = $self->get($key);
+ if (ref $val eq 'CODE') {
+ return &$val($self->{gal});
+ } else {
+ return $val;
+ }
+}
+
sub html_top($) {
my ($self) = @_;
my $title = UCW::CGI::html_escape($self->get('Title'));
- my $hextras = $self->get('WebHeadExtras');
- my $textras = $self->get('WebTopExtras');
+ my $hextras = $self->extras('WebHeadExtras');
+ my $textras = $self->extras('WebTopExtras');
my $theme_hextras = $self->theme_head_extras;
print <<EOF ;
Content-Type: text/html
sub html_bot($) {
my ($self) = @_;
- print $self->get('WebBotExtras'), "</body></html>\n";
+ print $self->extras('WebBotExtras'), "</body></html>\n";
}
sub show_img($) {
my ($self) = @_;
if ($show_img < 1 || $show_img > $self->{num_photos}) {
- UCW::CGI::http_error(404, 'No such photo');
+ UCW::CGI::http_error('404 No such photo');
return;
}
$self->html_top;
$self->show_links(($show_img > 1 ? ("?i=".($show_img-1)) : ""),
- "?",
+ ".",
($show_img < $self->{num_photos} ? ("?i=".($show_img+1)) : ""));
my $t = UCW::CGI::html_escape($m->{title});
$self->html_bot;
}
+sub show_pre_thumbs($) {
+ my ($self) = @_;
+}
+
+sub show_post_thumbs($) {
+ my ($self) = @_;
+}
+
sub show_list($) {
my ($self) = @_;
$self->html_top;
print "<h1>", $self->get('Title'), "</h1>\n";
my $subtitle = $self->get('SubTitle');
print "<h2>$subtitle</h2>\n" if $subtitle ne "";
+ $self->show_pre_thumbs;
my $meta = $self->{meta};
for my $idx (1..$self->{num_photos}) {
$self->show_thumb($meta, $id, $click_url);
}
+ $self->show_post_thumbs;
$self->html_bot();
}
sub dispatch($) {
my ($self) = @_;
+ binmode STDOUT, ':utf8';
UCW::CGI::parse_args(\%args);
$self->{meta} = $self->{gal}->read_meta(File::Spec->catfile($self->get('CacheDir'), 'cache.meta'));
$self->{num_photos} = scalar @{$self->{meta}->{sequence}};
- if ($show_img ne "") {
+ if ($want_archive) {
+ require UCW::Gallery::Archive;
+ UCW::Gallery::Archive::send_archive($self->{gal}, $self->{meta});
+ } elsif ($show_img ne "") {
$self->show_img;
} else {
$self->show_list;
my $self = { gal => $gal };
$gal->def(
WebFE => $self,
+
+ # Extras are either strings or functions called with the current gallery object as parameter
WebHeadExtras => "",
WebTopExtras => "",
WebBotExtras => "",
+
+ # Used by the theming logic
WebThemeCSS => undef,
+
+ # 1 if thumbnail link to sub-pages with images, 0 if they link directly to image files
WebImageSubpages => 1,
+
+ # If enabled, calling the CGI with a=zip produces a ZIP archive with all photos.
+ WebAllowArchives => 1,
);
bless $self, $class;
return $self;