1  use CGI;
 2  use DBI;
 3  my $node = CGI::param('node') || 'main';
 4  my $action = CGI::param('action') || 'show';
 5  my $dbh = DBI->connect("dbi:mysql:wiki","root","");
 6  my $main = my $content = CGI::param('field') || $dbh->selectrow_array('SELECT content FROM pages WHERE title LIKE '.$dbh->quote($node));
 7  if($action eq 'edit'){
 8          $main = CGI::submit({-label=>'Apply', -name=>'apply'}).CGI::textfield('node', $node).CGI::br().CGI::textarea(-name=>'field', -default=>$content, -rows=>20, -columns=>60);}
 9  elsif(CGI::param('apply')){
10          $dbh->do("REPLACE INTO pages (title, content) VALUES (".$dbh->quote($node).",".$dbh->quote(CGI::param('field')).")");}
11  elsif($action eq 'remove'){
12          $main = CGI::submit({-label=>"Delete node $node", -name=>'dodel'}).CGI::hidden('node', $node);}
13  elsif(CGI::param('dodel')){
14          $dbh->do("DELETE FROM pages WHERE title LIKE ".$dbh->quote($node));}
15  foreach(@{$dbh->selectall_arrayref("SELECT title FROM pages")})
16  {push our @menu, CGI::a({href=>CGI::url()."?action=$action&node=".$_->[0]}, @{$_});}
17  print CGI::header({-charset=>'ISO-8859-2'}).CGI::start_html({-lang=>'pl-PL', -title=>'Proof of concept wiki', -encoding=>'iso-8859-2'});
18  foreach (('show', 'edit', 'remove'))
19  {print CGI::a({href=>CGI::url()."?action=$_&node=$node"},"[$_]");}
20  print CGI::start_form().CGI::table({-width=>"100%"},CGI::Tr(CGI::td([$main, CGI::ul(\our @menu)]))).CGI::end_form().CGI::end_html();