aboutsummaryrefslogtreecommitdiff
path: root/IkiWiki/Plugin
diff options
context:
space:
mode:
authorJoey Hess <joey@kitenet.net>2011-06-03 20:31:20 -0400
committerJoey Hess <joey@kitenet.net>2011-06-03 20:31:20 -0400
commitd7c4001748f8c9f765e39b0d8ebe2d3d0f8cb0ab (patch)
tree09d9fcfbfcc212f376bc2575c4908242e19a5573 /IkiWiki/Plugin
parent7f87035c8dcab0333fb8c8fdf9e725683978bbac (diff)
downloadikiwiki-d7c4001748f8c9f765e39b0d8ebe2d3d0f8cb0ab.tar
ikiwiki-d7c4001748f8c9f765e39b0d8ebe2d3d0f8cb0ab.tar.gz
search: Update search page when page.tmpl or searchquery.tmpl are locally modified.
Diffstat (limited to 'IkiWiki/Plugin')
-rw-r--r--IkiWiki/Plugin/search.pm45
1 files changed, 29 insertions, 16 deletions
diff --git a/IkiWiki/Plugin/search.pm b/IkiWiki/Plugin/search.pm
index 3f0b7c9ad..ab7c0eebb 100644
--- a/IkiWiki/Plugin/search.pm
+++ b/IkiWiki/Plugin/search.pm
@@ -14,6 +14,7 @@ sub import {
hook(type => "delete", id => "search", call => \&delete);
hook(type => "cgi", id => "search", call => \&cgi);
hook(type => "disable", id => "search", call => \&disable);
+ hook(type => "needsbuild", id => "search", call => \&needsbuild);
}
sub getsetup () {
@@ -226,27 +227,39 @@ sub setupfiles () {
writefile("omega.conf", $config{wikistatedir}."/xapian",
"database_dir .\n".
"template_dir ./templates\n");
-
- # Avoid omega interpreting anything in the cgitemplate
- # as an omegascript command.
- eval q{use IkiWiki::CGI};
- my $template=IkiWiki::cgitemplate(undef, gettext("search"), "\0",
- searchform => "", # avoid showing the small search form
- );
- eval q{use HTML::Entities};
- error $@ if $@;
- $template=encode_entities($template, '\$');
-
- my $querytemplate=readfile(IkiWiki::template_file("searchquery.tmpl"));
- $template=~s/\0/$querytemplate/;
-
- writefile("query", $config{wikistatedir}."/xapian/templates",
- $template);
+ omega_template();
$setup=1;
}
}
}
+sub needsbuild {
+ my $list=shift;
+ if (grep {
+ $_ eq "templates/page.tmpl" ||
+ $_ eq "templates/searchquery.tmpl"
+ } @$list) {
+ omega_template();
+ }
+}
+
+sub omega_template {
+ # Avoid omega interpreting anything in the cgitemplate
+ # as an omegascript command.
+ eval q{use IkiWiki::CGI};
+ my $template=IkiWiki::cgitemplate(undef, gettext("search"), "\0",
+ searchform => "", # avoid showing the small search form
+ );
+ eval q{use HTML::Entities};
+ error $@ if $@;
+ $template=encode_entities($template, '\$');
+
+ my $querytemplate=readfile(IkiWiki::template_file("searchquery.tmpl"));
+ $template=~s/\0/$querytemplate/;
+ writefile("query", $config{wikistatedir}."/xapian/templates",
+ $template);
+}
+
sub disable () {
if (-d $config{wikistatedir}."/xapian") {
system("rm", "-rf", $config{wikistatedir}."/xapian");