Diff for /documentViewer/documentViewer.py between versions 1.175.2.21 and 1.175.2.24

version 1.175.2.21, 2011/08/05 17:04:20 version 1.175.2.24, 2011/08/12 14:41:39
Line 176  class documentViewer(Folder): Line 176  class documentViewer(Folder):
         except Exception, e:          except Exception, e:
             logging.error("Unable to find MetaDataFolder 'metadata': "+str(e))              logging.error("Unable to find MetaDataFolder 'metadata': "+str(e))
                           
           if digilibBaseUrl is not None:
               self.digilibBaseUrl = digilibBaseUrl
               
                   
     # proxy text server methods to fulltextclient      # proxy text server methods to fulltextclient
     def getTextPage(self, **args):      def getTextPage(self, **args):
Line 206  class documentViewer(Folder): Line 209  class documentViewer(Folder):
         """get all gis places """          """get all gis places """
         return self.template.fulltextclient.getAllGisPlaces(**args)          return self.template.fulltextclient.getAllGisPlaces(**args)
                 
     def getTranslate(self, **args):      def getWordInfo(self, **args):
         """get translate"""          """get translate"""
         return self.template.fulltextclient.getTranslate(**args)          return self.template.fulltextclient.getWordInfo(**args)
   
     def getLemma(self, **args):      def getLemma(self, **args):
         """get lemma"""          """get lemma"""
Line 307  class documentViewer(Folder): Line 310  class documentViewer(Folder):
                           
         # stringify viewType          # stringify viewType
         if isinstance(viewType, list):          if isinstance(viewType, list):
               logging.debug("index_html: viewType is list:%s"%viewType)
             viewType = ','.join([t for t in viewType if t])              viewType = ','.join([t for t in viewType if t])
                                                   
         pageinfo = self.getPageinfo(start=start, current=pn, docinfo=docinfo, viewMode=viewMode, viewType=viewType, tocMode=tocMode)          pageinfo = self.getPageinfo(start=start, current=pn, docinfo=docinfo, viewMode=viewMode, viewType=viewType, tocMode=tocMode)
Line 355  class documentViewer(Folder): Line 359  class documentViewer(Folder):
         else:          else:
             return style              return style
           
     def getParams(self, param=None, val=None, params=None):      def getParams(self, param=None, val=None, params=None, duplicates=None):
         """returns dict with URL parameters.          """returns dict with URL parameters.
                   
         Takes URL parameters and additionally param=val or dict params.          Takes URL parameters and additionally param=val or dict params.
Line 372  class documentViewer(Folder): Line 376  class documentViewer(Folder):
                                   
         # change more params          # change more params
         if params is not None:          if params is not None:
             for k in params.keys():              for (k, v) in params.items():
                 v = params[k]  
                 if v is None:                  if v is None:
                     # val=None removes param                      # val=None removes param
                     if newParams.has_key(k):                      if newParams.has_key(k):
Line 382  class documentViewer(Folder): Line 385  class documentViewer(Folder):
                 else:                  else:
                     newParams[k] = v                      newParams[k] = v
                                           
           if duplicates:
               # eliminate lists (coming from duplicate keys)
               for (k,v) in newParams.items():
                   if isinstance(v, list):
                       if duplicates == 'comma':
                           # make comma-separated list of non-empty entries
                           newParams[k] = ','.join([t for t in v if t])
                       elif duplicates == 'first':
                           # take first non-empty entry
                           newParams[k] = [t for t in v if t][0]
           
         return newParams          return newParams
           
     def getLink(self, param=None, val=None, params=None, baseUrl=None, paramSep='&'):      def getLink(self, param=None, val=None, params=None, baseUrl=None, paramSep='&', duplicates='comma'):
         """returns URL to documentviewer with parameter param set to val or from dict params"""          """returns URL to documentviewer with parameter param set to val or from dict params"""
         urlParams = self.getParams(param=param, val=val, params=params)          urlParams = self.getParams(param=param, val=val, params=params, duplicates=duplicates)
         # quote values and assemble into query string (not escaping '/')          # quote values and assemble into query string (not escaping '/')
         ps = paramSep.join(["%s=%s"%(k,urllib.quote_plus(unicode(v),'/')) for (k, v) in urlParams.items()])          ps = paramSep.join(["%s=%s"%(k,urllib.quote_plus(unicode(v),'/')) for (k, v) in urlParams.items()])
         if baseUrl is None:          if baseUrl is None:
