diff documentViewer.py @ 511:551ca1641a5e elementtree

more cleanup. search really works now.
author casties
date Tue, 28 Feb 2012 18:21:59 +0100
parents 9d05befdd462
children 67095296c95a
line wrap: on
line diff
--- a/documentViewer.py	Tue Feb 28 10:39:21 2012 +0100
+++ b/documentViewer.py	Tue Feb 28 18:21:59 2012 +0100
@@ -123,6 +123,7 @@
     toc_figures = PageTemplateFile('zpt/toc_figures', globals())
     toc_none = PageTemplateFile('zpt/toc_none', globals())
     common_template = PageTemplateFile('zpt/common_template', globals())
+    search_template = PageTemplateFile('zpt/search_template', globals())
     info_xml = PageTemplateFile('zpt/info_xml', globals())
     docuviewer_css = ImageFile('css/docuviewer.css',globals())
     # make ImageFile better for development
@@ -710,7 +711,7 @@
         start = getInt(start, default=(math.ceil(float(current)/float(grpsize))*grpsize-(grpsize-1)))
         # int(current / grpsize) * grpsize +1))
         pageinfo['start'] = start
-        
+        # get number of pages
         np = int(docinfo.get('numPages', 0))
         if np == 0:
             # numPages unknown - maybe we can get it from text page
@@ -719,6 +720,8 @@
                 pageinfo['textPage'] = self.getTextPage(mode=viewLayer, pn=current, docinfo=docinfo, pageinfo=pageinfo)
                 np = int(docinfo.get('numPages', 0))
                 
+        # cache table of contents
+        pageinfo['tocPageSize'] = getInt(self.REQUEST.get('tocPageSize', 30))
         pageinfo['numgroups'] = int(np / grpsize)
         if np % grpsize > 0:
             pageinfo['numgroups'] += 1
@@ -730,24 +733,24 @@
         pageinfo['pageZero'] = pageZero
         pageinfo['pageBatch'] = self.getPageBatch(start=start, rows=rows, cols=cols, pageFlowLtr=pageFlowLtr, pageZero=pageZero, minIdx=1, maxIdx=np)
                 
-        # TODO: do we need this here?
         pageinfo['characterNormalization'] = self.REQUEST.get('characterNormalization','reg')
-        pageinfo['tocPageSize'] = getInt(self.REQUEST.get('tocPageSize', 30))
-        pageinfo['resultPageSize'] = getInt(self.REQUEST.get('resultPageSize', 10))
-        pageinfo['tocPN'] = getInt(self.REQUEST.get('tocPN', '1'))
-        pageinfo['resultPN'] = getInt(self.REQUEST.get('resultPN','1'))
         
-        # limit tocPN TODO: do we need this?
-        if 'tocSize_%s'%tocMode in docinfo:
-            tocSize = docinfo['tocSize_%s'%tocMode]
-            tocPageSize = pageinfo['tocPageSize']
-            # cached toc           
-            if tocSize%tocPageSize>0:
-                tocPages=tocSize/tocPageSize+1
-            else:
-                tocPages=tocSize/tocPageSize
-                
-            pageinfo['tocPN'] = min(tocPages,pageinfo['tocPN'])
+        # cache search results
+        pageinfo['resultPageSize'] = getInt(self.REQUEST.get('resultPageSize', 10))
+        query = self.REQUEST.get('query',None)
+        pageinfo['query'] = query
+        if query:
+            queryType = self.REQUEST.get('queryType', 'fulltextMorph')
+            pageinfo['queryType'] = queryType
+            pageinfo['resultStart'] = getInt(self.REQUEST.get('resultStart', '1'))
+            self.getSearchResults(mode=queryType, query=query, pageinfo=pageinfo, docinfo=docinfo)
+            
+            # highlighting
+            highlightQuery = self.REQUEST.get('highlightQuery', None)
+            if highlightQuery:
+                pageinfo['highlightQuery'] = highlightQuery
+                pageinfo['highlightElement'] = self.REQUEST.get('highlightElement', '')
+                pageinfo['highlightElementPos'] = self.REQUEST.get('highlightElementPos', '')
             
         return pageinfo