--- documentViewer/documentViewer.py 2011/07/14 17:43:56 1.175.2.1 +++ documentViewer/documentViewer.py 2011/07/15 19:34:41 1.175.2.3 @@ -354,21 +354,26 @@ class documentViewer(Folder): if tocMode != "thumbs": # get table of contents docinfo = self.getToc(mode=tocMode, docinfo=docinfo) - - if viewMode=="auto": # automodus gewaehlt - if docinfo.has_key('textURL') or docinfo.get('textURLPath',None): #texturl gesetzt und textViewer konfiguriert + + # auto viewMode: text_dict if text else images + if viewMode=="auto": + if docinfo.get('textURL', None) or docinfo.get('textURLPath', None): + #texturl gesetzt und textViewer konfiguriert viewMode="text_dict" else: viewMode="images" - pageinfo = self.getPageinfo(start=start,current=pn, docinfo=docinfo,viewMode=viewMode,tocMode=tocMode) + pageinfo = self.getPageinfo(start=start, current=pn, docinfo=docinfo, viewMode=viewMode, tocMode=tocMode) - if (docinfo.get('textURLPath',None)): - page = self.getTextPage(mode=viewMode, docinfo=docinfo, pageinfo=pageinfo) + if viewMode != 'images' and docinfo.get('textURLPath', None): + # get full text page + page = self.getTextPage(mode=viewMode, pn=pn, docinfo=docinfo, pageinfo=pageinfo) pageinfo['textPage'] = page - tt = getattr(self, 'template') - pt = getattr(tt, 'viewer_main') - return pt(docinfo=docinfo,pageinfo=pageinfo,viewMode=viewMode,mk=self.generateMarks(mk)) + + # get template /template/viewer_main + pt = getattr(self.template, 'viewer_main') + # and execute with parameters + return pt(docinfo=docinfo, pageinfo=pageinfo, viewMode=viewMode, mk=self.generateMarks(mk)) def generateMarks(self,mk): ret="" @@ -499,8 +504,7 @@ class documentViewer(Folder): docinfo = {} for x in range(cut): - - path=getParentDir(path) + path=getParentDir(path) infoUrl=self.digilibBaseUrl+"/dirInfo-xml.jsp?mo=dir&fn="+path @@ -630,17 +634,17 @@ class documentViewer(Folder): logging.debug("documentViewer (getbibinfofromindexmeta cutted) path: %s"%(path)) # put in all raw bib fields as dict "bib" - bib = dom.find(".//bib/*") + bib = dom.find(".//bib") #bib = dom.xpath("//bib/*") - if bib and len(bib)>0: + if bib is not None: bibinfo = {} for e in bib: - bibinfo[e.localName] = getTextFromNode(e) + bibinfo[e.tag] = getText(e) + docinfo['bib'] = bibinfo # extract some fields (author, title, year) according to their mapping metaData=self.metadata.main.meta.bib - bib = dom.find(".//bib") bibtype=bib.get("type") #bibtype=dom.xpath("//bib/@type") if not bibtype: @@ -711,7 +715,8 @@ class documentViewer(Folder): # docinfo['isbn_issn']='' return docinfo - + + # TODO: is this needed? def getNameFromIndexMeta(self,path,docinfo=None,dom=None,cut=0): """gets name info from the index.meta file at path or given by dom""" if docinfo is None: @@ -739,11 +744,11 @@ class documentViewer(Folder): archivePath = None archiveName = None - archiveName = getTextFromNode(dom.find("name")) + archiveName = getText(dom.find("name")) if not archiveName: logging.warning("documentViewer (getdocinfofromtexttool) resource/name missing in: %s" % (url)) - archivePath = getTextFromNode(dom.find("archive-path")) + archivePath = getText(dom.find("archive-path")) if archivePath: # clean up archive path if archivePath[0] != '/': @@ -807,6 +812,7 @@ class documentViewer(Folder): presentationUrl = getText(dom.find(".//texttool/presentation")) docinfo = self.getBibinfoFromIndexMeta(url, docinfo=docinfo, dom=dom) # get info von bib tag + # TODO: is this needed here? docinfo = self.getNameFromIndexMeta(url, docinfo=docinfo, dom=dom) @@ -830,18 +836,9 @@ class documentViewer(Folder): """gets the bibliographical information from the preseantion entry in texttools """ dom=self.getPresentationInfoXML(url) - try: - docinfo['author']=getText(dom.find(".//author")) - except: - pass - try: - docinfo['title']=getText(dom.find(".//title")) - except: - pass - try: - docinfo['year']=getText(dom.find(".//date")) - except: - pass + docinfo['author']=getText(dom.find(".//author")) + docinfo['title']=getText(dom.find(".//title")) + docinfo['year']=getText(dom.find(".//date")) return docinfo def getDocinfoFromImagePath(self,path,docinfo=None,cut=0): @@ -874,15 +871,21 @@ class documentViewer(Folder): docinfo = self.REQUEST.SESSION['docinfo'] # check if its still current if docinfo is not None and docinfo.get('mode') == mode and docinfo.get('url') == url: - logging.debug("documentViewer (getdocinfo) docinfo in session: %s"%docinfo) + logging.debug("documentViewer (getdocinfo) docinfo in session. keys=%s"%docinfo.keys()) return docinfo + # new docinfo docinfo = {'mode': mode, 'url': url} - if mode=="texttool": #index.meta with texttool information + # add self url + docinfo['viewerUrl'] = self.getDocumentViewerURL() + if mode=="texttool": + # index.meta with texttool information docinfo = self.getDocinfoFromTextTool(url, docinfo=docinfo) elif mode=="imagepath": + # folder with images, index.meta optional docinfo = self.getDocinfoFromImagePath(url, docinfo=docinfo) elif mode=="filepath": + # filename docinfo = self.getDocinfoFromImagePath(url, docinfo=docinfo,cut=1) else: logging.error("documentViewer (getdocinfo) unknown mode: %s!"%mode)