Line 395  class documentViewer(Folder): Line 409  class documentViewer(Folder):
         url = "%s?%s"%(baseUrl, ps)          url = "%s?%s"%(baseUrl, ps)
         return url          return url
   
     def getLinkAmp(self, param=None, val=None, params=None, baseUrl=None):      def getLinkAmp(self, param=None, val=None, params=None, baseUrl=None, duplicates='comma'):
         """link to documentviewer with parameter param set to val"""          """link to documentviewer with parameter param set to val"""
         return self.getLink(param, val, params, baseUrl, '&')          return self.getLink(param=param, val=val, params=params, baseUrl=baseUrl, paramSep='&', duplicates=duplicates)
           
           
     def getInfo_xml(self,url,mode):      def getInfo_xml(self,url,mode):
Line 447  class documentViewer(Folder): Line 461  class documentViewer(Folder):
         docinfo = {'mode': mode, 'url': url}          docinfo = {'mode': mode, 'url': url}
         # add self url          # add self url
         docinfo['viewerUrl'] = self.getDocumentViewerURL()          docinfo['viewerUrl'] = self.getDocumentViewerURL()
           docinfo['digilibBaseUrl'] = self.digilibBaseUrl
         # get index.meta DOM          # get index.meta DOM
         docUrl = None          docUrl = None
         metaDom = None          metaDom = None
Line 515  class documentViewer(Folder): Line 530  class documentViewer(Folder):
   
         # image path          # image path
         if mode != 'texttool':          if mode != 'texttool':
             # override image path from texttool              # override image path from texttool with url
             docinfo['imagePath'] = url.replace('/mpiwg/online/', '', 1)              docinfo['imagePath'] = url.replace('/mpiwg/online/', '', 1)
   
               
   
         # number of images from digilib          # number of images from digilib
         if docinfo.get('imagePath', None):          if docinfo.get('imagePath', None):
             docinfo['imageURL'] = self.digilibBaseUrl + "/servlet/Scaler?fn=" + docinfo['imagePath']              docinfo['imageURL'] = self.digilibBaseUrl + "/servlet/Scaler?fn=" + docinfo['imagePath']
Line 582  class documentViewer(Folder): Line 599  class documentViewer(Folder):
         docinfo['pageFlow'] = texttool.get('page-flow', 'ltr')          docinfo['pageFlow'] = texttool.get('page-flow', 'ltr')
                           
         # odd pages are left          # odd pages are left
         docinfo['oddPage'] = texttool.get('odd-scan-orientation', 'left')          docinfo['oddPage'] = texttool.get('odd-scan-position', 'left')
                           
         # number of title page (0: not defined)          # number of title page (0: not defined)
         docinfo['titlePage'] = texttool.get('title-scan-no', 0)          docinfo['titlePage'] = texttool.get('title-scan-no', 0)
Line 680  class documentViewer(Folder): Line 697  class documentViewer(Folder):
         return docinfo          return docinfo
           
   
     def getPageinfo(self, current, start=None, rows=None, cols=None, docinfo=None, viewMode=None, viewType=None, tocMode=None):      def getPageinfo(self, current=None, start=None, rows=None, cols=None, docinfo=None, viewMode=None, viewType=None, tocMode=None):
         """returns pageinfo with the given parameters"""          """returns pageinfo with the given parameters"""
           logging.debug("getPageInfo(current=%s, start=%s, rows=%s, cols=%s, viewMode=%s, viewType=%s, tocMode=%s)"%(current,start,rows,cols,viewMode,viewType,tocMode))
         pageinfo = {}          pageinfo = {}
         pageinfo['viewMode'] = viewMode          pageinfo['viewMode'] = viewMode
         pageinfo['viewType'] = viewType          pageinfo['viewType'] = viewType
Line 695  class documentViewer(Folder): Line 713  class documentViewer(Folder):
         pageinfo['cols'] = cols          pageinfo['cols'] = cols
         grpsize = cols * rows          grpsize = cols * rows
         pageinfo['groupsize'] = grpsize          pageinfo['groupsize'] = grpsize
         # what does this do?          # is start is empty use one around current
         start = getInt(start, default=(math.ceil(float(current)/float(grpsize))*grpsize-(grpsize-1)))          start = getInt(start, default=(math.ceil(float(current)/float(grpsize))*grpsize-(grpsize-1)))
         # int(current / grpsize) * grpsize +1))          # int(current / grpsize) * grpsize +1))
         pageinfo['start'] = start          pageinfo['start'] = start
         pageinfo['end'] = start + grpsize  
         pn = self.REQUEST.get('pn','1')          pn = self.REQUEST.get('pn','1')
         pageinfo['pn'] = pn          pageinfo['pn'] = pn
         np = int(docinfo.get('numPages', 0))          np = int(docinfo.get('numPages', 0))
