changeset 95:db6d594aa4d9

Last update with search function (getSearch)
author abukhman
date Mon, 19 Apr 2010 15:13:13 +0200
parents 9d08a21fdd83
children a679c8c7148d
files documentViewer.py
diffstat 1 files changed, 38 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/documentViewer.py	Fri Apr 09 20:33:53 2010 +0200
+++ b/documentViewer.py	Mon Apr 19 15:13:13 2010 +0200
@@ -102,7 +102,7 @@
     changeDocumentViewerForm = PageTemplateFile('zpt/changeDocumentViewer', globals())
 
     
-    def __init__(self,id,imageScalerUrl=None,textServerName=None,title="",digilibBaseUrl=None,thumbcols=2,thumbrows=10,authgroups="mpiwg"):
+    def __init__(self,id,imageScalerUrl=None,textServerName=None,title="",digilibBaseUrl=None,thumbcols=2,thumbrows=5,authgroups="mpiwg"):
         """init document viewer"""
         self.id=id
         self.title=title
@@ -163,13 +163,14 @@
         return pt(docinfo=docinfo,pageinfo=pageinfo,viewMode=viewMode)
   
     security.declareProtected('View','index_html')
-    def index_html(self,url,mode="texttool",viewMode="auto",tocMode="thumbs",start=None,pn=1,mk=None):
+    def index_html(self,url,mode="texttool",viewMode="auto",tocMode="thumbs",start=None,pn=1,mk=None, query=None, querySearch=None):
         '''
         view it
         @param mode: defines how to access the document behind url 
         @param url: url which contains display information
         @param viewMode: if images display images, if text display text, default is auto (text,images or auto)
-        @param tocMode: type of 'table of contents' for navigation (thumbs, text, figures)
+        @param tocMode: type of 'table of contents' for navigation (thumbs, text, figures, search)
+        @param querySearch: type of different search modes (fulltext, fulltextMorph, xpath, xquery, ftIndex, ftIndexMorph)
         '''
         
         logging.debug("documentViewer (index) mode: %s url:%s start:%s pn:%s"%(mode,url,start,pn))
@@ -649,12 +650,36 @@
                 
         pageinfo['viewMode'] = viewMode
         pageinfo['tocMode'] = tocMode
-        pageinfo['tocPageSize'] = self.REQUEST.get('tocPageSize', '10')
+        pageinfo['query'] = self.REQUEST.get('query',' ')
+        pageinfo['queryType'] = self.REQUEST.get('queryType',' ')
+        pageinfo['querySearch'] =self.REQUEST.get('querySearch', 'fulltext')
+        pageinfo['tocPageSize'] = self.REQUEST.get('tocPageSize', '30')
+        pageinfo['queryPageSize'] =self.REQUEST.get('queryPageSize', '20')
         pageinfo['tocPN'] = self.REQUEST.get('tocPN', '1')
+        pageinfo['searchPN'] =self.REQUEST.get('searchPN','1')
+        pageinfo['sn'] =self.REQUEST.get('sn','1')
 
         return pageinfo
                 
-
+    def getSearch(self, pn=1, pageinfo=None,  docinfo=None, query=None, queryType=None):
+        """get search list"""
+        docpath = docinfo['textURLPath'] 
+        pagesize = pageinfo['queryPageSize']
+        pn = pageinfo['searchPN']
+        sn = pageinfo['sn']
+        query =pageinfo['query']
+        queryType =pageinfo['queryType']
+    
+        pagexml=self.template.fulltextclient.eval("/mpdl/interface/doc-query.xql","document=%s&mode=%s&queryType=%s&query=%s&queryResultPageSize=%s&queryResultPN=%s&sn=%s"%(docpath, 'text', queryType, query, pagesize, pn, sn) ,outputUnicode=False)           
+        pagedom = Parse(pagexml)
+        #pagedivs = pagedom.xpath("//div[@class='queryResultPage']")
+        
+        return pagexml
+        #if len(pagedivs) > 0:
+        #    pagenode = pagedom[0]
+        #    return serializeNode(pagenode)
+        #else:
+        #    return "xaxa"
 
     def getNumPages(self,docinfo=None):
         """get list of pages from fulltext and put in docinfo"""
@@ -673,12 +698,17 @@
             textmode = mode
             
         pagexml=self.template.fulltextclient.eval("/mpdl/interface/page-fragment.xql", "document=%s&mode=%s&pn=%s"%(docpath,textmode,pn), outputUnicode=False)
+        #######
+        #textpython = pagexml.replace('page-fragment.xql?document=/echo/la/Benedetti_1585.xml','?url=/mpiwg/online/permanent/library/163127KK&tocMode='+str(tocMode)+'&queryResultPN='+str(queryResultPN)+'&viewMode='+str(viewMode))
+        #textnew =textpython.replace('mode=text','mode=texttool')
+        #######
         # post-processing downloaded xml
         pagedom = Parse(pagexml)
         # plain text mode
         if mode == "text":
             # first div contains text
             pagedivs = pagedom.xpath("/div")
+            #queryResultPage
             if len(pagedivs) > 0:
                 pagenode = pagedivs[0]
                 return serializeNode(pagenode)
@@ -741,7 +771,7 @@
         #docinfo['tocDiv_%s'%mode] = tocDiv
         return docinfo
     
-    def getTocPage(self, mode="toc", pn=1, pageinfo=None, docinfo=None):
+    def getTocPage(self, mode="text", pn=1, pageinfo=None, docinfo=None):
         """returns single page from the table of contents"""
         # TODO: this should use the cached TOC
         if mode == "text":
@@ -751,7 +781,7 @@
         docpath = docinfo['textURLPath']
         pagesize = pageinfo['tocPageSize']
         pn = pageinfo['tocPN']
-        pagexml=self.template.fulltextclient.eval("/mpdl/interface/doc-query.xql", "document=%s&queryType=%s&queryResultPageSize=%s&queryResultPN=%s"%(docpath,queryType,pagesize,pn), outputUnicode=False)
+        pagexml=self.template.fulltextclient.eval("/mpdl/interface/doc-query.xql", "document=%s&queryType=%s&queryResultPageSize=%s&queryResultPN=%s"%(docpath,queryType, pagesize, pn), outputUnicode=False)
         # post-processing downloaded xml
         pagedom = Parse(pagexml)
         # div contains text
@@ -763,7 +793,7 @@
             return "No TOC!"
 
     
-    def changeDocumentViewer(self,title="",digilibBaseUrl=None,thumbrows=2,thumbcols=10,authgroups='mpiwg',RESPONSE=None):
+    def changeDocumentViewer(self,title="",digilibBaseUrl=None,thumbrows=2,thumbcols=5,authgroups='mpiwg',RESPONSE=None):
         """init document viewer"""
         self.title=title
         self.digilibBaseUrl = digilibBaseUrl