#!/usr/bin/perl
#require "cgi-lib.pl";
# La directory con i dati
$dati = "../dati";
# La copertina di default nel caso che non sia ancora stata scannata
$default = "default.gif";
# I templates html per la pagina con l'elenco e quella della scheda
$LStemplate = "./lista.html";
$SCtemplate = "./scheda.html";
$NFtemplate = "./notfound.html";
$ELtemplate = "./emptylist.html";
if ($libro = $ENV{'PATH_INFO'}) {
$libro =~ s/^\///;
$libro =~ s/\W/\?/g;
}
# Stiamo editando un libro esistente o nuovo
if ($libro =~ /^libro_\d{3}$/ && -f "$dati/$libro") {
@dsc = `cat $dati/$libro`;
$parm = $note;
foreach $line (@dsc) {
if ($line =~ /(^\w+):(.*)/) {
if (defined($inul)) {
${$parm} .= "\n\n";
undef $inul;
}
($parm,$line) = ($1,$2);
}
$line =~ s/\\n/
/;
if ($line =~ /^-/) {
$line =~ s/^-\s*//;
$line = "\n
$line";
$line = "\n\n$line" if !defined $inul;
$inul = 'lista';
}
else {
$line = "\n
\n$line" if defined $inul;
undef $inul;
}
${$parm} .= " $line";
}
pushpage (`cat $SCtemplate`);
}
# Stiamo visualizzando la lista, oppure abbiamo cercato un libro che non esiste
else {
@libri = grep (/libro_\d{3}\n*$/,`ls $dati`) or pushpage (`cat $ELtemplate`);
foreach $book (@libri) {
chop $book;
@dsc = `cat $dati/$book`;
foreach $key ('autore','editore','titolo') {
($val) = grep (/^$key:/,@dsc);
$val =~ s/^$key://;
chop $val if $val =~ /\n$/;
${$key}{$book} = $val;
}
}
if (!$libro) { pushpage (`cat $LStemplate`) }
else { pushpage (`cat $NFtemplate`) }
}
sub pushpage {
my @page = @_;
# print "Expires: 0\n";
print "Content-type: text/html\n\n";
foreach $line (@page) {
chop $line;
if ($line =~ s/^{loop}//) {
while (($book,$autore) = each %autore) {
$editore = $editore{$book};
$titolo = $titolo{$book};
$newline = $line;
$newline =~ s/_LIBRO_/$book/g;
$newline =~ s/_AUTORE_/$autore/g;
$newline =~ s/_TITOLO_/$titolo/g;
$newline =~ s/_EDITORE_/$editore/g;
print "$newline\n";
}
}
elsif ($line =~ /_.+_/) {
$line =~ s/_LIBRO_/$libro/g;
$line =~ s/_TITOLO_/$titolo/g;
$line =~ s/_SOTTOTITOLO_/$sottotitolo/g;
$line =~ s/_AUTORE_/$autore/g;
$line =~ s/_EDITORE_/$editore/g;
$line =~ s/_NOTE_/$note/g;
$line =~ s/_PAGINE_/$pagine/g;
$line =~ s/_PREZZO_/$prezzo/g;
$line =~ s/_DESCRIZIONE_/$descrizione/g;
print "$line\n";
}
else { print "$line\n" }
}
exit;
}