Changeset 518:91051b36b9cc in documentViewer
- Timestamp:
- Mar 12, 2012, 6:01:14 PM (12 years ago)
- Branch:
- default
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
MpdlXmlTextServer.py
r517 r518 74 74 def getTextInfo(self, mode='', docinfo=None): 75 75 """reads document info, including page concordance, from text server""" 76 logging.debug("getDocInfo") 77 #TODO: check cached info 76 logging.debug("getTextInfo mode=%s"%mode) 77 if mode not in ['toc', 'figures', '']: 78 mode = '' 79 # check cached info 80 if mode: 81 # cached toc-request? 82 if 'full_%s'%mode in docinfo: 83 return docinfo 84 85 else: 86 # no toc-request 87 if 'numTextPages' in docinfo: 88 return docinfo 89 78 90 docpath = docinfo.get('textURLPath', None) 79 91 if docpath is None: … … 84 96 pagesize = 10000 85 97 pn = 1 86 # fetch docinfo 98 # fetch docinfo 87 99 pagexml = self.getServerData("doc-info.xql","document=%s&info=%s&pageSize=%s&pn=%s"%(docpath,mode,pagesize,pn)) 88 100 dom = ET.fromstring(pagexml) … … 127 139 if p.tag == 'n': 128 140 n = getInt(p.text) 129 page[' n'] = n141 page['pn'] = n 130 142 elif p.tag == 'no': 131 143 page['no'] = p.text … … 141 153 # toc 142 154 elif name == 'toc': 143 # contains tags with table of contents 144 # TODO: implement 145 pass 155 # contains tags with table of contents/figures 156 # <toc-entry><page>13</page><level>3</level><content>Chapter I</content><level-string>1.</level-string><real-level>1</real-level></toc-entry> 157 tocs = [] 158 for te in tag: 159 toc = {} 160 for t in te: 161 if t.tag == 'page': 162 toc['pn'] = getInt(t.text) 163 elif t.tag == 'level': 164 toc['level'] = t.text 165 elif t.tag == 'content': 166 toc['content'] = t.text 167 elif t.tag == 'level-string': 168 toc['level-string'] = t.text 169 elif t.tag == 'real-level': 170 toc['real-level'] = t.text 171 172 tocs.append(toc) 173 174 # save as full_toc/full_figures 175 docinfo['full_%s'%mode] = tocs 146 176 147 177 return docinfo … … 430 460 431 461 432 def getToc(self, mode="text", docinfo=None): 462 def getToc(self, mode='text', docinfo=None): 463 """returns list of table of contents from docinfo""" 464 logging.debug("getToc mode=%s"%mode) 465 if mode == 'text': 466 queryType = 'toc' 467 else: 468 queryType = mode 469 470 if not 'full_%s'%queryType in docinfo: 471 # get new toc 472 docinfo = self.getTextInfo(queryType, docinfo) 473 474 return docinfo.get('full_%s'%queryType, []) 475 476 def getTocPage(self, mode='text', pn=None, start=None, size=None, pageinfo=None, docinfo=None): 477 """returns single page from the table of contents""" 478 logging.debug("getTocPage mode=%s, pn=%s start=%s size=%s"%(mode,repr(pn),repr(start),repr(size))) 479 fulltoc = self.getToc(mode=mode, docinfo=docinfo) 480 if len(fulltoc) < 1: 481 logging.error("getTocPage: unable to find toc!") 482 return "Error: no table of contents!" 483 484 if size is None: 485 size = pageinfo.get('tocPageSize', 30) 486 487 if start is None: 488 start = (pn - 1) * size 489 490 # paginate 491 first = (start - 1) 492 last = first + size 493 tocs = fulltoc[first:last] 494 tp = '<div>' 495 for toc in tocs: 496 pageurl = self.getLink('pn', toc['pn']) 497 tp += '<div class="tocline">' 498 tp += '<div class="toc name">[%s %s]</div>'%(toc['level-string'], toc['content']) 499 tp += '<div class="toc float right page"><a href="%s">Page: %s</a></div>'%(pageurl, toc['pn']) 500 tp += '</div>\n' 501 502 tp += '</div>' 503 504 return tp 505 506 507 def getToc_old(self, mode="text", docinfo=None): 433 508 """loads table of contents and stores XML in docinfo""" 434 509 logging.debug("getToc mode=%s"%mode) … … 473 548 return docinfo 474 549 475 def getTocPage (self, mode="text", pn=None, start=None, size=None, pageinfo=None, docinfo=None):550 def getTocPage_old(self, mode="text", pn=None, start=None, size=None, pageinfo=None, docinfo=None): 476 551 """returns single page from the table of contents""" 477 552 logging.debug("getTocPage mode=%s, pn=%s"%(mode,pn)) -
documentViewer.py
r516 r518 257 257 self.digilibBaseUrl = self.findDigilibUrl() or "http://digilib.mpiwg-berlin.mpg.de/digitallibrary" 258 258 259 docinfo = self.getDocinfo(mode=mode,url=url) 260 261 if tocMode != "thumbs": 262 # get table of contents 263 self.getToc(mode=tocMode, docinfo=docinfo) 264 259 docinfo = self.getDocinfo(mode=mode,url=url,tocMode=tocMode) 260 265 261 # auto viewMode: text if there is a text else images 266 262 if viewMode=="auto": … … 430 426 431 427 432 def getDocinfo(self, mode, url ):428 def getDocinfo(self, mode, url, tocMode=None): 433 429 """returns docinfo depending on mode""" 434 430 logging.debug("getDocinfo: mode=%s, url=%s"%(mode,url)) … … 484 480 if texttool: 485 481 docinfo = self.getDocinfoFromTexttool(docinfo, texttool) 486 # document info from full text482 # document info (including toc) from full text 487 483 if docinfo.get('textURLPath', None): 488 docinfo = self.getTextInfo( docinfo=docinfo)484 docinfo = self.getTextInfo(mode=tocMode, docinfo=docinfo) 489 485 490 486 # bib info … … 730 726 np = int(docinfo.get('numPages', 0)) 731 727 if np == 0: 732 # numPages unknown - maybe we can get it from text page 733 logging.warn("getPageInfo: numPages=0 trying getTextPage!") 734 if docinfo.get('textURLPath', None): 735 # cache text page as well 736 pageinfo['textPage'] = self.getTextPage(mode=viewLayer, pn=current, docinfo=docinfo, pageinfo=pageinfo) 737 np = int(docinfo.get('numPages', 0)) 738 728 # try numTextPages 729 np = docinfo.get('numTextPages', 0) 730 if np != 0: 731 docinfo['numPages'] = np 732 739 733 # cache table of contents 740 734 pageinfo['tocPageSize'] = getInt(self.REQUEST.get('tocPageSize', 30)) -
version.txt
r516 r518 1 DocumentViewer 2.1 a1 DocumentViewer 2.1.2a -
zpt/toc_figures.zpt
r501 r518 8 8 <!-- block used for main content area --> 9 9 <div class="toc-figures" metal:define-macro="main" 10 tal:define="start pageinfo/start; tocsize docinfo/ tocSize_figures; grpsize pageinfo/tocPageSize;10 tal:define="start pageinfo/start; tocsize docinfo/numFigureEntries; grpsize pageinfo/tocPageSize; 11 11 batch python:here.getBatch(start=start,size=grpsize,end=tocsize);"> 12 12 <ul class="switcher"> -
zpt/toc_text.zpt
r501 r518 8 8 <!-- block used for main content area --> 9 9 <div class="toc-text" metal:define-macro="main" 10 tal:define="start pageinfo/start; tocsize docinfo/ tocSize_text; grpsize pageinfo/tocPageSize;10 tal:define="start pageinfo/start; tocsize docinfo/numTocEntries; grpsize pageinfo/tocPageSize; 11 11 batch python:here.getBatch(start=start,size=grpsize,end=tocsize);"> 12 12 <ul class="switcher">
Note: See TracChangeset
for help on using the changeset viewer.