Diff for /documentViewer/documentViewer.py between versions 1.161 and 1.174

version 1.161, 2010/12/20 13:52:07 version 1.174, 2011/05/17 13:02:57
Line 43  def getTextFromNode(nodename): Line 43  def getTextFromNode(nodename):
            rc = rc + node.data             rc = rc + node.data
     return rc      return rc
   
 def serializeNode(node, encoding='utf-8'):  def serializeNode(node, encoding="utf-8"):
     """returns a string containing node as XML"""      """returns a string containing node as XML"""
     buf = cStringIO.StringIO()      stream = cStringIO.StringIO()
     Ft.Xml.Domlette.Print(node, stream=buf, encoding=encoding)      #logging.debug("BUF: %s"%(stream))
     s = buf.getvalue()      Ft.Xml.Domlette.Print(node, stream=stream, encoding=encoding)
     buf.close()      s = stream.getvalue()
       #logging.debug("BUF: %s"%(s))
       stream.close()
     return s      return s
   
 def browserCheck(self):  def browserCheck(self):
Line 58  def browserCheck(self): Line 60  def browserCheck(self):
     bt['ua'] = ua      bt['ua'] = ua
     bt['isIE'] = False      bt['isIE'] = False
     bt['isN4'] = False      bt['isN4'] = False
       bt['versFirefox']=""
       bt['versIE']=""
       bt['versSafariChrome']=""
       bt['versOpera']=""
       
     if string.find(ua, 'MSIE') > -1:      if string.find(ua, 'MSIE') > -1:
         bt['isIE'] = True          bt['isIE'] = True
     else:      else:
         bt['isN4'] = (string.find(ua, 'Mozilla/4.') > -1)          bt['isN4'] = (string.find(ua, 'Mozilla/4.') > -1)
               # Safari oder Chrome identification    
       try:
           nav = ua[string.find(ua, '('):]
           nav1=ua[string.find(ua,')'):]
           nav2=nav1[string.find(nav1,'('):]
           nav3=nav2[string.find(nav2,')'):]
           ie = string.split(nav, "; ")[1]
           ie1 =string.split(nav1, " ")[2]
           ie2 =string.split(nav3, " ")[1]
           ie3 =string.split(nav3, " ")[2]
           if string.find(ie3, "Safari") >-1:
               bt['versSafariChrome']=string.split(ie2, "/")[1]
       except: pass
       # IE identification
     try:      try:
         nav = ua[string.find(ua, '('):]          nav = ua[string.find(ua, '('):]
         ie = string.split(nav, "; ")[1]          ie = string.split(nav, "; ")[1]
         if string.find(ie, "MSIE") > -1:          if string.find(ie, "MSIE") > -1:
             bt['versIE'] = string.split(ie, " ")[1]              bt['versIE'] = string.split(ie, " ")[1]
     except: pass      except: pass
       # Firefox identification
       try:
           nav = ua[string.find(ua, '('):]
           nav1=ua[string.find(ua,')'):]
           if string.find(ie1, "Firefox") >-1:
               nav5= string.split(ie1, "/")[1]
               logging.debug("FIREFOX: %s"%(nav5))
               bt['versFirefox']=nav5[0:3]                   
       except:pass
       #Opera identification
       try:
           if string.find(ua,"Opera") >-1:
               nav = ua[string.find(ua, '('):]
               nav1=nav[string.find(nav,')'):]
               bt['versOpera']=string.split(nav1,"/")[2]
       except:pass
           
     bt['isMac'] = string.find(ua, 'Macintosh') > -1      bt['isMac'] = string.find(ua, 'Macintosh') > -1
     bt['isWin'] = string.find(ua, 'Windows') > -1      bt['isWin'] = string.find(ua, 'Windows') > -1
