diff options
author | Joey Hess <joey@kodama.kitenet.net> | 2008-10-15 19:36:48 -0400 |
---|---|---|
committer | Joey Hess <joey@kodama.kitenet.net> | 2008-10-15 19:36:48 -0400 |
commit | 1f7f5d5e0e21920c5f15290cd34594ad91077071 (patch) | |
tree | a19302c57ed6ea46c4bf05a1ed8d840725643069 /IkiWiki/Plugin/google.pm | |
parent | 917f54a777d152ee5963acd81bf8a2800a0507b1 (diff) | |
parent | 20e691fe20ead76d826ab77501c6e9cbc7b487e8 (diff) |
Merge branch 'master' into darcs
Diffstat (limited to 'IkiWiki/Plugin/google.pm')
-rw-r--r-- | IkiWiki/Plugin/google.pm | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/IkiWiki/Plugin/google.pm b/IkiWiki/Plugin/google.pm new file mode 100644 index 000000000..92b9b29eb --- /dev/null +++ b/IkiWiki/Plugin/google.pm @@ -0,0 +1,54 @@ +#!/usr/bin/perl +package IkiWiki::Plugin::google; + +use warnings; +use strict; +use IkiWiki 2.00; +use URI; + +my $host; + +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 () { #{{{ + if (! length $config{url}) { + error(sprintf(gettext("Must specify %s when using the google search plugin"), "url")); + } + my $uri=URI->new($config{url}); + if (! $uri || ! defined $uri->host) { + error(gettext("Failed to parse url, cannot determine domain name")); + } + $host=$uri->host; +} #}}} + +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 => $host); + $form=$searchform->output; + } + + $template->param(searchform => $form); + } +} #}}} + +1 |