--- documentViewer/MpdlXmlTextServer.py 2011/08/12 14:41:39 1.238.2.13 +++ documentViewer/MpdlXmlTextServer.py 2011/08/16 16:27:08 1.238.2.14 @@ -479,7 +479,7 @@ class MpdlXmlTextServer(SimpleItem): 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 @@ class MpdlXmlTextServer(SimpleItem): 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 @@ class MpdlXmlTextServer(SimpleItem): 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):