summaryrefslogtreecommitdiff
path: root/IkiWiki/Plugin/edittemplate.pm
blob: b814c0e6732e6294c95f2ed054148906e47c3d30 (plain)
  1. #!/usr/bin/perl
  2. package IkiWiki::Plugin::edittemplate;
  3. use warnings;
  4. use strict;
  5. use IkiWiki 2.00;
  6. sub import { #{{{
  7. hook(type => "needsbuild", id => "edittemplate",
  8. call => \&needsbuild);
  9. hook(type => "preprocess", id => "edittemplate",
  10. call => \&preprocess);
  11. hook(type => "formbuilder_setup", id => "edittemplate",
  12. call => \&formbuilder_setup);
  13. } #}}}
  14. sub needsbuild (@) { #{{{
  15. my $needsbuild=shift;
  16. foreach my $page (keys %pagestate) {
  17. if (exists $pagestate{$page}{edittemplate}) {
  18. if (grep { $_ eq $pagesources{$page} } @$needsbuild) {
  19. # remove state, it will be re-added
  20. # if the preprocessor directive is still
  21. # there during the rebuild
  22. delete $pagestate{$page}{edittemplate};
  23. }
  24. }
  25. }
  26. } #}}}
  27. sub preprocess (@) { #{{{
  28. my %params=@_;
  29. return "" if $params{page} ne $params{destpage};
  30. if (! exists $params{template} || ! length($params{template})) {
  31. return return "[[meta ".gettext("template not specified")."]]";
  32. }
  33. if (! exists $params{match} || ! length($params{match})) {
  34. return return "[[meta ".gettext("match not specified")."]]";
  35. }
  36. $pagestate{$params{page}}{edittemplate}{$params{match}}=$params{template};
  37. return sprintf(gettext("edittemplate %s registered for %s"),
  38. $params{template}, $params{match});
  39. } # }}}
  40. sub formbuilder_setup { #{{{
  41. my %params=@_;
  42. my $form=$params{form};
  43. my $page=$form->field("page");
  44. return if $form->title ne "editpage"
  45. || $form->field("do") ne "create";
  46. $form->field(name => "editcontent", value => "hi mom!");
  47. } #}}}
  48. 1