--- documentViewer/documentViewer.py 2010/04/08 11:04:51 1.44 +++ documentViewer/documentViewer.py 2010/04/21 13:50:59 1.46 @@ -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,40 @@ 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'] + viewMode= pageinfo['viewMode'] + tocMode = pageinfo['tocMode'] + tocPN = pageinfo['tocPN'] + 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']") + selfurl = self.absolute_url() + page = pagexml.replace('page-fragment.xql?document=/echo/la/Benedetti_1585.xml','%s?url=/mpiwg/online/permanent/library/163127KK&viewMode=%s&tocMode=%s&tocPN=%s&query=%s&queryType=%s'%(selfurl, viewMode, tocMode, tocPN, query, queryType)) + text =page.replace('mode=text','mode=texttool') + return text + #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""" @@ -664,7 +693,7 @@ class documentViewer(Folder): docinfo['numPages'] = text.count(" 0: pagenode = pagedivs[0] return serializeNode(pagenode) @@ -700,13 +739,28 @@ class documentViewer(Folder): # is pollux link selfurl = self.absolute_url() # change href - hrefNode.nodeValue = href.replace('lt/lex.xql','%s/head_main_voc'%selfurl) + hrefNode.nodeValue = href.replace('lt/lex.xql','%s/template/head_main_voc'%selfurl) # add target l.setAttributeNS(None, 'target', '_blank') + + if href.startswith('lt/lemma.xql'): + selfurl = self.absolute_url() + hrefNode.nodeValue = href.replace('lt/lemma.xql','%s/template/head_main_lemma'%selfurl) + l.setAttributeNS(None, 'target', '_blank') return serializeNode(pagenode) return "no text here" + def getTranslate(self, query=None, language=None): + """translate into another languages""" + pagexml=self.template.fulltextclient.eval("/mpdl/interface/lt/lex.xql","query=%s&language=%s"%(query,language),outputUnicode=False) + return pagexml + + def getLemma(self): + """lemma""" + pagexml=self.template.fulltextclient.eval("/mpdl/interface/lt/lemma.xql","query=%s&language=%s"%(query,language),outputUnicode=False) + return pagexml + def getToc(self, mode="text", docinfo=None): """loads table of contents and stores in docinfo""" logging.debug("documentViewer (gettoc) mode: %s"%(mode)) @@ -741,7 +795,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,19 +805,28 @@ 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) + + selfurl = self.absolute_url() + viewMode= pageinfo['viewMode'] + tocMode = pageinfo['tocMode'] + tocPN = 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) + page = pagexml.replace('page-fragment.xql?document=/echo/la/Benedetti_1585.xml','%s?url=/mpiwg/online/permanent/library/163127KK&viewMode=%s&tocMode=%s&tocPN=%s'%(selfurl, viewMode, tocMode, tocPN)) + text = page.replace('mode=image','mode=texttool') + return text # post-processing downloaded xml - pagedom = Parse(pagexml) + #pagedom = Parse(text) # div contains text - pagedivs = pagedom.xpath("//div[@class='queryResultPage']") - if len(pagedivs) > 0: - pagenode = pagedivs[0] - return serializeNode(pagenode) - else: - return "No TOC!" + #pagedivs = pagedom.xpath("//div[@class='queryResultPage']") + #if len(pagedivs) > 0: + # pagenode = pagedivs[0] + # return serializeNode(pagenode) + #else: + # 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