Line 127  def getHttpData(url, data=None, num_trie Line 163  def getHttpData(url, data=None, num_trie
     raise IOError("ERROR fetching HTTP data from %s: %s"%(url,errmsg))      raise IOError("ERROR fetching HTTP data from %s: %s"%(url,errmsg))
     #return None      #return None
   
   
   
 ##  ##
 ## documentViewer class  ## documentViewer class
 ##  ##
Line 197  class documentViewer(Folder): Line 231  class documentViewer(Folder):
         """get page"""          """get page"""
         return self.template.fulltextclient.getTextPage(**args)          return self.template.fulltextclient.getTextPage(**args)
   
     def getQuery(self, **args):      def getOrigPages(self, **args):
         """get query"""          """get page"""
         return self.template.fulltextclient.getQuery(**args)          return self.template.fulltextclient.getOrigPages(**args)
       
     def getQueryResultHits(self, **args):  
         """get query"""  
         return self.template.fulltextclient.getQueryResultHits(**args)  
           
     def getQueryResultHitsText(self, **args):      def getOrigPagesNorm(self, **args):
         """get query"""          """get page"""
         return self.template.fulltextclient.getQueryResultHitsText(**args)          return self.template.fulltextclient.getOrigPagesNorm(**args)
           
     def getQueryResultHitsFigures(self, **args):      def getQuery(self, **args):
         """get query"""          """get query in search"""
         return self.template.fulltextclient.getQueryResultHitsFigures(**args)          return self.template.fulltextclient.getQuery(**args)
           
     def getSearch(self, **args):      def getSearch(self, **args):
         """get search"""          """get search"""
Line 225  class documentViewer(Folder): Line 255  class documentViewer(Folder):
         """get all gis places """          """get all gis places """
         return self.template.fulltextclient.getAllGisPlaces(**args)          return self.template.fulltextclient.getAllGisPlaces(**args)
           
     def getOrigPages(self, **args):  
         """get original page number """  
         return self.template.fulltextclient.getOrigPages(**args)  
       
     def getAllPlaces(self, **args):  
         """get original page number """  
         return self.template.fulltextclient.getAllPlaces(**args)  
       
     def getTocEntries(self, **args):  
         """get original page number """  
         return self.template.fulltextclient.getTocEntries(**args)  
       
     def getFigureEntries(self, **args):  
         """get original page number """  
         return self.template.fulltextclient.getFigureEntries(**args)      
       
     def getNumPages(self, docinfo):  
         """get numpages"""  
         return self.template.fulltextclient.getNumPages(docinfo)  
      
     def getNumTextPages(self, docinfo):  
         """get numpages text"""  
         return self.template.fulltextclient.getNumTextPages(docinfo)  
      
     def getTranslate(self, **args):      def getTranslate(self, **args):
         """get translate"""          """get translate"""
         return self.template.fulltextclient.getTranslate(**args)          return self.template.fulltextclient.getTranslate(**args)
Line 257  class documentViewer(Folder): Line 263  class documentViewer(Folder):
         """get lemma"""          """get lemma"""
         return self.template.fulltextclient.getLemma(**args)          return self.template.fulltextclient.getLemma(**args)
   
       def getLemmaQuery(self, **args):
           """get query"""
           return self.template.fulltextclient.getLemmaQuery(**args)
   
       def getLex(self, **args):
           """get lex"""
           return self.template.fulltextclient.getLex(**args)
   
     def getToc(self, **args):      def getToc(self, **args):
         """get toc"""          """get toc"""
         return self.template.fulltextclient.getToc(**args)          return self.template.fulltextclient.getToc(**args)
Line 335  class documentViewer(Folder): Line 349  class documentViewer(Folder):
                                   
         pageinfo = self.getPageinfo(start=start,current=pn, docinfo=docinfo,viewMode=viewMode,tocMode=tocMode)          pageinfo = self.getPageinfo(start=start,current=pn, docinfo=docinfo,viewMode=viewMode,tocMode=tocMode)
                   
         pt = getattr(self.template, 'viewer_main')                         if (docinfo.get('textURLPath',None)):
               page = self.getTextPage(docinfo=docinfo, pageinfo=pageinfo)
               pageinfo['textPage'] = page
           tt = getattr(self, 'template')   
           pt = getattr(tt, 'viewer_main')               
         return pt(docinfo=docinfo,pageinfo=pageinfo,viewMode=viewMode,mk=self.generateMarks(mk))          return pt(docinfo=docinfo,pageinfo=pageinfo,viewMode=viewMode,mk=self.generateMarks(mk))
       
     def generateMarks(self,mk):      def generateMarks(self,mk):
Line 351  class documentViewer(Folder): Line 369  class documentViewer(Folder):
           
     def getBrowser(self):      def getBrowser(self):
         """getBrowser the version of browser """          """getBrowser the version of browser """
         names=""          bt = browserCheck(self)
         names = browserCheck(self)          logging.debug("BROWSER VERSION: %s"%(bt))
         return names          return bt
                   
     def findDigilibUrl(self):      def findDigilibUrl(self):
         """try to get the digilib URL from zogilib"""          """try to get the digilib URL from zogilib"""
Line 372  class documentViewer(Folder): Line 390  class documentViewer(Folder):
         else:          else:
             return style              return style
           
     def getLink(self,param=None,val=None):      def getLink(self, param=None, val=None, params=None, baseUrl=None, paramSep='&'):
         """link to documentviewer with parameter param set to val"""          """returns URL to documentviewer with parameter param set to val or from dict params"""
         params=self.REQUEST.form.copy()          # copy existing request params
           urlParams=self.REQUEST.form.copy()
           # change single param
         if param is not None:          if param is not None:
             if val is None:              if val is None:
                 if params.has_key(param):                  if urlParams.has_key(param):
                     del params[param]                      del urlParams[param]
             else:              else:
                 params[param] = str(val)                  urlParams[param] = str(val)
                   
           # change more params
           if params is not None:
               for k in params.keys():
                   v = params[k]
                   if v is None:
                       # val=None removes param
                       if urlParams.has_key(k):
                           del urlParams[k]
                           
                   else:
                       urlParams[k] = v
   
           # FIXME: does this belong here?
           if urlParams.get("mode", None) == "filepath": #wenn beim erst Aufruf filepath gesetzt wurde aendere das nun zu imagepath
                   urlParams["mode"] = "imagepath"
                   urlParams["url"] = getParentDir(urlParams["url"])
                   
           # quote values and assemble into query string (not escaping '/')
           ps = paramSep.join(["%s=%s"%(k,urllib.quote_plus(v,'/')) for (k, v) in urlParams.items()])
           #ps = urllib.urlencode(urlParams)
           if baseUrl is None:
               baseUrl = self.REQUEST['URL1']
                                   
         if params.get("mode", None) == "filepath": #wenn beim erst Aufruf filepath gesetzt wurde aendere das nun zu imagepath          url = "%s?%s"%(baseUrl, ps)
                 params["mode"] = "imagepath"  
                 params["url"] = getParentDir(params["url"])  
                   
         # quote values and assemble into query string  
         #ps = "&".join(["%s=%s"%(k,urllib.quote(v)) for (k, v) in params.items()])  
         ps = urllib.urlencode(params)  
         url=self.REQUEST['URL1']+"?"+ps  
         return url          return url
   
     def getLinkAmp(self,param=None,val=None):  
         """link to documentviewer with parameter param set to val"""  
         params=self.REQUEST.form.copy()  
         if param is not None:  
             if val is None:  
                 if params.has_key(param):  
                     del params[param]  
             else:  
                 params[param] = str(val)  
                                   
         # quote values and assemble into query string      def getLinkAmp(self, param=None, val=None, params=None, baseUrl=None):
         logging.debug("XYXXXXX: %s"%repr(params.items()))          """link to documentviewer with parameter param set to val"""
         ps = "&".join(["%s=%s"%(k,urllib.quote(v)) for (k, v) in params.items()])          return self.getLink(param, val, params, baseUrl, '&')
         url=self.REQUEST['URL1']+"?"+ps  
         return url  
           
     def getInfo_xml(self,url,mode):      def getInfo_xml(self,url,mode):
         """returns info about the document as XML"""          """returns info about the document as XML"""
Line 620  class documentViewer(Folder): Line 645  class documentViewer(Folder):
                 docinfo['lang']=getTextFromNode(dom.xpath("//bib/lang")[0])                  docinfo['lang']=getTextFromNode(dom.xpath("//bib/lang")[0])
             except:              except:
                 docinfo['lang']=''                  docinfo['lang']=''
               try:
                   docinfo['city']=getTextFromNode(dom.xpath("//bib/city")[0])
               except:
                   docinfo['city']=''
               try:
                   docinfo['number_of_pages']=getTextFromNode(dom.xpath("//bib/number_of_pages")[0])
               except:
                   docinfo['number_of_pages']=''
               try:
                   docinfo['series_volume']=getTextFromNode(dom.xpath("//bib/series_volume")[0])
               except:
                   docinfo['series_volume']=''
               try:
                   docinfo['number_of_volumes']=getTextFromNode(dom.xpath("//bib/number_of_volumes")[0])
               except:
                   docinfo['number_of_volumes']=''
               try:
                   docinfo['translator']=getTextFromNode(dom.xpath("//bib/translator")[0])
               except:
                   docinfo['translator']=''
               try:
                   docinfo['edition']=getTextFromNode(dom.xpath("//bib/edition")[0])
               except:
                   docinfo['edition']=''
               try:
                   docinfo['series_author']=getTextFromNode(dom.xpath("//bib/series_author")[0])
               except:
                   docinfo['series_author']=''
               try:
                   docinfo['publisher']=getTextFromNode(dom.xpath("//bib/publisher")[0])
               except:
                   docinfo['publisher']=''
               try:
                   docinfo['series_title']=getTextFromNode(dom.xpath("//bib/series_title")[0])
               except:
                   docinfo['series_title']=''
               try:
                   docinfo['isbn_issn']=getTextFromNode(dom.xpath("//bib/isbn_issn")[0])
               except:
                   docinfo['isbn_issn']=''           
         return docinfo          return docinfo
           
             
Line 718  class documentViewer(Folder): Line 782  class documentViewer(Folder):
         if textUrls and (len(textUrls) > 0):          if textUrls and (len(textUrls) > 0):
             textUrl = getTextFromNode(textUrls[0])              textUrl = getTextFromNode(textUrls[0])
             docinfo['textURLPath'] = textUrl              docinfo['textURLPath'] = textUrl
             if not docinfo['imagePath']:              textUrlkurz = string.split(textUrl, ".")[0]
               docinfo['textURLPathkurz'] = textUrlkurz
               #if not docinfo['imagePath']:
                 # text-only, no page images                  # text-only, no page images
                 docinfo = self.getNumTextPages(docinfo)                  #docinfo = self.getNumTextPages(docinfo)
                     
                     
         presentationUrls = dom.xpath("//texttool/presentation")          presentationUrls = dom.xpath("//texttool/presentation")
         docinfo = self.getBibinfoFromIndexMeta(url, docinfo=docinfo, dom=dom)   # get info von bib tag          docinfo = self.getBibinfoFromIndexMeta(url, docinfo=docinfo, dom=dom)   # get info von bib tag
Line 839  class documentViewer(Folder): Line 906  class documentViewer(Folder):
         pageinfo['viewMode'] = viewMode          pageinfo['viewMode'] = viewMode
         pageinfo['tocMode'] = tocMode          pageinfo['tocMode'] = tocMode
         pageinfo['characterNormalization'] = self.REQUEST.get('characterNormalization','reg')          pageinfo['characterNormalization'] = self.REQUEST.get('characterNormalization','reg')
         pageinfo['optionToggle'] = self.REQUEST.get('optionToggle','')          #pageinfo['optionToggle'] = self.REQUEST.get('optionToggle','1')
         pageinfo['query'] = self.REQUEST.get('query','')           pageinfo['query'] = self.REQUEST.get('query','') 
         pageinfo['queryType'] = self.REQUEST.get('queryType','')          pageinfo['queryType'] = self.REQUEST.get('queryType','')
         pageinfo['querySearch'] =self.REQUEST.get('querySearch', 'fulltext')          pageinfo['querySearch'] =self.REQUEST.get('querySearch', 'fulltext')
Line 851  class documentViewer(Folder): Line 918  class documentViewer(Folder):
         toc = int (pageinfo['tocPN'])          toc = int (pageinfo['tocPN'])
         pageinfo['textPages'] =int (toc)          pageinfo['textPages'] =int (toc)
                   
           
           
         if 'tocSize_%s'%tocMode in docinfo:          if 'tocSize_%s'%tocMode in docinfo:
             tocSize = int(docinfo['tocSize_%s'%tocMode])              tocSize = int(docinfo['tocSize_%s'%tocMode])
             tocPageSize = int(pageinfo['tocPageSize'])              tocPageSize = int(pageinfo['tocPageSize'])

Removed from v.1.161  
changed lines
  Added in v.1.174


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