aboutsummaryrefslogtreecommitdiff
path: root/IkiWiki/Plugin/google.pm
diff options
context:
space:
mode:
Diffstat (limited to 'IkiWiki/Plugin/google.pm')
-rw-r--r--IkiWiki/Plugin/google.pm49
1 files changed, 49 insertions, 0 deletions
diff --git a/IkiWiki/Plugin/google.pm b/IkiWiki/Plugin/google.pm
new file mode 100644
index 000000000..be07ca2be
--- /dev/null
+++ b/IkiWiki/Plugin/google.pm
@@ -0,0 +1,49 @@
+#!/usr/bin/perl
+package IkiWiki::Plugin::google;
+
+use warnings;
+use strict;
+use IkiWiki 2.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,
+ },
+} #}}}
+
+sub checkconfig () { #{{{
+ foreach my $required (qw(url)) {
+ if (! length $config{$required}) {
+ error(sprintf(gettext("Must specify %s when using the google search plugin"), $required));
+ }
+ }
+} #}}}
+
+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(sitefqdn => URI->new($config{url})->host);
+ $form=$searchform->output;
+ }
+
+ $template->param(searchform => $form);
+ }
+} #}}}
+
+1