Line 710  class documentViewer(Folder): Line 727  class documentViewer(Folder):
                 pageinfo['textPage'] = self.getTextPage(mode=viewType, pn=pn, docinfo=docinfo, pageinfo=pageinfo)                  pageinfo['textPage'] = self.getTextPage(mode=viewType, pn=pn, docinfo=docinfo, pageinfo=pageinfo)
                 np = int(docinfo.get('numPages', 0))                  np = int(docinfo.get('numPages', 0))
                                   
         pageinfo['end'] = min(pageinfo['end'], np)  
         pageinfo['numgroups'] = int(np / grpsize)          pageinfo['numgroups'] = int(np / grpsize)
         if np % grpsize > 0:          if np % grpsize > 0:
             pageinfo['numgroups'] += 1              pageinfo['numgroups'] += 1
                                   
           pageFlowLtr = docinfo.get('pageFlow', 'ltr') != 'rtl'
           oddScanLeft = docinfo.get('oddPage', 'left') != 'right'
           # add zeroth page for two columns
           pageZero = (cols == 2 and (pageFlowLtr != oddScanLeft))
           pageinfo['pageZero'] = pageZero
           pageinfo['pageList'] = self.getPageList(start=start, rows=rows, cols=cols, pageFlowLtr=pageFlowLtr, pageZero=pageZero, minIdx=1, maxIdx=np)
                   
         pageinfo['characterNormalization'] = self.REQUEST.get('characterNormalization','reg')          pageinfo['characterNormalization'] = self.REQUEST.get('characterNormalization','reg')
         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')
         pageinfo['highlightQuery'] = self.REQUEST.get('highlightQuery','')          pageinfo['highlightQuery'] = self.REQUEST.get('highlightQuery','')
         pageinfo['tocPageSize'] = self.REQUEST.get('tocPageSize', '30')          pageinfo['tocPageSize'] = getInt(self.REQUEST.get('tocPageSize', 30))
         pageinfo['queryPageSize'] =self.REQUEST.get('queryPageSize', '10')          pageinfo['queryPageSize'] = getInt(self.REQUEST.get('queryPageSize', 10))
         pageinfo['tocPN'] = self.REQUEST.get('tocPN', '1')          pageinfo['tocPN'] = getInt(self.REQUEST.get('tocPN', '1'))
         # WTF?:          pageinfo['searchPN'] = getInt(self.REQUEST.get('searchPN','1'))
         toc = int(pageinfo['tocPN'])  
         pageinfo['textPages'] = int(toc)  
                   
         # What does this do?          # limit tocPN
         if 'tocSize_%s'%tocMode in docinfo:          if 'tocSize_%s'%tocMode in docinfo:
             tocSize = int(docinfo['tocSize_%s'%tocMode])              tocSize = docinfo['tocSize_%s'%tocMode]
             tocPageSize = int(pageinfo['tocPageSize'])              tocPageSize = pageinfo['tocPageSize']
             # cached toc                         # cached toc           
             if tocSize%tocPageSize>0:              if tocSize%tocPageSize>0:
                 tocPages=tocSize/tocPageSize+1                  tocPages=tocSize/tocPageSize+1
             else:              else:
                 tocPages=tocSize/tocPageSize                  tocPages=tocSize/tocPageSize
                                   
             pageinfo['tocPN'] = min(tocPages,toc)              pageinfo['tocPN'] = min(tocPages,pageinfo['tocPN'])
                           
         pageinfo['searchPN'] =self.REQUEST.get('searchPN','1')  
         return pageinfo          return pageinfo
   
   
       def getPageList(self, start=None, rows=None, cols=None, pageFlowLtr=True, pageZero=False, minIdx=1, maxIdx=0):
           """returns array of page informations for one screenfull of thumbnails"""
           if maxIdx == 0:
               maxIdx = start + rows * cols
   
           pages = []
           if pageZero and start == 1:
               # correct beginning
               idx = 0
           else:
               idx = start
               
           for r in range(rows):
               row = []
               for c in range(cols):
                   if idx < minIdx or idx > maxIdx:
                       page = {'idx':None}
                   else:
                       page = {'idx':idx}
                       
                   idx += 1
                   if pageFlowLtr:
                       row.append(page)
                   else:
                       row.insert(0, page) 
                   
               pages.append(row)
               
           logging.debug("getPageList returns=%s"%(pages))
           return pages
           
   
     security.declareProtected('View management screens','changeDocumentViewerForm')          security.declareProtected('View management screens','changeDocumentViewerForm')    
     changeDocumentViewerForm = PageTemplateFile('zpt/changeDocumentViewer', globals())      changeDocumentViewerForm = PageTemplateFile('zpt/changeDocumentViewer', globals())
           

Removed from v.1.175.2.21  
changed lines
  Added in v.1.175.2.24


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