http://www.perlmonks.org?node_id=322236


in reply to perl-based CMS

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.

Replies are listed 'Best First'.
Re: Re: perl-based CMS
by geektron (Curate) on Jan 19, 2004 at 01:44 UTC
    going the Wiki direction may be a little too 'interactive' for the goals ... for the most part only a select few will be able to perform updates. plone looks a little more like what i had in mind.