--- documentViewer/documentViewer.py 2010/04/08 11:04:51 1.44 +++ documentViewer/documentViewer.py 2010/04/19 13:13:13 1.45 @@ -102,7 +102,7 @@ class documentViewer(Folder): 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 @@ class documentViewer(Folder): 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 @@ class documentViewer(Folder): 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 @@ class documentViewer(Folder): 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 @@ class documentViewer(Folder): #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 @@ class documentViewer(Folder): 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 @@ class documentViewer(Folder): 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