From: Joey Hess Date: Sat, 2 Aug 2008 17:27:58 +0000 (-0400) Subject: skeleton of web setup plugin X-Git-Tag: 2.60~126 X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/commitdiff_plain/680cd2fbc3c3df34409bfdc2bdb3f7473c1b1523?ds=inline skeleton of web setup plugin --- diff --git a/IkiWiki/Plugin/websetup.pm b/IkiWiki/Plugin/websetup.pm new file mode 100644 index 000000000..e1536a1a7 --- /dev/null +++ b/IkiWiki/Plugin/websetup.pm @@ -0,0 +1,90 @@ +#!/usr/bin/perl +package IkiWiki::Plugin::websetup; + +use warnings; +use strict; +use IkiWiki 2.00; + +sub import { #{{{ + hook(type => "sessioncgi", id => "websetup", + call => \&sessioncgi); + hook(type => "formbuilder_setup", id => "websetup", + call => \&formbuilder_setup); +} # }}} + +sub showform ($$) { #{{{ + my $cgi=shift; + my $session=shift; + + if (! defined $session->param("name") || + ! IkiWiki::is_admin($session->param("name"))) { + error(gettext("you are not logged in as an admin")); + } + + eval q{use CGI::FormBuilder}; + error($@) if $@; + + my $form = CGI::FormBuilder->new( + title => "setup", + name => "setup", + header => 0, + charset => "utf-8", + method => 'POST', + params => $cgi, + action => $config{cgiurl}, + template => {type => 'div'}, + stylesheet => IkiWiki::baseurl()."style.css", + ); + my $buttons=["Save Setup", "Cancel"]; + + IkiWiki::decode_form_utf8($form); + IkiWiki::run_hooks(formbuilder_setup => sub { + shift->(form => $form, cgi => $cgi, session => $session, + buttons => $buttons); + }); + IkiWiki::decode_form_utf8($form); + + $form->field(name => "do", type => "hidden", value => "setup", + force => 1); + + if (! $form->submitted) { + # TODO + } + + if ($form->submitted eq "Cancel") { + IkiWiki::redirect($cgi, $config{url}); + return; + } + elsif ($form->submitted eq 'Save Setup' && $form->validate) { + # TODO + + $form->text(gettext("Setup saved.")); + } + + IkiWiki::showform($form, $buttons, $session, $cgi); +} #}}} + +sub sessioncgi ($$) { #{{{ + my $cgi=shift; + my $session=shift; + + if ($cgi->param("do") eq "setup") { + showform($cgi, $session); + exit; + } +} #}}} + +sub formbuilder_setup (@) { #{{{ + my %params=@_; + + my $form=$params{form}; + if ($form->title eq "preferences") { + push @{$params{buttons}}, "Wiki Setup"; + if ($form->submitted && $form->submitted eq "Wiki Setup") { + showform($params{cgi}, $params{session}); + exit; + } + } +} #}}} + +1