diff options
Diffstat (limited to 'IkiWiki/Plugin/google.pm')
-rw-r--r-- | IkiWiki/Plugin/google.pm | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/IkiWiki/Plugin/google.pm b/IkiWiki/Plugin/google.pm new file mode 100644 index 000000000..68cde261c --- /dev/null +++ b/IkiWiki/Plugin/google.pm @@ -0,0 +1,53 @@ +#!/usr/bin/perl +package IkiWiki::Plugin::google; + +use warnings; +use strict; +use IkiWiki 3.00; +use URI; + +sub import { + hook(type => "getsetup", id => "google", call => \&getsetup); + hook(type => "checkconfig", id => "google", call => \&checkconfig); + hook(type => "pagetemplate", id => "google", call => \&pagetemplate); +} + +sub getsetup () { + return + plugin => { + safe => 1, + rebuild => 1, + section => "web", + }, +} + +sub checkconfig () { + if (! length $config{url}) { + error(sprintf(gettext("Must specify %s when using the %s plugin"), "url", 'google')); + } + + # This is a mass dependency, so if the search form template + # changes, every page is rebuilt. + add_depends("", "templates/googleform.tmpl"); +} + +my $form; +sub pagetemplate (@) { + my %params=@_; + my $page=$params{page}; + my $template=$params{template}; + + # Add search box to page header. + if ($template->query(name => "searchform")) { + if (! defined $form) { + my $searchform = template("googleform.tmpl", blind_cache => 1); + $searchform->param(url => $config{url}); + $searchform->param(html5 => $config{html5}); + $form=$searchform->output; + } + + $template->param(searchform => $form); + } +} + +1 |