diff options
author | Peter Simons <simons@cryp.to> | 2008-10-10 00:13:19 +0200 |
---|---|---|
committer | Joey Hess <joey@kodama.kitenet.net> | 2008-10-10 17:05:02 -0400 |
commit | f9957d11ed3674b5c2ff7ba7c234bed7cb036b5f (patch) | |
tree | ab5a3f746b7584c5bf5389d5c95fddd0a42fec12 /IkiWiki | |
parent | 61b37a3d73d7777e32fcc6aaa45699581494969d (diff) | |
download | ikiwiki-f9957d11ed3674b5c2ff7ba7c234bed7cb036b5f.tar ikiwiki-f9957d11ed3674b5c2ff7ba7c234bed7cb036b5f.tar.gz |
google plugin: Use google.com to search the local site.
Google allows has a nice feature, sitesearch, that allows anyone to
limit search results to a specific site. Obviously, this feature can be
used to provide a search engine for the local ikiwiki site without the
need to install any additional software. Just enable the 'google' plugin
and make sure that --url uses the proper hostname. Thanks to Joey for
helping to get the Perl implementation right.
Diffstat (limited to 'IkiWiki')
-rw-r--r-- | IkiWiki/Plugin/google.pm | 49 |
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 |