version 1.175.2.19, 2011/08/05 09:24:42
|
version 1.175.2.23, 2011/08/10 19:18:03
|
Line 176 class documentViewer(Folder):
|
Line 176 class documentViewer(Folder):
|
except Exception, e: |
except Exception, e: |
logging.error("Unable to find MetaDataFolder 'metadata': "+str(e)) |
logging.error("Unable to find MetaDataFolder 'metadata': "+str(e)) |
|
|
|
if digilibBaseUrl is not None: |
|
self.digilibBaseUrl = digilibBaseUrl |
|
|
|
|
# proxy text server methods to fulltextclient |
# proxy text server methods to fulltextclient |
def getTextPage(self, **args): |
def getTextPage(self, **args): |
Line 276 class documentViewer(Folder):
|
Line 279 class documentViewer(Folder):
|
@param tocMode: type of 'table of contents' for navigation (thumbs, text, figures, none) |
@param tocMode: type of 'table of contents' for navigation (thumbs, text, figures, none) |
""" |
""" |
|
|
logging.debug("documentViewer (index) mode: %s url:%s start:%s pn:%s"%(mode,url,start,pn)) |
logging.debug("documentViewer(index_html) mode=%s url=%s viewMode=%s viewType=%s start=%s pn=%s"%(mode,url,viewMode,viewType,start,pn)) |
|
|
if not hasattr(self, 'template'): |
if not hasattr(self, 'template'): |
# this won't work |
# this won't work |
Line 300 class documentViewer(Folder):
|
Line 303 class documentViewer(Folder):
|
else: |
else: |
viewMode = "images" |
viewMode = "images" |
|
|
|
elif viewMode == "text_dict": |
|
# legacy fix |
|
viewMode = "text" |
|
viewType = "dict" |
|
|
|
# stringify viewType |
|
if isinstance(viewType, list): |
|
viewType = ','.join([t for t in viewType if t]) |
|
|
pageinfo = self.getPageinfo(start=start, current=pn, docinfo=docinfo, viewMode=viewMode, viewType=viewType, tocMode=tocMode) |
pageinfo = self.getPageinfo(start=start, current=pn, docinfo=docinfo, viewMode=viewMode, viewType=viewType, tocMode=tocMode) |
|
|
# get template /template/viewer_main |
# get template /template/viewer_$viewMode |
pt = getattr(self.template, 'viewer_main') |
pt = getattr(self.template, 'viewer_%s'%viewMode, None) |
|
if pt is None: |
|
logging.error("No template for viewMode=%s!"%viewMode) |
|
# TODO: error page? |
|
return "No template for viewMode=%s!"%viewMode |
|
|
# and execute with parameters |
# and execute with parameters |
return pt(docinfo=docinfo, pageinfo=pageinfo) |
return pt(docinfo=docinfo, pageinfo=pageinfo) |
|
|
Line 374 class documentViewer(Folder):
|
Line 391 class documentViewer(Folder):
|
"""returns URL to documentviewer with parameter param set to val or from dict params""" |
"""returns URL to documentviewer with parameter param set to val or from dict params""" |
urlParams = self.getParams(param=param, val=val, params=params) |
urlParams = self.getParams(param=param, val=val, params=params) |
# quote values and assemble into query string (not escaping '/') |
# quote values and assemble into query string (not escaping '/') |
ps = paramSep.join(["%s=%s"%(k,urllib.quote_plus(v,'/')) for (k, v) in urlParams.items()]) |
ps = paramSep.join(["%s=%s"%(k,urllib.quote_plus(unicode(v),'/')) for (k, v) in urlParams.items()]) |
if baseUrl is None: |
if baseUrl is None: |
baseUrl = self.getDocumentViewerURL() |
baseUrl = self.getDocumentViewerURL() |
|
|
Line 433 class documentViewer(Folder):
|
Line 450 class documentViewer(Folder):
|
docinfo = {'mode': mode, 'url': url} |
docinfo = {'mode': mode, 'url': url} |
# add self url |
# add self url |
docinfo['viewerUrl'] = self.getDocumentViewerURL() |
docinfo['viewerUrl'] = self.getDocumentViewerURL() |
|
docinfo['digilibBaseUrl'] = self.digilibBaseUrl |
# get index.meta DOM |
# get index.meta DOM |
docUrl = None |
docUrl = None |
metaDom = None |
metaDom = None |
Line 501 class documentViewer(Folder):
|
Line 519 class documentViewer(Folder):
|
|
|
# image path |
# image path |
if mode != 'texttool': |
if mode != 'texttool': |
# override image path from texttool |
# override image path from texttool with url |
docinfo['imagePath'] = url.replace('/mpiwg/online/', '', 1) |
docinfo['imagePath'] = url.replace('/mpiwg/online/', '', 1) |
|
|
|
|
|
|
# number of images from digilib |
# number of images from digilib |
if docinfo.get('imagePath', None): |
if docinfo.get('imagePath', None): |
docinfo['imageURL'] = self.digilibBaseUrl + "/servlet/Scaler?fn=" + docinfo['imagePath'] |
docinfo['imageURL'] = self.digilibBaseUrl + "/servlet/Scaler?fn=" + docinfo['imagePath'] |
Line 568 class documentViewer(Folder):
|
Line 588 class documentViewer(Folder):
|
docinfo['pageFlow'] = texttool.get('page-flow', 'ltr') |
docinfo['pageFlow'] = texttool.get('page-flow', 'ltr') |
|
|
# odd pages are left |
# 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) |
# number of title page (0: not defined) |
docinfo['titlePage'] = texttool.get('title-scan-no', 0) |
docinfo['titlePage'] = texttool.get('title-scan-no', 0) |
Line 681 class documentViewer(Folder):
|
Line 701 class documentViewer(Folder):
|
pageinfo['cols'] = cols |
pageinfo['cols'] = cols |
grpsize = cols * rows |
grpsize = cols * rows |
pageinfo['groupsize'] = grpsize |
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))) |
start = getInt(start, default=(math.ceil(float(current)/float(grpsize))*grpsize-(grpsize-1))) |
# int(current / grpsize) * grpsize +1)) |
# int(current / grpsize) * grpsize +1)) |
pageinfo['start'] = start |
pageinfo['start'] = start |
pageinfo['end'] = start + grpsize |
|
pn = self.REQUEST.get('pn','1') |
pn = self.REQUEST.get('pn','1') |
pageinfo['pn'] = pn |
pageinfo['pn'] = pn |
np = int(docinfo.get('numPages', 0)) |
np = int(docinfo.get('numPages', 0)) |
Line 696 class documentViewer(Folder):
|
Line 715 class documentViewer(Folder):
|
pageinfo['textPage'] = self.getTextPage(mode=viewType, pn=pn, docinfo=docinfo, pageinfo=pageinfo) |
pageinfo['textPage'] = self.getTextPage(mode=viewType, pn=pn, docinfo=docinfo, pageinfo=pageinfo) |
np = int(docinfo.get('numPages', 0)) |
np = int(docinfo.get('numPages', 0)) |
|
|
pageinfo['end'] = min(pageinfo['end'], np) |
|
pageinfo['numgroups'] = int(np / grpsize) |
pageinfo['numgroups'] = int(np / grpsize) |
if np % grpsize > 0: |
if np % grpsize > 0: |
pageinfo['numgroups'] += 1 |
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['characterNormalization'] = self.REQUEST.get('characterNormalization','reg') |
pageinfo['query'] = self.REQUEST.get('query','') |
pageinfo['query'] = self.REQUEST.get('query','') |
pageinfo['queryType'] = self.REQUEST.get('queryType','') |
pageinfo['queryType'] = self.REQUEST.get('queryType','') |
pageinfo['querySearch'] =self.REQUEST.get('querySearch', 'fulltext') |
pageinfo['querySearch'] =self.REQUEST.get('querySearch', 'fulltext') |
pageinfo['highlightQuery'] = self.REQUEST.get('highlightQuery','') |
pageinfo['highlightQuery'] = self.REQUEST.get('highlightQuery','') |
pageinfo['tocPageSize'] = self.REQUEST.get('tocPageSize', '30') |
pageinfo['tocPageSize'] = getInt(self.REQUEST.get('tocPageSize', 30)) |
pageinfo['queryPageSize'] =self.REQUEST.get('queryPageSize', '10') |
pageinfo['queryPageSize'] = getInt(self.REQUEST.get('queryPageSize', 10)) |
pageinfo['tocPN'] = self.REQUEST.get('tocPN', '1') |
pageinfo['tocPN'] = getInt(self.REQUEST.get('tocPN', '1')) |
# WTF?: |
pageinfo['searchPN'] = getInt(self.REQUEST.get('searchPN','1')) |
toc = int(pageinfo['tocPN']) |
|
pageinfo['textPages'] = int(toc) |
|
|
|
# What does this do? |
# limit tocPN |
if 'tocSize_%s'%tocMode in docinfo: |
if 'tocSize_%s'%tocMode in docinfo: |
tocSize = int(docinfo['tocSize_%s'%tocMode]) |
tocSize = docinfo['tocSize_%s'%tocMode] |
tocPageSize = int(pageinfo['tocPageSize']) |
tocPageSize = pageinfo['tocPageSize'] |
# cached toc |
# cached toc |
if tocSize%tocPageSize>0: |
if tocSize%tocPageSize>0: |
tocPages=tocSize/tocPageSize+1 |
tocPages=tocSize/tocPageSize+1 |
else: |
else: |
tocPages=tocSize/tocPageSize |
tocPages=tocSize/tocPageSize |
|
|
pageinfo['tocPN'] = min(tocPages,toc) |
pageinfo['tocPN'] = min(tocPages,pageinfo['tocPN']) |
|
|
pageinfo['searchPN'] =self.REQUEST.get('searchPN','1') |
|
return pageinfo |
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') |
security.declareProtected('View management screens','changeDocumentViewerForm') |
changeDocumentViewerForm = PageTemplateFile('zpt/changeDocumentViewer', globals()) |
changeDocumentViewerForm = PageTemplateFile('zpt/changeDocumentViewer', globals()) |
|
|