use CGI::Kwiki;
use CGI::Kwiki::Formatter;
use constant DEBUG => 1;
sub CGI::Kwiki::Formatter::wiki_link_format {
my ($self, $text) = @_;
return qq~$text~
unless $self->driver->database->exists($text);
return qq~$text~
unless $self->is_readable($text);
return qq~$text~;
}
use strict;
use warnings;
publish_static('/webdirectory/manual');
sub publish_static {
my $outdir = shift or die "must specify outdir";
die "can't read/write to $outdir or it's not a directory : $!"
unless -d $outdir and -r _ and -w _;
my $driver = CGI::Kwiki::load_driver();
$driver->load_class('display');
for my $page( $driver->database->pages ){
print STDERR "processing $page\n" if DEBUG;
my $outfile = "$outdir/$page.html";
my $wiki_text = $driver->database->load( $page );
my $formatted = $driver->formatter->process($wiki_text);
open OUTFH, '>', $outfile or die "can't clobber $outfile $! ";
### unless you modify your templates like I, you ought to modify all links
### using HTML::Parser to remove references to admin.cgi, blog.cgi ...
my $templatedoutput = $driver->display->template->process(
[qw(display_body)],
display => $formatted,
is_editable => 0,
);
my $trashcan = qq();
$templatedoutput =~ s/$trashcan/ /gm;
my $fulldoc = $Admin->Template_Canner($templatedoutput,"$page");
print OUTFH $fulldoc;
close OUTFH;
}
}