search: Avoid '$' in the wikiname appearing unescaped on omega's query template,...
authorJoey Hess <joey@gnu.kitenet.net>
Thu, 11 Mar 2010 21:10:04 +0000 (16:10 -0500)
committerJoey Hess <joey@gnu.kitenet.net>
Thu, 11 Mar 2010 21:10:04 +0000 (16:10 -0500)
Really, a more general fix, this deals with any $ that might appear on the
misctemplate.

IkiWiki/Plugin/search.pm
debian/changelog
doc/forum/Exception:_Unknown_function___96__this__39___.mdwn

index fb68396a11ce54bcc3d4bb46eca7c43a025054a6..c0e8703d8ba8fcd9ef5cd21fa5ec3db5219b2e78 100644 (file)
@@ -110,6 +110,7 @@ sub index (@) {
        # data used by omega
        # Decode html entities in it, since omega re-encodes them.
        eval q{use HTML::Entities};
+       error $@ if $@;
        $doc->set_data(
                "url=".urlto($params{page}, "")."\n".
                "sample=".decode_entities($sample)."\n".
@@ -214,9 +215,19 @@ sub setupfiles () {
                writefile("omega.conf", $config{wikistatedir}."/xapian",
                        "database_dir .\n".
                        "template_dir ./templates\n");
+               
+               # Avoid omega interpreting anything in the misctemplate
+               # as an omegascript command.
+               my $misctemplate=IkiWiki::misctemplate(gettext("search"), "\0");
+               eval q{use HTML::Entities};
+               error $@ if $@;
+               $misctemplate=encode_entities($misctemplate, '\$');
+
+               my $querytemplate=readfile(IkiWiki::template_file("searchquery.tmpl"));
+               $misctemplate=~s/\0/$querytemplate/;
+
                writefile("query", $config{wikistatedir}."/xapian/templates",
-                       IkiWiki::misctemplate(gettext("search"),
-                               readfile(IkiWiki::template_file("searchquery.tmpl"))));
+                       $misctemplate);
                $setup=1;
        }
 }
index 6b5671e3efd7f81b4ef687798b14d1c5de95792b..6828e6b3f85d86d852c74cc7844be3f23bd2eb12 100644 (file)
@@ -10,6 +10,8 @@ ikiwiki (3.20100303) UNRELEASED; urgency=low
   * moderatedcomments: The moderate_users setting is deprecated. Instead,
     set moderate_pagespec to "!admin()" or "user(*)" instead.
   * Fix missing span on recentchanges page template.
+  * search: Avoid '$' in the wikiname appearing unescaped on omega's
+    query template, where it might crash omega.
 
  -- Joey Hess <joeyh@debian.org>  Tue, 09 Mar 2010 19:46:35 -0500
 
index 4f94b77bd8a2f374632d7cc072e7231401a046ba..035247100baa03122e4b44e4508458df513684a6 100644 (file)
@@ -50,3 +50,9 @@ What might be causing this exception and how I might go about debugging exceptio
     <IMG ALT="" SRC="/images/xapian-omega/prevoff.png" HEIGHT=30 WIDTH=30>}
 
 >>>>>> So `$foobar` clashes with Omega's template tags. Does this help?
+
+>>>>>>> Ahh. I had somehow gotten it into my head that you were talking
+>>>>>>> about the title of a single page, not of the whole wiki. But
+>>>>>>> you were clear all along it was the wiki title. Sorry for
+>>>>>>> misunderstanding. I've put in a complete fix for this problem.
+>>>>>>> if this was in [[bugs]], I'd close it. :) --[[Joey]]