|
|
| version 1.5, 2010/06/18 14:08:46 | version 1.227, 2011/02/18 11:21:46 |
|---|---|
| Line 1 | Line 1 |
| from OFS.SimpleItem import SimpleItem | from OFS.SimpleItem import SimpleItem |
| from Products.PageTemplates.PageTemplateFile import PageTemplateFile | from Products.PageTemplates.PageTemplateFile import PageTemplateFile |
| from Ft.Xml import EMPTY_NAMESPACE, Parse | from Ft.Xml import EMPTY_NAMESPACE, Parse |
| import md5 | |
| import sys | import sys |
| import logging | import logging |
| import urllib | import urllib |
| import documentViewer | import documentViewer |
| from documentViewer import getTextFromNode, serializeNode | from documentViewer import getTextFromNode, serializeNode |
| class MpdlXmlTextServer(SimpleItem): | class MpdlXmlTextServer(SimpleItem): |
| """TextServer implementation for MPDL-XML eXist server""" | """TextServer implementation for MPDL-XML eXist server""" |
| meta_type="MPDL-XML TextServer" | meta_type="MPDL-XML TextServer" |
| Line 31 class MpdlXmlTextServer(SimpleItem): | Line 30 class MpdlXmlTextServer(SimpleItem): |
| else: | else: |
| self.serverUrl = "http://%s/mpdl/interface/"%serverName | self.serverUrl = "http://%s/mpdl/interface/"%serverName |
| def getHttpData(self, url, data=None): | def getHttpData(self, url, data=None): |
| """returns result from url+data HTTP request""" | """returns result from url+data HTTP request""" |
| return documentViewer.getHttpData(url,data,timeout=self.timeout) | return documentViewer.getHttpData(url,data,timeout=self.timeout) |
| def getServerData(self, method, data=None): | def getServerData(self, method, data=None): |
| """returns result from text server for method+data""" | """returns result from text server for method+data""" |
| url = self.serverUrl+method | url = self.serverUrl+method |
| return documentViewer.getHttpData(url,data,timeout=self.timeout) | return documentViewer.getHttpData(url,data,timeout=self.timeout) |
| def getSearch(self, pageinfo=None, docinfo=None, lemma=None): | |
| def getSearch(self, pn=1, pageinfo=None, docinfo=None, query=None, queryType=None, lemma=None): | |
| """get search list""" | """get search list""" |
| docpath = docinfo['textURLPath'] | docpath = docinfo['textURLPath'] |
| url = docinfo['url'] | url = docinfo['url'] |
| logging.debug("documentViewer (gettoc) docpath: %s"%(docpath)) | |
| logging.debug("documentViewer (gettoc) url: %s"%(url)) | |
| pagesize = pageinfo['queryPageSize'] | pagesize = pageinfo['queryPageSize'] |
| pn = pageinfo['searchPN'] | pn = pageinfo.get('searchPN',1) |
| sn = pageinfo['sn'] | sn = pageinfo['sn'] |
| highlightQuery = pageinfo['highlightQuery'] | highlightQuery = pageinfo['highlightQuery'] |
| query =pageinfo['query'] | query =pageinfo['query'] |
| queryType =pageinfo['queryType'] | queryType =pageinfo['queryType'] |
| viewMode= pageinfo['viewMode'] | viewMode= pageinfo['viewMode'] |
| tocMode = pageinfo['tocMode'] | tocMode = pageinfo['tocMode'] |
| characterNormalization = pageinfo['characterNormalization'] | |
| optionToggle = pageinfo['optionToggle'] | |
| tocPN = pageinfo['tocPN'] | tocPN = pageinfo['tocPN'] |
| selfurl = self.absolute_url() | selfurl = self.absolute_url() |
| data = self.getServerData("doc-query.xql","document=%s&mode=%s&queryType=%s&query=%s&queryResultPageSize=%s&queryResultPN=%s&sn=%s&viewMode=%s&characterNormalization=%s&optionToggle=%s&highlightQuery=%s"%(docpath, 'text', queryType, urllib.quote(query), pagesize, pn, sn, viewMode,characterNormalization,optionToggle ,urllib.quote(highlightQuery))) | |
| data = self.getServerData("doc-query.xql","document=%s&mode=%s&queryType=%s&query=%s&queryResultPageSize=%s&queryResultPN=%s&sn=%s&viewMode=%s&highlightQuery=%s"%(docpath, 'text', queryType, query, pagesize, pn, sn, viewMode,highlightQuery)) | |
| #page=self.template.fulltextclient.eval("/mpdl/interface/doc-query.xql","document=%s&mode=%s&queryType=%s&query=%s&queryResultPageSize=%s&queryResultPN=%s&sn=%s&viewMode=%s&highlightQuery=%s"%(docpath, 'text', queryType, query, pagesize, pn, sn, viewMode,highlightQuery) ,outputUnicode=False) | |
| pagexml = data.replace('?document=%s'%str(docpath),'?url=%s'%url) | pagexml = data.replace('?document=%s'%str(docpath),'?url=%s'%url) |
| pagedom = Parse(pagexml) | pagedom = Parse(pagexml) |
| """ | |
| pagedivs = pagedom.xpath("//div[@class='queryResultHits']") | |
| if (pagedivs == pagedom.xpath("//div[@class='queryResultHits']")): | |
| if len(pagedivs)>0: | |
| docinfo['queryResultHits'] = int(getTextFromNode(pagedivs[0])) | |
| s = getTextFromNode(pagedivs[0]) | |
| s1 = int(s)/10+1 | |
| try: | |
| docinfo['queryResultHits'] = int(s1) | |
| logging.debug("SEARCH ENTRIES: %s"%(s1)) | |
| except: | |
| docinfo['queryResultHits'] = 0 | |
| """ | |
| if (queryType=="fulltext")or(queryType=="xpath")or(queryType=="xquery")or(queryType=="fulltextMorphLemma"): | if (queryType=="fulltext")or(queryType=="xpath")or(queryType=="xquery")or(queryType=="fulltextMorphLemma"): |
| pagedivs = pagedom.xpath("//div[@class='queryResultPage']") | pagedivs = pagedom.xpath("//div[@class='queryResultPage']") |
| if len(pagedivs)>0: | if len(pagedivs)>0: |
| Line 76 class MpdlXmlTextServer(SimpleItem): | Line 83 class MpdlXmlTextServer(SimpleItem): |
| href = hrefNode.nodeValue | href = hrefNode.nodeValue |
| if href.startswith('page-fragment.xql'): | if href.startswith('page-fragment.xql'): |
| selfurl = self.absolute_url() | selfurl = self.absolute_url() |
| pagexml=href.replace('mode=text','mode=texttool&viewMode=%s&queryType=%s&query=%s&queryResultPageSize=%s&queryResultPN=%s&tocMode=%s&searchPN=%s&tocPN=%s'%(viewMode,queryType,query,pagesize,pn,tocMode,pn,tocPN)) | pagexml=href.replace('mode=text','mode=texttool&viewMode=%s&queryType=%s&query=%s&queryResultPageSize=%s&queryResultPN=%s&tocMode=%s&searchPN=%s&tocPN=%s&optionToggle=%s&characterNormalization=%s'%(viewMode,queryType,urllib.quote(query),pagesize,pn,tocMode,pn,tocPN,optionToggle,characterNormalization)) |
| hrefNode.nodeValue = pagexml.replace('page-fragment.xql','%s'%selfurl) | hrefNode.nodeValue = pagexml.replace('page-fragment.xql','%s'%selfurl) |
| logging.debug("PUREXML :%s"%(serializeNode(pagenode))) | |
| return serializeNode(pagenode) | return serializeNode(pagenode) |
| if (queryType=="fulltextMorph"): | if (queryType=="fulltextMorph"): |
| pagedivs = pagedom.xpath("//div[@class='queryResult']") | pagedivs = pagedom.xpath("//div[@class='queryResult']") |
| Line 90 class MpdlXmlTextServer(SimpleItem): | Line 98 class MpdlXmlTextServer(SimpleItem): |
| href = hrefNode.nodeValue | href = hrefNode.nodeValue |
| if href.startswith('page-fragment.xql'): | if href.startswith('page-fragment.xql'): |
| selfurl = self.absolute_url() | selfurl = self.absolute_url() |
| pagexml=href.replace('mode=text','mode=texttool&viewMode=%s&queryType=%s&query=%s&queryResultPageSize=%s&queryResultPN=%s&tocMode=%s&searchPN=%s&tocPN=%s'%(viewMode,queryType,query,pagesize,pn,tocMode,pn,tocPN)) | pagexml=href.replace('mode=text','mode=texttool&viewMode=%s&queryType=%s&query=%s&queryResultPageSize=%s&queryResultPN=%s&tocMode=%s&searchPN=%s&tocPN=%s&optionToggle=%s&characterNormalization=%s'%(viewMode,queryType,urllib.quote(query),pagesize,pn,tocMode,pn,tocPN,optionToggle,characterNormalization)) |
| hrefNode.nodeValue = pagexml.replace('page-fragment.xql','%s'%selfurl) | hrefNode.nodeValue = pagexml.replace('page-fragment.xql','%s'%selfurl) |
| if href.startswith('../lt/lemma.xql'): | if href.startswith('../lt/lemma.xql'): |
| hrefNode.nodeValue = href.replace('../lt/lemma.xql','%s/template/head_main_lemma_New'%(selfurl)) | hrefNode.nodeValue = href.replace('../lt/lemma.xql','%s/template/head_main_lemma_New'%(selfurl)) |
| l.setAttributeNS(None, 'target', '_blank') | l.setAttributeNS(None, 'target', '_blank') |
| l.setAttributeNS(None, 'onClick',"popupWin = window.open(this.href, 'contacts', 'location,width=500,height=600,top=180, left=400, scrollbars=1'); return false;") | l.setAttributeNS(None, 'onClick',"popupWin = window.open(this.href, 'contacts', 'location,width=500,height=600,top=180, left=400, scrollbars=1'); return false;") |
| l.setAttributeNS(None, 'onDblclick', 'popupWin.focus();') | l.setAttributeNS(None, 'onClick', 'popupWin.focus();') |
| pagedivs = pagedom.xpath("//div[@class='queryResultMorphExpansion']") | pagedivs = pagedom.xpath("//div[@class='queryResultMorphExpansion']") |
| return serializeNode(pagenode) | return serializeNode(pagenode) |
| if (queryType=="ftIndex")or(queryType=="ftIndexMorph"): | if (queryType=="ftIndex")or(queryType=="ftIndexMorph"): |
| Line 108 class MpdlXmlTextServer(SimpleItem): | Line 116 class MpdlXmlTextServer(SimpleItem): |
| hrefNode = l.getAttributeNodeNS(None, u"href") | hrefNode = l.getAttributeNodeNS(None, u"href") |
| if hrefNode: | if hrefNode: |
| href = hrefNode.nodeValue | href = hrefNode.nodeValue |
| hrefNode.nodeValue=href.replace('mode=text','mode=texttool&viewMode=%s&tocMode=%s&tocPN=%s&pn=%s'%(viewMode,tocMode,tocPN,pn)) | hrefNode.nodeValue=href.replace('mode=text','mode=texttool&viewMode=%s&tocMode=%s&tocPN=%s&pn=%s&optionToggle=%s&characterNormalization=%s'%(viewMode,tocMode,tocPN,pn,optionToggle,characterNormalization)) |
| if href.startswith('../lt/lex.xql'): | if href.startswith('../lt/lex.xql'): |
| hrefNode.nodeValue = href.replace('../lt/lex.xql','%s/template/head_main_voc'%selfurl) | hrefNode.nodeValue = href.replace('../lt/lex.xql','%s/template/head_main_voc'%selfurl) |
| l.setAttributeNS(None, 'target', '_blank') | l.setAttributeNS(None, 'target', '_blank') |
| l.setAttributeNS(None, 'onClick',"popupWin = window.open(this.href, 'contacts', 'location,width=500,height=600,top=180, left=400, scrollbars=1'); return false;") | l.setAttributeNS(None, 'onClick',"popupWin = window.open(this.href, 'contacts', 'location,width=500,height=600,top=180, left=400, scrollbars=1'); return false;") |
| l.setAttributeNS(None, 'onDblclick', 'popupWin.focus();') | l.setAttributeNS(None, 'onClick', 'popupWin.focus();') |
| if href.startswith('../lt/lemma.xql'): | if href.startswith('../lt/lemma.xql'): |
| hrefNode.nodeValue = href.replace('../lt/lemma.xql','%s/template/head_main_lemma'%selfurl) | hrefNode.nodeValue = href.replace('../lt/lemma.xql','%s/template/head_main_lemma'%selfurl) |
| l.setAttributeNS(None, 'target', '_blank') | l.setAttributeNS(None, 'target', '_blank') |
| l.setAttributeNS(None, 'onClick',"popupWin = window.open(this.href, 'contacts', 'location,width=500,height=600,top=180, left=400, scrollbars=1'); return false;") | l.setAttributeNS(None, 'onClick',"popupWin = window.open(this.href, 'contacts', 'location,width=500,height=600,top=180, left=400, scrollbars=1'); return false;") |
| l.setAttributeNS(None, 'onDblclick', 'popupWin.focus();') | l.setAttributeNS(None, 'onClick', 'popupWin.focus();') |
| return serializeNode(pagenode) | return serializeNode(pagenode) |
| return "no text here" | return "no text here" |
| def getNumPages(self, docinfo): | |
| """get list of pages from fulltext and put in docinfo""" | |
| if 'numPages' in docinfo: | |
| # already there | |
| return docinfo | |
| xquery = '//pb' | def getGisPlaces(self, docinfo=None, pageinfo=None): |
| text = self.getServerData("xquery.xql","document=%s&xquery=%s"%(docinfo['textURLPath'],xquery)) | """ Show all Gis Places of whole Page""" |
| #text = self.template.fulltextclient.eval("/mpdl/interface/xquery.xql", "document=%s&xquery=%s"%(docinfo['textURLPath'],xquery)) | xpath='//place' |
| docinfo['numPages'] = text.count("<pb ") | docpath = docinfo.get('textURLPath',None) |
| return docinfo | if not docpath: |
| return None | |
| url = docinfo['url'] | |
| selfurl = self.absolute_url() | |
| pn = pageinfo['current'] | |
| hrefList=[] | |
| myList= "" | |
| text=self.getServerData("xpath.xql", "document=%s&xpath=%s&pn=%s"%(docinfo['textURLPath'],xpath,pn)) | |
| dom = Parse(text) | |
| result = dom.xpath("//result/resultPage/place") | |
| for l in result: | |
| hrefNode= l.getAttributeNodeNS(None, u"id") | |
| href= hrefNode.nodeValue | |
| hrefList.append(href) | |
| myList = ",".join(hrefList) | |
| logging.debug("getGisPlaces :%s"%(myList)) | |
| return myList | |
| def getAllGisPlaces (self, docinfo=None, pageinfo=None): | |
| """Show all Gis Places of whole Book """ | |
| xpath ='//echo:place' | |
| docpath =docinfo['textURLPath'] | |
| url = docinfo['url'] | |
| selfurl =self.absolute_url() | |
| pn =pageinfo['current'] | |
| hrefList=[] | |
| myList="" | |
| text=self.getServerData("xpath.xql", "document=%s&xpath=%s"%(docinfo['textURLPath'],xpath)) | |
| dom =Parse(text) | |
| result = dom.xpath("//result/resultPage/place") | |
| def getTextPage(self, mode="text", pn=1, docinfo=None, pageinfo=None, highlightQuery=None,sn=None, viewMode=None, tocMode=None, tocPN=None): | for l in result: |
| hrefNode = l.getAttributeNodeNS(None, u"id") | |
| href= hrefNode.nodeValue | |
| hrefList.append(href) | |
| myList = ",".join(hrefList) | |
| logging.debug("getALLGisPlaces :%s"%(myList)) | |
| return myList | |
| def getTextPage(self, mode="text_dict", pn=1, docinfo=None, pageinfo=None): | |
| """returns single page from fulltext""" | """returns single page from fulltext""" |
| docpath = docinfo['textURLPath'] | docpath = docinfo['textURLPath'] |
| path = docinfo['textURLPath'] | path = docinfo['textURLPath'] |
| url = docinfo['url'] | url = docinfo.get('url',None) |
| viewMode= pageinfo['viewMode'] | name = docinfo.get('name',None) |
| pn =pageinfo['current'] | |
| #viewMode= pageinfo['viewMode'] | |
| sn = pageinfo['sn'] | |
| highlightQuery = pageinfo['highlightQuery'] | |
| #mode = pageinfo ['viewMode'] | |
| tocMode = pageinfo['tocMode'] | tocMode = pageinfo['tocMode'] |
| characterNormalization=pageinfo['characterNormalization'] | |
| tocPN = pageinfo['tocPN'] | tocPN = pageinfo['tocPN'] |
| selfurl = self.absolute_url() | selfurl = self.absolute_url() |
| if mode == "text_dict": | if mode == "text_dict": |
| Line 148 class MpdlXmlTextServer(SimpleItem): | Line 197 class MpdlXmlTextServer(SimpleItem): |
| else: | else: |
| textmode = mode | textmode = mode |
| textParam = "document=%s&mode=%s&pn=%s"%(docpath,textmode,pn) | textParam = "document=%s&mode=%s&pn=%s&characterNormalization=%s"%(docpath,textmode,pn,characterNormalization) |
| if highlightQuery is not None: | if highlightQuery is not None: |
| textParam +="&highlightQuery=%s&sn=%s"%(highlightQuery,sn) | textParam +="&highlightQuery=%s&sn=%s"%(urllib.quote(highlightQuery),sn) |
| pagexml = self.getServerData("page-fragment.xql",textParam) | pagexml = self.getServerData("page-fragment.xql",textParam) |
| #pagexml=self.template.fulltextclient.eval("/mpdl/interface/page-fragment.xql", textParam, outputUnicode=False) | dom = Parse(pagexml) |
| #original Pages | |
| pagedivs = dom.xpath("//div[@class='pageNumberOrig']") | |
| if pagedivs == dom.xpath("//div[@class='pageNumberOrig']"): | |
| if len(pagedivs)>0: | |
| docinfo['pageNumberOrig']= getTextFromNode(pagedivs[0]) | |
| logging.debug("ORIGINAL PAGES: %s"%(docinfo['pageNumberOrig'])) | |
| #original Pages Norm | |
| pagedivs = dom.xpath("//div[@class='pageNumberOrigNorm']") | |
| if pagedivs == dom.xpath("//div[@class='pageNumberOrigNorm']"): | |
| if len(pagedivs)>0: | |
| docinfo['pageNumberOrigNorm']= getTextFromNode(pagedivs[0]) | |
| logging.debug("ORIGINAL PAGES: %s"%(docinfo['pageNumberOrigNorm'])) | |
| #figureEntries | |
| pagedivs = dom.xpath("//div[@class='countFigureEntries']") | |
| if pagedivs == dom.xpath("//div[@class='countFigureEntries']"): | |
| if len(pagedivs)>0: | |
| docinfo['countFigureEntries'] = getTextFromNode(pagedivs[0]) | |
| s = getTextFromNode(pagedivs[0]) | |
| if s=='0': | |
| try: | |
| docinfo['countFigureEntries'] = int(s) | |
| logging.debug("FIGURE ENTRIES: %s"%(s)) | |
| except: | |
| docinfo['countFigureEntries'] = 0 | |
| else: | |
| s1 = int(s)/30+1 | |
| try: | |
| docinfo['countFigureEntries'] = int(s1) | |
| logging.debug("FIGURE ENTRIES: %s"%(s1)) | |
| except: | |
| docinfo['countFigureEntries'] = 0 | |
| #allPlaces | |
| pagedivs = dom.xpath("//div[@class='countPlaces']") | |
| if pagedivs == dom.xpath("//div[@class='countPlaces']"): | |
| if len(pagedivs)>0: | |
| docinfo['countPlaces']= getTextFromNode(pagedivs[0]) | |
| s = getTextFromNode(pagedivs[0]) | |
| try: | |
| docinfo['countPlaces'] = int(s) | |
| logging.debug("PLACES HERE: %s"%(s)) | |
| except: | |
| docinfo['countPlaces'] = 0 | |
| #tocEntries | |
| pagedivs = dom.xpath("//div[@class='countTocEntries']") | |
| if pagedivs == dom.xpath("//div[@class='countTocEntries']"): | |
| if len(pagedivs)>0: | |
| docinfo['countTocEntries'] = int(getTextFromNode(pagedivs[0])) | |
| s = getTextFromNode(pagedivs[0]) | |
| if s=='0': | |
| try: | |
| docinfo['countTocEntries'] = int(s) | |
| logging.debug("TEXT ENTRIES: %s"%(s)) | |
| except: | |
| docinfo['countTocEntries'] = 0 | |
| else: | |
| s1 = int(s)/30+1 | |
| try: | |
| docinfo['countTocEntries'] = int(s1) | |
| logging.debug("TEXT ENTRIES: %s"%(s1)) | |
| except: | |
| docinfo['countTocEntries'] = 0 | |
| #numTextPages | |
| pagedivs = dom.xpath("//div[@class='countPages']") | |
| if pagedivs == dom.xpath("//div[@class='countPages']"): | |
| if len(pagedivs)>0: | |
| docinfo['numPages'] = getTextFromNode(pagedivs[0]) | |
| s = getTextFromNode(pagedivs[0]) | |
| try: | |
| docinfo['numPages'] = int(s) | |
| logging.debug("PAGE NUMBER: %s"%(s)) | |
| np = docinfo['numPages'] | |
| pageinfo['end'] = min(pageinfo['end'], np) | |
| pageinfo['numgroups'] = int(np / pageinfo['groupsize']) | |
| if np % pageinfo['groupsize'] > 0: | |
| pageinfo['numgroups'] += 1 | |
| except: | |
| docinfo['numPages'] = 0 | |
| else: | |
| #no full text -- init to 0 | |
| docinfo['pageNumberOrig'] = 0 | |
| docinfo['countFigureEntries'] = 0 | |
| docinfo['countPlaces'] = 0 | |
| docinfo['countTocEntries'] = 0 | |
| docinfo['numPages'] = 0 | |
| docinfo['pageNumberOrigNorm'] = 0 | |
| #return docinfo | |
| pagedom = Parse(pagexml) | |
| # plain text mode | # plain text mode |
| if mode == "text": | if mode == "text": |
| # first div contains text | # first div contains text |
| pagedivs = pagedom.xpath("/div") | #mode = viewMode |
| pagedivs = dom.xpath("/div") | |
| if len(pagedivs) > 0: | if len(pagedivs) > 0: |
| pagenode = pagedivs[0] | pagenode = pagedivs[0] |
| links = pagenode.xpath("//a") | links = pagenode.xpath("//a") |
| Line 168 class MpdlXmlTextServer(SimpleItem): | Line 313 class MpdlXmlTextServer(SimpleItem): |
| if hrefNode: | if hrefNode: |
| href= hrefNode.nodeValue | href= hrefNode.nodeValue |
| if href.startswith('#note-'): | if href.startswith('#note-'): |
| hrefNode.nodeValue = href.replace('#note-',"?url=%s&viewMode=%s&tocMode=%s&tocPN=%s&pn=%s#note-"%(url,viewMode,tocMode,tocPN,pn)) | hrefNode.nodeValue = href.replace('#note-',"?url=%s&viewMode=text&tocMode=%s&tocPN=%s&pn=%s#note-"%(url,tocMode,tocPN,pn)) |
| return serializeNode(pagenode) | return serializeNode(pagenode) |
| if mode == "xml": | if mode == "xml": |
| # first div contains text | # first div contains text |
| pagedivs = pagedom.xpath("/div") | pagedivs = dom.xpath("/div") |
| if len(pagedivs) > 0: | if len(pagedivs) > 0: |
| pagenode = pagedivs[0] | pagenode = pagedivs[0] |
| return serializeNode(pagenode) | return serializeNode(pagenode) |
| if mode == "gis": | |
| # first div contains text | |
| pagedivs = dom.xpath("/div") | |
| if len(pagedivs) > 0: | |
| pagenode = pagedivs[0] | |
| links =pagenode.xpath("//a") | |
| for l in links: | |
| hrefNode =l.getAttributeNodeNS(None, u"href") | |
| if hrefNode: | |
| href=hrefNode.nodeValue | |
| if href.startswith('http://chinagis.mpiwg-berlin.mpg.de'): | |
| hrefNode.nodeValue =href.replace('chinagis_REST/REST/db/chgis/mpdl','chinagis/REST/db/mpdl/%s'%name) | |
| l.setAttributeNS(None, 'target', '_blank') | |
| return serializeNode(pagenode) | |
| if mode == "pureXml": | if mode == "pureXml": |
| # first div contains text | # first div contains text |
| pagedivs = pagedom.xpath("/div") | pagedivs = dom.xpath("/div") |
| if len(pagedivs) > 0: | if len(pagedivs) > 0: |
| pagenode = pagedivs[0] | pagenode = pagedivs[0] |
| return serializeNode(pagenode) | return serializeNode(pagenode) |
| # text-with-links mode | # text-with-links mode |
| if mode == "text_dict": | if mode == "text_dict": |
| # first div contains text | # first div contains text |
| pagedivs = pagedom.xpath("/div") | #mode = pageinfo ['viewMode'] |
| pagedivs = dom.xpath("/div") | |
| if len(pagedivs) > 0: | if len(pagedivs) > 0: |
| pagenode = pagedivs[0] | pagenode = pagedivs[0] |
| # check all a-tags | # check all a-tags |
| Line 203 class MpdlXmlTextServer(SimpleItem): | Line 364 class MpdlXmlTextServer(SimpleItem): |
| # add target | # add target |
| l.setAttributeNS(None, 'target', '_blank') | l.setAttributeNS(None, 'target', '_blank') |
| l.setAttributeNS(None, 'onClick',"popupWin = window.open(this.href, 'contacts', 'location,width=500,height=600,top=180, left=700, scrollbars=1'); return false;") | l.setAttributeNS(None, 'onClick',"popupWin = window.open(this.href, 'contacts', 'location,width=500,height=600,top=180, left=700, scrollbars=1'); return false;") |
| l.setAttributeNS(None, 'onDblclick', 'popupWin.focus();') | l.setAttributeNS(None, 'onClick', 'popupWin.focus();') |
| if href.startswith('lt/lemma.xql'): | if href.startswith('lt/lemma.xql'): |
| selfurl = self.absolute_url() | selfurl = self.absolute_url() |
| hrefNode.nodeValue = href.replace('lt/lemma.xql','%s/template/head_main_lemma'%selfurl) | hrefNode.nodeValue = href.replace('lt/lemma.xql','%s/template/head_main_lemma'%selfurl) |
| l.setAttributeNS(None, 'target', '_blank') | l.setAttributeNS(None, 'target', '_blank') |
| l.setAttributeNS(None, 'onClick',"popupWin = window.open(this.href, 'contacts', 'location,width=500,height=600,top=180, left=700, scrollbars=1'); return false;") | l.setAttributeNS(None, 'onClick',"popupWin = window.open(this.href, 'contacts', 'location,width=500,height=600,top=180, left=700, scrollbars=1'); return false;") |
| l.setAttributeNS(None, 'onDblclick', 'popupWin.focus();') | l.setAttributeNS(None, 'onClick', 'popupWin.focus();') |
| if href.startswith('#note-'): | if href.startswith('#note-'): |
| hrefNode.nodeValue = href.replace('#note-',"?url=%s&viewMode=%s&tocMode=%s&tocPN=%s&pn=%s#note-"%(url,viewMode,tocMode,tocPN,pn)) | hrefNode.nodeValue = href.replace('#note-',"?url=%s&viewMode=text_dict&tocMode=%s&tocPN=%s&pn=%s#note-"%(url,tocMode,tocPN,pn)) |
| return serializeNode(pagenode) | return serializeNode(pagenode) |
| return "no text here" | return "no text here" |
| Line 233 class MpdlXmlTextServer(SimpleItem): | Line 394 class MpdlXmlTextServer(SimpleItem): |
| #pagexml=self.template.fulltextclient.eval("/mpdl/interface/lt/lemma.xql","document=&language="+str(language)+"&lemma="+url_quote(str(query))) | #pagexml=self.template.fulltextclient.eval("/mpdl/interface/lt/lemma.xql","document=&language="+str(language)+"&lemma="+url_quote(str(query))) |
| return data | return data |
| def getQuery (self, docinfo=None, pageinfo=None, query=None, queryType=None, pn=1): | def getQuery (self, docinfo=None, pageinfo=None, query=None, queryType=None, pn=1, optionToggle=None): |
| """number of""" | #number of |
| docpath = docinfo['textURLPath'] | docpath = docinfo['textURLPath'] |
| pagesize = pageinfo['queryPageSize'] | pagesize = pageinfo['queryPageSize'] |
| pn = pageinfo['searchPN'] | pn = pageinfo['searchPN'] |
| Line 243 class MpdlXmlTextServer(SimpleItem): | Line 404 class MpdlXmlTextServer(SimpleItem): |
| tocSearch = 0 | tocSearch = 0 |
| tocDiv = None | tocDiv = None |
| pagexml = self.getServerData("doc-query.xql","document=%s&mode=%s&queryType=%s&query=%s&queryResultPageSize=%s&queryResultPN=%s"%(docpath, 'text', queryType, query, pagesize, pn)) | pagexml = self.getServerData("doc-query.xql","document=%s&mode=%s&queryType=%s&query=%s&queryResultPageSize=%s&queryResultPN=%s"%(docpath, 'text', queryType, urllib.quote(query), pagesize, pn)) |
| #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) | |
| pagedom = Parse(pagexml) | pagedom = Parse(pagexml) |
| numdivs = pagedom.xpath("//div[@class='queryResultHits']") | numdivs = pagedom.xpath("//div[@class='queryResultHits']") |
| tocSearch = int(getTextFromNode(numdivs[0])) | tocSearch = int(getTextFromNode(numdivs[0])) |
| logging.debug("documentViewer (gettoc) tocSearch: %s"%(tocSearch)) | |
| tc=int((tocSearch/10)+1) | tc=int((tocSearch/10)+1) |
| logging.debug("documentViewer (gettoc) tc: %s"%(tc)) | logging.debug("documentViewer (gettoc) tc: %s"%(tc)) |
| return tc | return tc |
| Line 274 class MpdlXmlTextServer(SimpleItem): | Line 435 class MpdlXmlTextServer(SimpleItem): |
| tocDiv = None | tocDiv = None |
| pagexml = self.getServerData("doc-query.xql","document=%s&queryType=%s&queryResultPageSize=%s&queryResultPN=%s"%(docpath,queryType, pagesize, pn)) | pagexml = self.getServerData("doc-query.xql","document=%s&queryType=%s&queryResultPageSize=%s&queryResultPN=%s"%(docpath,queryType, pagesize, pn)) |
| #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 | # post-processing downloaded xml |
| pagedom = Parse(pagexml) | pagedom = Parse(pagexml) |
| # get number of entries | # get number of entries |
| Line 298 class MpdlXmlTextServer(SimpleItem): | Line 459 class MpdlXmlTextServer(SimpleItem): |
| url = docinfo['url'] | url = docinfo['url'] |
| selfurl = self.absolute_url() | selfurl = self.absolute_url() |
| viewMode= pageinfo['viewMode'] | viewMode= pageinfo['viewMode'] |
| characterNormalization = pageinfo ['characterNormalization'] | |
| optionToggle =pageinfo ['optionToggle'] | |
| tocMode = pageinfo['tocMode'] | tocMode = pageinfo['tocMode'] |
| tocPN = pageinfo['tocPN'] | tocPN = pageinfo['tocPN'] |
| data = self.getServerData("doc-query.xql","document=%s&queryType=%s&queryResultPageSize=%s&queryResultPN=%s"%(docpath,queryType, pagesize, pn)) | data = self.getServerData("doc-query.xql","document=%s&queryType=%s&queryResultPageSize=%s&queryResultPN=%s&characterNormalization=regPlusNorm&optionToggle=1"%(docpath,queryType, pagesize, pn)) |
| page = data.replace('page-fragment.xql?document=%s'%str(path),'%s?url=%s&viewMode=%s&tocMode=%s&tocPN=%s&optionToggle=1'%(selfurl,url, viewMode, tocMode, tocPN)) | |
| page = data.replace('page-fragment.xql?document=%s'%str(path),'%s?url=%s&viewMode=%s&tocMode=%s&tocPN=%s'%(selfurl,url, viewMode, tocMode, tocPN)) | |
| text = page.replace('mode=image','mode=texttool') | text = page.replace('mode=image','mode=texttool') |
| #logging.debug("documentViewer (characterNormalization) characterNormalization: %s"%(characterNormalization)) | |
| logging.debug("TEXT %s"%(text)) | |
| return text | return text |
| def manage_changeMpdlXmlTextServer(self,title="",serverUrl="http://mpdl-proto.mpiwg-berlin.mpg.de/mpdl/interface/",timeout=40,RESPONSE=None): | def manage_changeMpdlXmlTextServer(self,title="",serverUrl="http://mpdl-proto.mpiwg-berlin.mpg.de/mpdl/interface/",timeout=40,RESPONSE=None): |
| Line 327 def manage_addMpdlXmlTextServer(self,id, | Line 491 def manage_addMpdlXmlTextServer(self,id, |
| self.Destination()._setObject(id, newObj) | self.Destination()._setObject(id, newObj) |
| if RESPONSE is not None: | if RESPONSE is not None: |
| RESPONSE.redirect('manage_main') | RESPONSE.redirect('manage_main') |