aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--IkiWiki/Plugin/search.pm45
-rw-r--r--debian/changelog7
-rw-r--r--doc/bugs/search_template_missing_dep.mdwn2
3 files changed, 37 insertions, 17 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");
diff --git a/debian/changelog b/debian/changelog
index 95435f3dd..cf3539f1d 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+ikiwiki (3.20110432) UNRELEASED; urgency=low
+
+ * search: Update search page when page.tmpl or searchquery.tmpl are locally
+ modified.
+
+ -- Joey Hess <joeyh@debian.org> Fri, 03 Jun 2011 20:30:35 -0400
+
ikiwiki (3.20110431) unstable; urgency=low
* Danish translation update. Closes: #625721
diff --git a/doc/bugs/search_template_missing_dep.mdwn b/doc/bugs/search_template_missing_dep.mdwn
index 1bedf2a3f..eebc5926e 100644
--- a/doc/bugs/search_template_missing_dep.mdwn
+++ b/doc/bugs/search_template_missing_dep.mdwn
@@ -1,4 +1,4 @@
The [[plugins/search]] plugin caches a filled in version of `page.tmpl` for
omega. This is updated only if missing or on rebuild, so if the template is
modified otherwise and normal refresh allowed to update the rest of the
-site, this gets missed and a stale template is used. --[[Joey]]
+site, this gets missed and a stale template is used. --[[Joey]] [[done]]