Changeset 518:91051b36b9cc in documentViewer for MpdlXmlTextServer.py
- Timestamp:
- Mar 12, 2012, 6:01:14 PM (12 years ago)
- Branch:
- default
- File:
-
- 1 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))
Note: See TracChangeset
for help on using the changeset viewer.