Author: ianb
Date: 2004-04-17 13:02:32 -0600 (Sat, 17 Apr 2004)
New Revision: 69
Modified:
Wiki/Context/search.py
Wiki/lib/wiki.py
Wiki/lib/wikipage.py
Log:
Searching tweaks; goto: search prefix
Modified: Wiki/Context/search.py
===================================================================
--- Wiki/Context/search.py 2004-04-17 01:08:11 UTC (rev 68)
+++ Wiki/Context/search.py 2004-04-17 19:02:32 UTC (rev 69)
@@ -8,11 +8,15 @@
req = self.request()
self.titleSearch = req.field('searchTitle', '').strip()
self.bodySearch = req.field('searchBody', '').strip()
+ self.gotoSearch = req.field('searchGoto', '').strip()
self.genericSearch = req.field('search', '').strip()
if self.genericSearch:
if self.genericSearch.lower().startswith('title:'):
junk, self.titleSearch = self.genericSearch.split(':', 1)
self.titleSearch = self.titleSearch.strip()
+ elif self.genericSearch.lower().startswith('goto:'):
+ junk, self.gotoSearch = self.genericSearch.split(':', 1)
+ self.gotoSearch = self.gotoSearch.strip()
else:
self.bodySearch = self.genericSearch
self.results = None
@@ -23,6 +27,11 @@
elif self.titleSearch:
self.explanation = 'Title search for "%s"' % self.htmlEncode(self.titleSearch)
self.results = self.wiki.searchTitles(self.titleSearch)
+ elif self.gotoSearch:
+ self.explanation = 'Goto "%s"' % self.htmlEncode(self.gotoSearch)
+ self.results = self.wiki.searchNames(self.gotoSearch)
+ if self.results:
+ self.sendRedirectAndEnd(self.results[0].link)
def writeContent(self):
self.writeForm()
@@ -47,7 +56,7 @@
<input type="submit" value="search"><br>
<span style="font-size: small">
<i>Prefix your search with </i><tt>title:</tt><i> to search
- just titles</i></span></form>'''
+ just titles; </i><tt>goto:</tt><i> to jump to best match</i></span></form>'''
% (self.htmlEncode(self.genericSearch or self.titleSearch or self.bodySearch)))
def writeResults(self, results):
@@ -58,7 +67,7 @@
for page in results:
self.write('<dt><a href="%s">%s</a></dt>\n'
% (page.link, self.htmlEncode(page.title)))
- segment = self.htmlEncode(page.searchSegment(query))
+ segment = self.htmlEncode(page.searchSegment(query, length=200))
segment = regex.sub(r'<b class="found">\1</b>', segment)
self.write('<dd class="summary">%s</dd>'
% segment)
Modified: Wiki/lib/wiki.py
===================================================================
--- Wiki/lib/wiki.py 2004-04-17 01:08:11 UTC (rev 68)
+++ Wiki/lib/wiki.py 2004-04-17 19:02:32 UTC (rev 69)
@@ -151,6 +151,10 @@
return [page for page in self.allPages()
if page.searchTitleMatches(text)]
+ def searchNames(self, text):
+ return [page for page in self.allPages()
+ if page.searchNameMatches(text)]
+
def recentPages(self):
"""All pages, sorted by date modified, most recent first"""
pages = self.allPages()
Modified: Wiki/lib/wikipage.py
===================================================================
--- Wiki/lib/wikipage.py 2004-04-17 01:08:11 UTC (rev 68)
+++ Wiki/lib/wikipage.py 2004-04-17 19:02:32 UTC (rev 69)
@@ -248,6 +248,9 @@
def searchTitleMatches(self, text):
return self.title.lower().find(text.lower()) != -1
+ def searchNameMatches(self, text):
+ return self.name.lower().find(canonicalName(text)) != -1
+
def searchSegment(self, text, length=100):
html = self.html
html = re.sub(r'<.*?>', '', html)
|