summaryrefslogtreecommitdiff
path: root/IkiWiki/Plugin/websetup.pm
blob: e1536a1a7a238c1422960845ab49c3e6943721c4 (plain)
  1. #!/usr/bin/perl
  2. package IkiWiki::Plugin::websetup;
  3. use warnings;
  4. use strict;
  5. use IkiWiki 2.00;
  6. sub import { #{{{
  7. hook(type => "sessioncgi", id => "websetup",
  8. call => \&sessioncgi);
  9. hook(type => "formbuilder_setup", id => "websetup",
  10. call => \&formbuilder_setup);
  11. } # }}}
  12. sub showform ($$) { #{{{
  13. my $cgi=shift;
  14. my $session=shift;
  15. if (! defined $session->param("name") ||
  16. ! IkiWiki::is_admin($session->param("name"))) {
  17. error(gettext("you are not logged in as an admin"));
  18. }
  19. eval q{use CGI::FormBuilder};
  20. error($@) if $@;
  21. my $form = CGI::FormBuilder->new(
  22. title => "setup",
  23. name => "setup",
  24. header => 0,
  25. charset => "utf-8",
  26. method => 'POST',
  27. params => $cgi,
  28. action => $config{cgiurl},
  29. template => {type => 'div'},
  30. stylesheet => IkiWiki::baseurl()."style.css",
  31. );
  32. my $buttons=["Save Setup", "Cancel"];
  33. IkiWiki::decode_form_utf8($form);
  34. IkiWiki::run_hooks(formbuilder_setup => sub {
  35. shift->(form => $form, cgi => $cgi, session => $session,
  36. buttons => $buttons);
  37. });
  38. IkiWiki::decode_form_utf8($form);
  39. $form->field(name => "do", type => "hidden", value => "setup",
  40. force => 1);
  41. if (! $form->submitted) {
  42. # TODO
  43. }
  44. if ($form->submitted eq "Cancel") {
  45. IkiWiki::redirect($cgi, $config{url});
  46. return;
  47. }
  48. elsif ($form->submitted eq 'Save Setup' && $form->validate) {
  49. # TODO
  50. $form->text(gettext("Setup saved."));
  51. }
  52. IkiWiki::showform($form, $buttons, $session, $cgi);
  53. } #}}}
  54. sub sessioncgi ($$) { #{{{
  55. my $cgi=shift;
  56. my $session=shift;
  57. if ($cgi->param("do") eq "setup") {
  58. showform($cgi, $session);
  59. exit;
  60. }
  61. } #}}}
  62. sub formbuilder_setup (@) { #{{{
  63. my %params=@_;
  64. my $form=$params{form};
  65. if ($form->title eq "preferences") {
  66. push @{$params{buttons}}, "Wiki Setup";
  67. if ($form->submitted && $form->submitted eq "Wiki Setup") {
  68. showform($params{cgi}, $params{session});
  69. exit;
  70. }
  71. }
  72. } #}}}
  73. 1