#!/usr/bin/perl # stem.cgi # todo - # html_escape image names and annotations # mailto the annotation email only if it contains an @ # silly - # auto-generate thumbnails? # make symlinks work # image (or directory) contains an ahref? # search should cope with plurals use strict; use warnings; use lib qw(/home/blech/perllib/perl5 /home/blech/perllib/share/perl/5.8.4 /home/blech/perllib/lib/perl/5.8.4 /home/blech/perllib/lib/home/blech/perllib/ /home/blech/web/husk.org/pics); use Data::Dumper; use Stem; use CGI qw/:standard/; use Template; use File::Basename; my $errors = Stem::Config::test_config(); if (scalar(@{$errors})) { foreach my $error (@{$errors}) { print STDERR $error."\n"; } print "\n"; exit(-1); } my $template = Template->new({INCLUDE_PATH => Stem::Config::get('template_dir')}) || die "template error\n"; my ($vars, $template_file); # TT globals my $stem = Stem->new(); my ($command, $param) = $stem->dispatch(); if ($command eq 'search') { my $search = Stem::Search->new(); $vars = $search->build($param); $template_file = Stem::Config::get($vars->{template}); } elsif ($command eq 'view') { # todo - make params safe my $view = Stem::View->new(); my ($email, $comment) = (param('email'), param('comment')); $vars = $view->build($param, $email, $comment); $template_file = Stem::Config::get('view_template'); } else { my $browse = Stem::Browse->new(); $vars = $browse->build($param) if ($command eq 'browse'); $vars = $browse->rss() if ($command eq 'rss'); $vars = $browse->front() if (!defined $vars); if ($command eq 'browse' || $command eq 'rss') { $template_file = Stem::Config::get("${command}_template"); } else { $template_file = Stem::Config::get('front_template'); } } my $common_vars = $stem->vars(); map { $vars->{$_} = $common_vars->{$_} } keys (%{ $common_vars }); $vars->{'contenttype'} = $command; my $contenttype = ($command eq 'rss') ? 'text/xml' : 'text/html'; # actually output print header($contenttype); $template->process($template_file, $vars) || die $template->error(), "\n"; __END__ =head1 NAME stem.cgi - interface to CGI =head1 CVS $Header: /home/cvsroot/public/stem/stem.cgi,v 1.2 2003/04/06 11:34:34 blech Exp $ =head1 AUTHOR Andy McFarland Paul Mison