Mercurial > hg > documentViewer
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": |