diff MpdlXmlTextServer.py @ 482:7ca8ac7db06e elementtree

more new template stuff. more batching methods in documentViewer.
author casties
date Tue, 16 Aug 2011 18:27:08 +0200
parents cd37d6f8d5e8
children 29c6d09a506c
line wrap: on
line diff
--- a/MpdlXmlTextServer.py	Tue Aug 16 12:02:00 2011 +0200
+++ b/MpdlXmlTextServer.py	Tue Aug 16 18:27:08 2011 +0200
@@ -479,7 +479,7 @@
 
         return docinfo
     
-    def getTocPage(self, mode="text", pn=0, pageinfo=None, docinfo=None):
+    def getTocPage(self, mode="text", pn=None, start=None, size=None, pageinfo=None, docinfo=None):
         """returns single page from the table of contents"""
         logging.debug("getTocPage mode=%s, pn=%s"%(mode,pn))
         if mode == "text":
@@ -494,20 +494,21 @@
         tocxml = docinfo.get('tocXML_%s'%mode, None)
         if not tocxml:
             logging.error("getTocPage: unable to find tocXML")
-            return "No ToC"
+            return "Error: no table of contents!"
         
-        pagesize = pageinfo['tocPageSize']
-        tocPN = pageinfo['tocPN']
-        if not pn:
-            pn = tocPN
+        if size is None:
+            size = pageinfo.get('tocPageSize', 30)
+            
+        if start is None:
+            start = (pn - 1) * size
 
         fulltoc = ET.fromstring(tocxml)
         
         if fulltoc:
             # paginate
-            start = (pn - 1) * pagesize * 2
-            len = pagesize * 2
-            del fulltoc[:start]
+            first = (start - 1) * 2
+            len = size * 2
+            del fulltoc[:first]
             del fulltoc[len:]
             tocdivs = fulltoc
             
@@ -525,7 +526,17 @@
                     else:
                         logging.warning("getTocPage: Problem with link=%s"%href)
                         
-            return serialize(tocdivs)
+            # fix two-divs-per-row with containing div
+            newtoc = ET.Element('div', {'class':'queryResultPage'})
+            for (d1,d2) in zip(tocdivs[::2],tocdivs[1::2]):
+                e = ET.Element('div',{'class':'tocline'})
+                e.append(d1)
+                e.append(d2)
+                newtoc.append(e)
+                
+            return serialize(newtoc)
+        
+        return "ERROR: no table of contents!"
     
     
     def manage_changeMpdlXmlTextServer(self,title="",serverUrl="http://mpdl-text.mpiwg-berlin.mpg.de/mpdl/interface/",timeout=40,RESPONSE=None):