comparison documentViewer.py @ 97:2b8fd19432fb

Last update
author abukhman
date Tue, 27 Apr 2010 14:58:31 +0200
parents a679c8c7148d
children 4738a696d265
comparison
equal deleted inserted replaced
96:a679c8c7148d 97:2b8fd19432fb
7 from Globals import package_home 7 from Globals import package_home
8 8
9 from Ft.Xml.Domlette import NonvalidatingReader 9 from Ft.Xml.Domlette import NonvalidatingReader
10 from Ft.Xml.Domlette import PrettyPrint, Print 10 from Ft.Xml.Domlette import PrettyPrint, Print
11 from Ft.Xml import EMPTY_NAMESPACE, Parse 11 from Ft.Xml import EMPTY_NAMESPACE, Parse
12
13 from xml.dom.minidom import parse, parseString
14
12 15
13 16
14 import Ft.Xml.XPath 17 import Ft.Xml.XPath
15 import cStringIO 18 import cStringIO
16 import xmlrpclib 19 import xmlrpclib
182 185
183 if not getattr(self, 'digilibBaseUrl', None): 186 if not getattr(self, 'digilibBaseUrl', None):
184 self.digilibBaseUrl = self.findDigilibUrl() or "http://nausikaa.mpiwg-berlin.mpg.de/digitallibrary" 187 self.digilibBaseUrl = self.findDigilibUrl() or "http://nausikaa.mpiwg-berlin.mpg.de/digitallibrary"
185 188
186 docinfo = self.getDocinfo(mode=mode,url=url) 189 docinfo = self.getDocinfo(mode=mode,url=url)
187 pageinfo = self.getPageinfo(start=start,current=pn,docinfo=docinfo,viewMode=viewMode,tocMode=tocMode) 190
191
188 if tocMode != "thumbs": 192 if tocMode != "thumbs":
189 # get table of contents 193 # get table of contents
190 docinfo = self.getToc(mode=tocMode, docinfo=docinfo) 194 docinfo = self.getToc(mode=tocMode, docinfo=docinfo)
191 195
196 pageinfo = self.getPageinfo(start=start,current=pn,docinfo=docinfo,viewMode=viewMode,tocMode=tocMode)
197
192 if viewMode=="auto": # automodus gewaehlt 198 if viewMode=="auto": # automodus gewaehlt
193 if docinfo.get("textURL",''): #texturl gesetzt und textViewer konfiguriert 199 if docinfo.get("textURL",''): #texturl gesetzt und textViewer konfiguriert
194 viewMode="text" 200 viewMode="text"
195 else: 201 else:
196 viewMode="images" 202 viewMode="images"
654 pageinfo['queryType'] = self.REQUEST.get('queryType',' ') 660 pageinfo['queryType'] = self.REQUEST.get('queryType',' ')
655 pageinfo['querySearch'] =self.REQUEST.get('querySearch', 'fulltext') 661 pageinfo['querySearch'] =self.REQUEST.get('querySearch', 'fulltext')
656 pageinfo['tocPageSize'] = self.REQUEST.get('tocPageSize', '30') 662 pageinfo['tocPageSize'] = self.REQUEST.get('tocPageSize', '30')
657 pageinfo['queryPageSize'] =self.REQUEST.get('queryPageSize', '20') 663 pageinfo['queryPageSize'] =self.REQUEST.get('queryPageSize', '20')
658 pageinfo['tocPN'] = self.REQUEST.get('tocPN', '1') 664 pageinfo['tocPN'] = self.REQUEST.get('tocPN', '1')
665 #if 'tocSize_%s'%tocMode in docinfo:
666 # cached toc
667 # pageinfo['tocPN'] = min (int (docinfo['tocSize_%s'%tocMode])/int(pageinfo['tocPageSize']),int(pageinfo['tocPN']))
668
659 pageinfo['searchPN'] =self.REQUEST.get('searchPN','1') 669 pageinfo['searchPN'] =self.REQUEST.get('searchPN','1')
660 pageinfo['sn'] =self.REQUEST.get('sn','1') 670 pageinfo['sn'] =self.REQUEST.get('sn','1')
661 671
662 return pageinfo 672 return pageinfo
663 673
672 viewMode= pageinfo['viewMode'] 682 viewMode= pageinfo['viewMode']
673 tocMode = pageinfo['tocMode'] 683 tocMode = pageinfo['tocMode']
674 tocPN = pageinfo['tocPN'] 684 tocPN = pageinfo['tocPN']
675 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) 685 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)
676 pagedom = Parse(pagexml) 686 pagedom = Parse(pagexml)
677 #pagedivs = pagedom.xpath("//div[@class='queryResultPage']") 687 pagedivs = pagedom.xpath("//div[@class='queryResultPage']")
688
678 selfurl = self.absolute_url() 689 selfurl = self.absolute_url()
690
679 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)) 691 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))
680 text =page.replace('mode=text','mode=texttool') 692 text =page.replace('mode=text','mode=texttool')
681 return text 693 href = text.replace('lt/lex.xql','%s/template/head_main_voc'%selfurl)
694 lemma= href.replace('lt/lemma.xql','%s/template/head_main_lemma'%selfurl)
695 #logging.debug("documentViewer (gettoc) lemma: %s"%(lemma))
696
697 return lemma
698
699
682 #if len(pagedivs) > 0: 700 #if len(pagedivs) > 0:
683 # pagenode = pagedom[0] 701 # pagenode = pagedom[0]
684 # return serializeNode(pagenode) 702 # return serializeNode(pagenode)
685 #else: 703 #else:
686 # return "xaxa" 704 # return "xaxa"
754 def getTranslate(self, query=None, language=None): 772 def getTranslate(self, query=None, language=None):
755 """translate into another languages""" 773 """translate into another languages"""
756 pagexml=self.template.fulltextclient.eval("/mpdl/interface/lt/lex.xql","query=%s&language=%s"%(query,language),outputUnicode=False) 774 pagexml=self.template.fulltextclient.eval("/mpdl/interface/lt/lex.xql","query=%s&language=%s"%(query,language),outputUnicode=False)
757 return pagexml 775 return pagexml
758 776
759 def getLemma(self): 777 def getLemma(self, lemma=None, language=None):
760 """lemma""" 778 """lemma"""
761 pagexml=self.template.fulltextclient.eval("/mpdl/interface/lt/lemma.xql","query=%s&language=%s"%(query,language),outputUnicode=False) 779 pagexml=self.template.fulltextclient.eval("/mpdl/interface/lt/lemma.xql","lemma=%s&language=%s"%(lemma,language),outputUnicode=False)
762 return pagexml 780 return pagexml
781
782 def getQuery (self, docinfo=None, pageinfo=None, query=None, queryType=None, pn=1):
783 """number of"""
784 docpath = docinfo['textURLPath']
785 pagesize = pageinfo['queryPageSize']
786 pn = pageinfo['searchPN']
787 query =pageinfo['query']
788 queryType =pageinfo['queryType']
789
790 tocSearch = 0
791 tocDiv = None
792 pagexml=self.template.fulltextclient.eval("/mpdl/interface/doc-query.xql","document=%s&mode=%s&queryType=%s&query=%s&queryResultPageSize=%s&queryResultPN=%s"%(docpath, 'text', queryType, query, pagesize, pn) ,outputUnicode=False)
793
794 pagedom = Parse(pagexml)
795 numdivs = pagedom.xpath("//div[@class='queryResultHits']")
796 tocSearch = int(getTextFromNode(numdivs[0]))
797 tc=int((tocSearch/20)+1)
798 logging.debug("documentViewer (gettoc) tc: %s"%(tc))
799 return tc
763 800
764 def getToc(self, mode="text", docinfo=None): 801 def getToc(self, mode="text", docinfo=None):
765 """loads table of contents and stores in docinfo""" 802 """loads table of contents and stores in docinfo"""
766 logging.debug("documentViewer (gettoc) mode: %s"%(mode)) 803 logging.debug("documentViewer (gettoc) mode: %s"%(mode))
767 if 'tocSize_%s'%mode in docinfo: 804 if 'tocSize_%s'%mode in docinfo:
768 # cached toc 805 # cached toc
769 return docinfo 806 return docinfo
770
771 docpath = docinfo['textURLPath'] 807 docpath = docinfo['textURLPath']
772 # we need to set a result set size 808 # we need to set a result set size
773 pagesize = 1000 809 pagesize = 1000
774 pn = 1 810 pn = 1
775 if mode == "text": 811 if mode == "text":