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.pm53
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