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

version 1.2.2.3, 2010/06/18 19:41:28 version 1.230, 2011/03/07 14:08:07
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):      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
                   
         xquery = '//pb'          url = docinfo['url']
         text = self.getServerData("xquery.xql","document=%s&xquery=%s"%(docinfo['textURLPath'],xquery))          selfurl = self.absolute_url()
         #text = self.template.fulltextclient.eval("/mpdl/interface/xquery.xql", "document=%s&xquery=%s"%(docinfo['textURLPath'],xquery))          pn = pageinfo['current']
         docinfo['numPages'] = text.count("<pb ")          hrefList=[]
         return docinfo          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
                 
     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']
           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 194  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 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 302  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 353  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 408  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 418  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 446  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 470  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
           
Line 327  def manage_addMpdlXmlTextServer(self,id, Line 500  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')
   
   
       

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


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