You might want to take a peak at Plone http://www.plone.org it's a pretty web interface pasted over the (rather steep learning curve) Zope architecture. They were voted as one of the top Open Source projects of the year.
I took a look at their home page and signed up for a demo account: Slick.
Everything is a big engine to install and you have to have a hefty box to run it on. Javajunkies.org didn't start running smoothly until I had upgraded to a 2Ghz machine with 1G of ram.
You can also export the contents of your Kwiki http://kwiki.org into a template based on your site. I'm using a Kwiki back end with write access to my developers and exporting the contents into the main site's documentation with a cron job (you might want to have a manual 'commit' process). The formatting rules for Kwiki are super easy and look good and exporting them is as easy as (code modified for publishing here, untested in this form):
use CGI::Kwiki;
use CGI::Kwiki::Formatter;
use constant DEBUG => 1;
sub CGI::Kwiki::Formatter::wiki_link_format {
my ($self, $text) = @_;
return qq~<a class="empty">$text</a>~
unless $self->driver->database->exists($text);
return qq~<a class="private">$text</a>~
unless $self->is_readable($text);
return qq~<a href="$text.html">$text</a>~;
}
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 l
+inks
### 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(<input type="submit" name="button-login" valu
+e="LOGIN">);
$templatedoutput =~ s/$trashcan/ /gm;
my $fulldoc = $Admin->Template_Canner($templatedoutput,"$page"
+);
print OUTFH $fulldoc;
close OUTFH;
}
}
That "$Admin->Template_Canner" section at the end is my site's templating engine. This script is basically: Read each page of document repository > strip out headers and footers > dump content into site template with formatting > put in appropriate directory. The Kwiki site is heavily monitored so you can get hints and tips quickly.
The Kwiki solution is good for flat web sites, but probably not a suitable solution for sites with a lot of directory depth. But, creating content repositories for each individual site is a breeze because it's so damn easy to install.
|