Diff for /documentViewer/MpdlXmlTextServer.py between versions 1.2.2.3 and 1.231

version 1.2.2.3, 2010/06/18 19:41:28 version 1.231, 2011/03/10 14:03:31
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 21  class MpdlXmlTextServer(SimpleItem): Line 20  class MpdlXmlTextServer(SimpleItem):
           
     manage_changeMpdlXmlTextServerForm = PageTemplateFile("zpt/manage_changeMpdlXmlTextServer", globals())      manage_changeMpdlXmlTextServerForm = PageTemplateFile("zpt/manage_changeMpdlXmlTextServer", globals())
                   
     def __init__(self,id,title="",serverUrl="http://mpdl-proto.mpiwg-berlin.mpg.de/mpdl/interface/", serverName=None, timeout=40):      #def __init__(self,id,title="",serverUrl="http://mpdl-proto.mpiwg-berlin.mpg.de/mpdl/interface/", serverName=None, timeout=40):
       def __init__(self,id,title="",serverUrl="http://mpdl-test.mpiwg-berlin.mpg.de:30030/mpdl/interface/", serverName=None, timeout=40):    
           
         """constructor"""          """constructor"""
         self.id=id          self.id=id
         self.title=title          self.title=title
Line 31  class MpdlXmlTextServer(SimpleItem): Line 32  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 85  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 100  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 118  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):      def getGisPlaces(self, docinfo=None, pageinfo=None):
         """get list of pages from fulltext and put in docinfo"""          """ Show all Gis Places of whole Page"""
         if 'numPages' in docinfo:          xpath='//place'
             # already there          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")
           
           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
                   
         xquery = '//pb'  
         text = self.getServerData("xquery.xql","document=%s&xquery=%s"%(docinfo['textURLPath'],xquery))  
         #text = self.template.fulltextclient.eval("/mpdl/interface/xquery.xql", "document=%s&xquery=%s"%(docinfo['textURLPath'],xquery))  
         docinfo['numPages'] = text.count("<pb ")  
         return docinfo  
                 
     def getTextPage(self, mode="text", pn=1, docinfo=None, pageinfo=None, highlightQuery=None,sn=None, viewMode=None, tocMode=None, tocPN=None):      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']
           sn = pageinfo['sn']
           optionToggle =pageinfo ['optionToggle']
           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&optionToggle=%s"%(docpath,textmode,pn,characterNormalization,optionToggle)
         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 PAGE: %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 PAGE NORM: %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)
                       except:
                           docinfo['countFigureEntries'] = 0
                   else:
                       s1 = int(s)/30+1
                       try:
                           docinfo['countFigureEntries'] = int(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)
                   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)
                       except:
                           docinfo['countTocEntries'] = 0
                   else:
                       s1 = int(s)/30+1
                       try:
                           docinfo['countTocEntries'] = int(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")              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 305  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:
                     pagenode = pagedivs[0]
                     return serializeNode(pagenode)
           if mode == "gis":
                 # first div contains text
                 pagedivs = dom.xpath("/div")
               if len(pagedivs) > 0:                if len(pagedivs) > 0:
                   pagenode = 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)                    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 356  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"
   
       def getOrigPages(self, docinfo=None, pageinfo=None):
           docpath = docinfo['textURLPath']
           pn =pageinfo['current']
           selfurl = self.absolute_url()   
           pagexml = self.getServerData("page-fragment.xql","document=%s&pn=%s"%(docpath, pn))
           dom = Parse(pagexml)
           pagedivs = dom.xpath("//div[@class='pageNumberOrig']")
           if pagedivs == dom.xpath("//div[@class='pageNumberOrig']"):
               if len(pagedivs)>0:
                   docinfo['pageNumberOrig']= getTextFromNode(pagedivs[0])        
                   return docinfo['pageNumberOrig']
       
       def getOrigPagesNorm(self, docinfo=None, pageinfo=None):
           docpath = docinfo['textURLPath']
           pn =pageinfo['current']
           selfurl = self.absolute_url()   
           pagexml = self.getServerData("page-fragment.xql","document=%s&pn=%s"%(docpath, pn))
           dom = Parse(pagexml)
           pagedivs = dom.xpath("//div[@class='pageNumberOrigNorm']")
           if pagedivs == dom.xpath("//div[@class='pageNumberOrigNorm']"):
               if len(pagedivs)>0:
                   docinfo['pageNumberOrigNorm']= getTextFromNode(pagedivs[0])        
                   return docinfo['pageNumberOrigNorm']
   
                   
     def getTranslate(self, query=None, language=None):      def getTranslate(self, query=None, language=None):
         """translate into another languages"""          """translate into another languages"""
         data = self.getServerData("lt/lex.xql","document=&language="+str(language)+"&query="+urllib.quote(query))          data = self.getServerData("lt/lex.xql","document=&language="+str(language)+"&query="+urllib.quote(query))
Line 233  class MpdlXmlTextServer(SimpleItem): Line 411  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 421  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]))
          tc=int((tocSearch/10)+1)           tc=int((tocSearch/10)+1)
          logging.debug("documentViewer (gettoc) tc: %s"%(tc))  
          return tc           return tc
   
     def getToc(self, mode="text", docinfo=None):      def getToc(self, mode="text", docinfo=None):
         """loads table of contents and stores in docinfo"""          """loads table of contents and stores in docinfo"""
         logging.debug("documentViewer (gettoc) mode: %s"%(mode))  
         if mode == "none":          if mode == "none":
             return docinfo                      return docinfo        
         if 'tocSize_%s'%mode in docinfo:          if 'tocSize_%s'%mode in docinfo:
Line 274  class MpdlXmlTextServer(SimpleItem): Line 449  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 473  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')
         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):
       def manage_changeMpdlXmlTextServer(self,title="",serverUrl="http://mpdl-test.mpiwg-berlin.mpg.de:30030/mpdl/interface/",timeout=40,RESPONSE=None):
         """change settings"""          """change settings"""
         self.title=title          self.title=title
         self.timeout = timeout          self.timeout = timeout
Line 321  def manage_addMpdlXmlTextServerForm(self Line 498  def manage_addMpdlXmlTextServerForm(self
     pt = PageTemplateFile("zpt/manage_addMpdlXmlTextServer", globals()).__of__(self)      pt = PageTemplateFile("zpt/manage_addMpdlXmlTextServer", globals()).__of__(self)
     return pt()      return pt()
   
 def manage_addMpdlXmlTextServer(self,id,title="",serverUrl="http://mpdl-proto.mpiwg-berlin.mpg.de/mpdl/interface/",timeout=40,RESPONSE=None):  #def manage_addMpdlXmlTextServer(self,id,title="",serverUrl="http://mpdl-proto.mpiwg-berlin.mpg.de/mpdl/interface/",timeout=40,RESPONSE=None):
   def manage_addMpdlXmlTextServer(self,id,title="",serverUrl="http://mpdl-test.mpiwg-berlin.mpg.de:30030/mpdl/interface/",timeout=40,RESPONSE=None):    
     """add zogiimage"""      """add zogiimage"""
     newObj = MpdlXmlTextServer(id,title,serverUrl,timeout)      newObj = MpdlXmlTextServer(id,title,serverUrl,timeout)
     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')
   
   
       

Removed from v.1.2.2.3  
changed lines
  Added in v.1.231


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>