Skip to Navigation

Wiki code

  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();