diff documentViewer.py @ 476:1d93a8cb2d8f elementtree

more new template stuff
author casties
date Tue, 09 Aug 2011 20:27:41 +0200
parents 5a3ab27385ce
children 17f0290b2327
line wrap: on
line diff
--- a/documentViewer.py	Fri Aug 05 19:04:20 2011 +0200
+++ b/documentViewer.py	Tue Aug 09 20:27:41 2011 +0200
@@ -582,7 +582,7 @@
         docinfo['pageFlow'] = texttool.get('page-flow', 'ltr')
             
         # 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)
         docinfo['titlePage'] = texttool.get('title-scan-no', 0)
@@ -695,11 +695,10 @@
         pageinfo['cols'] = cols
         grpsize = cols * rows
         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)))
         # int(current / grpsize) * grpsize +1))
         pageinfo['start'] = start
-        pageinfo['end'] = start + grpsize
         pn = self.REQUEST.get('pn','1')
         pageinfo['pn'] = pn
         np = int(docinfo.get('numPages', 0))
@@ -710,39 +709,74 @@
                 pageinfo['textPage'] = self.getTextPage(mode=viewType, pn=pn, docinfo=docinfo, pageinfo=pageinfo)
                 np = int(docinfo.get('numPages', 0))
                 
-        pageinfo['end'] = min(pageinfo['end'], np)
         pageinfo['numgroups'] = int(np / grpsize)
         if np % grpsize > 0:
             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['query'] = self.REQUEST.get('query','') 
         pageinfo['queryType'] = self.REQUEST.get('queryType','')
         pageinfo['querySearch'] =self.REQUEST.get('querySearch', 'fulltext')
         pageinfo['highlightQuery'] = self.REQUEST.get('highlightQuery','')
-        pageinfo['tocPageSize'] = self.REQUEST.get('tocPageSize', '30')
-        pageinfo['queryPageSize'] =self.REQUEST.get('queryPageSize', '10')
-        pageinfo['tocPN'] = self.REQUEST.get('tocPN', '1')
-        # WTF?:
-        toc = int(pageinfo['tocPN'])
-        pageinfo['textPages'] = int(toc)
+        pageinfo['tocPageSize'] = getInt(self.REQUEST.get('tocPageSize', 30))
+        pageinfo['queryPageSize'] = getInt(self.REQUEST.get('queryPageSize', 10))
+        pageinfo['tocPN'] = getInt(self.REQUEST.get('tocPN', '1'))
+        pageinfo['searchPN'] = getInt(self.REQUEST.get('searchPN','1'))
         
-        # What does this do?
+        # limit tocPN
         if 'tocSize_%s'%tocMode in docinfo:
-            tocSize = int(docinfo['tocSize_%s'%tocMode])
-            tocPageSize = int(pageinfo['tocPageSize'])
+            tocSize = docinfo['tocSize_%s'%tocMode]
+            tocPageSize = pageinfo['tocPageSize']
             # cached toc           
             if tocSize%tocPageSize>0:
                 tocPages=tocSize/tocPageSize+1
             else:
                 tocPages=tocSize/tocPageSize
                 
-            pageinfo['tocPN'] = min(tocPages,toc)
+            pageinfo['tocPN'] = min(tocPages,pageinfo['tocPN'])
             
-        pageinfo['searchPN'] =self.REQUEST.get('searchPN','1')
         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')    
     changeDocumentViewerForm = PageTemplateFile('zpt/changeDocumentViewer', globals())