--- documentViewer/documentViewer.py 2011/08/09 18:27:41 1.175.2.22 +++ documentViewer/documentViewer.py 2011/08/12 14:41:39 1.175.2.24 @@ -176,6 +176,9 @@ class documentViewer(Folder): except Exception, e: logging.error("Unable to find MetaDataFolder 'metadata': "+str(e)) + if digilibBaseUrl is not None: + self.digilibBaseUrl = digilibBaseUrl + # proxy text server methods to fulltextclient def getTextPage(self, **args): @@ -206,9 +209,9 @@ class documentViewer(Folder): """get all gis places """ return self.template.fulltextclient.getAllGisPlaces(**args) - def getTranslate(self, **args): + def getWordInfo(self, **args): """get translate""" - return self.template.fulltextclient.getTranslate(**args) + return self.template.fulltextclient.getWordInfo(**args) def getLemma(self, **args): """get lemma""" @@ -307,6 +310,7 @@ class documentViewer(Folder): # stringify viewType if isinstance(viewType, list): + logging.debug("index_html: viewType is list:%s"%viewType) viewType = ','.join([t for t in viewType if t]) pageinfo = self.getPageinfo(start=start, current=pn, docinfo=docinfo, viewMode=viewMode, viewType=viewType, tocMode=tocMode) @@ -355,7 +359,7 @@ class documentViewer(Folder): else: return style - def getParams(self, param=None, val=None, params=None): + def getParams(self, param=None, val=None, params=None, duplicates=None): """returns dict with URL parameters. Takes URL parameters and additionally param=val or dict params. @@ -372,8 +376,7 @@ class documentViewer(Folder): # change more params if params is not None: - for k in params.keys(): - v = params[k] + for (k, v) in params.items(): if v is None: # val=None removes param if newParams.has_key(k): @@ -381,12 +384,23 @@ class documentViewer(Folder): else: newParams[k] = v - + + if duplicates: + # eliminate lists (coming from duplicate keys) + for (k,v) in newParams.items(): + if isinstance(v, list): + if duplicates == 'comma': + # make comma-separated list of non-empty entries + newParams[k] = ','.join([t for t in v if t]) + elif duplicates == 'first': + # take first non-empty entry + newParams[k] = [t for t in v if t][0] + return newParams - def getLink(self, param=None, val=None, params=None, baseUrl=None, paramSep='&'): + def getLink(self, param=None, val=None, params=None, baseUrl=None, paramSep='&', duplicates='comma'): """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, duplicates=duplicates) # quote values and assemble into query string (not escaping '/') ps = paramSep.join(["%s=%s"%(k,urllib.quote_plus(unicode(v),'/')) for (k, v) in urlParams.items()]) if baseUrl is None: @@ -395,9 +409,9 @@ class documentViewer(Folder): url = "%s?%s"%(baseUrl, ps) return url - def getLinkAmp(self, param=None, val=None, params=None, baseUrl=None): + def getLinkAmp(self, param=None, val=None, params=None, baseUrl=None, duplicates='comma'): """link to documentviewer with parameter param set to val""" - return self.getLink(param, val, params, baseUrl, '&') + return self.getLink(param=param, val=val, params=params, baseUrl=baseUrl, paramSep='&', duplicates=duplicates) def getInfo_xml(self,url,mode): @@ -447,6 +461,7 @@ class documentViewer(Folder): docinfo = {'mode': mode, 'url': url} # add self url docinfo['viewerUrl'] = self.getDocumentViewerURL() + docinfo['digilibBaseUrl'] = self.digilibBaseUrl # get index.meta DOM docUrl = None metaDom = None @@ -515,9 +530,11 @@ class documentViewer(Folder): # image path if mode != 'texttool': - # override image path from texttool + # override image path from texttool with url docinfo['imagePath'] = url.replace('/mpiwg/online/', '', 1) + + # number of images from digilib if docinfo.get('imagePath', None): docinfo['imageURL'] = self.digilibBaseUrl + "/servlet/Scaler?fn=" + docinfo['imagePath'] @@ -680,8 +697,9 @@ class documentViewer(Folder): return docinfo - def getPageinfo(self, current, start=None, rows=None, cols=None, docinfo=None, viewMode=None, viewType=None, tocMode=None): + def getPageinfo(self, current=None, start=None, rows=None, cols=None, docinfo=None, viewMode=None, viewType=None, tocMode=None): """returns pageinfo with the given parameters""" + logging.debug("getPageInfo(current=%s, start=%s, rows=%s, cols=%s, viewMode=%s, viewType=%s, tocMode=%s)"%(current,start,rows,cols,viewMode,viewType,tocMode)) pageinfo = {} pageinfo['viewMode'] = viewMode pageinfo['viewType'] = viewType