--- documentViewer/documentViewer.py 2008/06/25 10:47:58 1.32 +++ documentViewer/documentViewer.py 2008/11/04 20:36:50 1.36 @@ -139,7 +139,7 @@ class documentViewer(Folder): return pt(docinfo=docinfo,pageinfo=pageinfo,viewMode=viewMode) security.declareProtected('View','index_html') - def index_html(self,mode,url,viewMode="auto",start=None,pn=1): + def index_html(self,mode,url,viewMode="auto",start=None,pn=1,mk=None): ''' view it @param mode: defines how to access the document behind url @@ -167,9 +167,14 @@ class documentViewer(Folder): else: viewMode="images" - return pt(docinfo=docinfo,pageinfo=pageinfo,viewMode=viewMode) - + return pt(docinfo=docinfo,pageinfo=pageinfo,viewMode=viewMode,marks=self.generateMarks(mk)) + def generateMarks(self,mk): + ret="" + for m in mk: + ret+="mk=%s"%mk + return ret + def getLink(self,param=None,val=None): """link to documentviewer with parameter param set to val""" params=self.REQUEST.form.copy() @@ -240,12 +245,14 @@ class documentViewer(Folder): return False - def getDirinfoFromDigilib(self,path,docinfo=None): + def getDirinfoFromDigilib(self,path,docinfo=None,cut=0): """gibt param von dlInfo aus""" num_retries = 3 if docinfo is None: docinfo = {} - + + for x in range(cut): + path=getParentDir(path) infoUrl=self.digilibBaseUrl+"/dirInfo-xml.jsp?mo=dir&fn="+path logger("documentViewer (getparamfromdigilib)", logging.INFO, "dirInfo from %s"%(infoUrl)) @@ -332,7 +339,7 @@ class documentViewer(Folder): return dom - def getAuthinfoFromIndexMeta(self,path,docinfo=None,dom=None): + def getAuthinfoFromIndexMeta(self,path,docinfo=None,dom=None,cut=0): """gets authorization info from the index.meta file at path or given by dom""" logger("documentViewer (getauthinfofromindexmeta)", logging.INFO,"path: %s"%(path)) @@ -342,7 +349,9 @@ class documentViewer(Folder): docinfo = {} if dom is None: - dom = self.getIndexMeta(getParentDir(path)) + for x in range(cut+1): + path=getParentDir(path) + dom = self.getIndexMeta(path) acctype = dom.xpath("//access-conditions/access/@type") if acctype and (len(acctype)>0): @@ -354,7 +363,7 @@ class documentViewer(Folder): return docinfo - def getBibinfoFromIndexMeta(self,path,docinfo=None,dom=None): + def getBibinfoFromIndexMeta(self,path,docinfo=None,dom=None,cut=0): """gets bibliographical info from the index.meta file at path or given by dom""" logging.debug("documentViewer (getbibinfofromindexmeta) path: %s"%(path)) @@ -362,7 +371,9 @@ class documentViewer(Folder): docinfo = {} if dom is None: - dom = self.getIndexMeta(getParentDir(path)) + for x in range(cut+1): + path=getParentDir(path) + dom = self.getIndexMeta(path) # put in all raw bib fields as dict "bib" bib = dom.xpath("//bib/*") @@ -508,19 +519,19 @@ class documentViewer(Folder): pass return docinfo - def getDocinfoFromImagePath(self,path,docinfo=None): + def getDocinfoFromImagePath(self,path,docinfo=None,cut=0): """path ist the path to the images it assumes that the index.meta file is one level higher.""" logger("documentViewer (getdocinfofromimagepath)", logging.INFO,"path: %s"%(path)) if docinfo is None: docinfo = {} path=path.replace("/mpiwg/online","") docinfo['imagePath'] = path - docinfo=self.getDirinfoFromDigilib(path,docinfo=docinfo) + docinfo=self.getDirinfoFromDigilib(path,docinfo=docinfo,cut=cut) imageUrl=self.digilibBaseUrl+"/servlet/Scaler?fn="+path docinfo['imageURL'] = imageUrl - docinfo = self.getBibinfoFromIndexMeta(path,docinfo=docinfo) - docinfo = self.getAuthinfoFromIndexMeta(path,docinfo=docinfo) + docinfo = self.getBibinfoFromIndexMeta(path,docinfo=docinfo,cut=cut) + docinfo = self.getAuthinfoFromIndexMeta(path,docinfo=docinfo,cut=cut) return docinfo @@ -540,6 +551,8 @@ class documentViewer(Folder): docinfo = self.getDocinfoFromTextTool(url, docinfo=docinfo) elif mode=="imagepath": docinfo = self.getDocinfoFromImagePath(url, docinfo=docinfo) + elif mode=="filepath": + docinfo = self.getDocinfoFromImagePath(url, docinfo=docinfo,cut=2) else: logger("documentViewer (getdocinfo)", logging.ERROR,"unknown mode!") raise ValueError("Unknown mode %s"%(mode))