|
|
| version 1.175.2.8, 2011/07/26 18:09:26 | version 1.175.2.10, 2011/07/28 13:00:07 |
|---|---|
| Line 102 def getParentDir(path): | Line 102 def getParentDir(path): |
| """returns pathname shortened by one""" | """returns pathname shortened by one""" |
| return '/'.join(path.split('/')[0:-1]) | return '/'.join(path.split('/')[0:-1]) |
| def normalizeBibField(bt, underscore=True): | |
| """returns normalised bib type for looking up mappings""" | |
| bt = bt.strip().replace(' ', '-').lower() | |
| if underscore: | |
| bt = bt.replace('_', '-') | |
| return bt | |
| def getBibdataFromDom(dom): | |
| """returns dict with all elements from bib-tag""" | |
| bibinfo = {} | |
| bib = dom.find(".//meta/bib") | |
| if bib is not None: | |
| # put type in @type | |
| type = bib.get('type') | |
| bibinfo['@type'] = normalizeBibField(type) | |
| # put all subelements in dict | |
| for e in bib: | |
| bibinfo[normalizeBibField(e.tag)] = getText(e) | |
| return bibinfo | |
| ## | ## |
| ## documentViewer class | ## documentViewer class |
| Line 137 class documentViewer(Folder): | Line 115 class documentViewer(Folder): |
| {'label':'main config','action':'changeDocumentViewerForm'}, | {'label':'main config','action':'changeDocumentViewerForm'}, |
| ) | ) |
| metadataService = None | |
| """MetaDataFolder instance""" | |
| # templates and forms | # templates and forms |
| viewer_main = PageTemplateFile('zpt/viewer_main', globals()) | viewer_main = PageTemplateFile('zpt/viewer_main', globals()) |
| toc_thumbs = PageTemplateFile('zpt/toc_thumbs', globals()) | toc_thumbs = PageTemplateFile('zpt/toc_thumbs', globals()) |
| Line 155 class documentViewer(Folder): | Line 136 class documentViewer(Folder): |
| thumbs_main_rss = PageTemplateFile('zpt/thumbs_main_rss', globals()) | thumbs_main_rss = PageTemplateFile('zpt/thumbs_main_rss', globals()) |
| security.declareProtected('View management screens','changeDocumentViewerForm') | |
| changeDocumentViewerForm = PageTemplateFile('zpt/changeDocumentViewer', globals()) | |
| def __init__(self,id,imageScalerUrl=None,textServerName=None,title="",digilibBaseUrl=None,thumbcols=2,thumbrows=5,authgroups="mpiwg"): | def __init__(self,id,imageScalerUrl=None,textServerName=None,title="",digilibBaseUrl=None,thumbcols=2,thumbrows=5,authgroups="mpiwg"): |
| Line 179 class documentViewer(Folder): | Line 158 class documentViewer(Folder): |
| templateFolder._setObject('fulltextclient',textServer) | templateFolder._setObject('fulltextclient',textServer) |
| except Exception, e: | except Exception, e: |
| logging.error("Unable to create MpdlXmlTextServer for fulltextclient: "+str(e)) | logging.error("Unable to create MpdlXmlTextServer for fulltextclient: "+str(e)) |
| try: | try: |
| from Products.zogiLib.zogiLib import zogiLib | from Products.zogiLib.zogiLib import zogiLib |
| zogilib = zogiLib(id="zogilib", title="zogilib for docuviewer", dlServerURL=imageScalerUrl, layout="book") | zogilib = zogiLib(id="zogilib", title="zogilib for docuviewer", dlServerURL=imageScalerUrl, layout="book") |
| Line 187 class documentViewer(Folder): | Line 167 class documentViewer(Folder): |
| except Exception, e: | except Exception, e: |
| logging.error("Unable to create zogiLib for zogilib: "+str(e)) | logging.error("Unable to create zogiLib for zogilib: "+str(e)) |
| try: | |
| # assume MetaDataFolder instance is called metadata | |
| self.metadataService = getattr(self, 'metadata') | |
| except Exception, e: | |
| logging.error("Unable to find MetaDataFolder 'metadata': "+str(e)) | |
| # proxy text server methods to fulltextclient | # proxy text server methods to fulltextclient |
| def getTextPage(self, **args): | def getTextPage(self, **args): |
| Line 581 class documentViewer(Folder): | Line 567 class documentViewer(Folder): |
| docinfo['indexMetaPath']=self.getIndexMetaPath(path); | docinfo['indexMetaPath']=self.getIndexMetaPath(path); |
| logging.debug("documentViewer (getbibinfofromindexmeta cutted) path: %s"%(path)) | logging.debug("documentViewer (getbibinfofromindexmeta cutted) path: %s"%(path)) |
| if self.metadataService is not None: | |
| # put all raw bib fields in dict "bib" | # put all raw bib fields in dict "bib" |
| bib = getBibdataFromDom(dom) | bib = self.metadataService.getBibData(dom=dom) |
| docinfo['bib'] = bib | docinfo['bib'] = bib |
| bibtype = bib.get('@type', None) | bibtype = bib.get('@type', None) |
| docinfo['bib_type'] = bibtype | docinfo['bib_type'] = bibtype |
| if bibtype: | # also store DC metadata for convenience |
| # also store standard mapped metadata for convenience | dc = self.metadataService.getDCMappedData(bib) |
| try: | docinfo['creator'] = dc.get('creator',None) |
| stdbib = self.metadata.getStdMappedHash(bib) | docinfo['title'] = dc.get('title',None) |
| docinfo['std_bib'] = stdbib | docinfo['date'] = dc.get('date',None) |
| docinfo['author'] = stdbib['author'] | else: |
| docinfo['title'] = stdbib['title'] | logging.error("MetadataService not found!") |
| docinfo['year'] = stdbib['year'] | |
| except: | |
| pass | |
| return docinfo | return docinfo |
| Line 615 class documentViewer(Folder): | Line 598 class documentViewer(Folder): |
| logging.debug("documentViewer docinfo[name] %s"%docinfo['name']) | logging.debug("documentViewer docinfo[name] %s"%docinfo['name']) |
| return docinfo | return docinfo |
| def getDocinfoFromTextTool(self, url, dom=None, docinfo=None): | def getDocinfoFromTextTool(self, url, dom=None, docinfo=None): |
| """parse texttool tag in index meta""" | """parse texttool tag in index meta""" |
| logging.debug("documentViewer (getdocinfofromtexttool) url: %s" % (url)) | logging.debug("documentViewer (getdocinfofromtexttool) url: %s" % (url)) |
| Line 625 class documentViewer(Folder): | Line 609 class documentViewer(Folder): |
| if dom is None: | if dom is None: |
| dom = self.getDomFromIndexMeta(url) | dom = self.getDomFromIndexMeta(url) |
| texttool = self.metadata.getTexttoolData(dom=dom) | |
| archivePath = None | archivePath = None |
| archiveName = None | archiveName = None |
| Line 649 class documentViewer(Folder): | Line 635 class documentViewer(Folder): |
| # we balk without archive-path | # we balk without archive-path |
| raise IOError("Missing archive-path (for text-tool) in %s" % (url)) | raise IOError("Missing archive-path (for text-tool) in %s" % (url)) |
| imageDir = getText(dom.find(".//texttool/image")) | imageDir = texttool.get('image', None) |
| if not imageDir: | if not imageDir: |
| # we balk with no image tag / not necessary anymore because textmode is now standard | # we balk with no image tag / not necessary anymore because textmode is now standard |
| Line 668 class documentViewer(Folder): | Line 654 class documentViewer(Folder): |
| docinfo['imageURL'] = self.digilibBaseUrl + "/servlet/Scaler?fn=" + imageDir | docinfo['imageURL'] = self.digilibBaseUrl + "/servlet/Scaler?fn=" + imageDir |
| viewerUrl = getText(dom.find(".//texttool/digiliburlprefix")) | viewerUrl = texttool.get('digiliburlprefix', None) |
| if viewerUrl: | if viewerUrl: |
| docinfo['viewerURL'] = viewerUrl | docinfo['viewerURL'] = viewerUrl |
| # old style text URL | # old style text URL |
| textUrl = getText(dom.find(".//texttool/text")) | textUrl = texttool.get('text', None) |
| if textUrl: | if textUrl: |
| if urlparse.urlparse(textUrl)[0] == "": #keine url | if urlparse.urlparse(textUrl)[0] == "": #keine url |
| textUrl = os.path.join(archivePath, textUrl) | textUrl = os.path.join(archivePath, textUrl) |
| Line 684 class documentViewer(Folder): | Line 670 class documentViewer(Folder): |
| docinfo['textURL'] = textUrl | docinfo['textURL'] = textUrl |
| # new style text-url-path | # new style text-url-path |
| textUrl = getText(dom.find(".//texttool/text-url-path")) | textUrl = texttool.get('text-url-path', None) |
| if textUrl: | if textUrl: |
| docinfo['textURLPath'] = textUrl | docinfo['textURLPath'] = textUrl |
| textUrlkurz = string.split(textUrl, ".")[0] | textUrlkurz = string.split(textUrl, ".")[0] |
| Line 693 class documentViewer(Folder): | Line 679 class documentViewer(Folder): |
| # text-only, no page images | # text-only, no page images |
| #docinfo = self.getNumTextPages(docinfo) | #docinfo = self.getNumTextPages(docinfo) |
| # get bib info | |
| presentationUrl = getText(dom.find(".//texttool/presentation")) | |
| docinfo = self.getBibinfoFromIndexMeta(url, docinfo=docinfo, dom=dom) # get info von bib tag | docinfo = self.getBibinfoFromIndexMeta(url, docinfo=docinfo, dom=dom) # get info von bib tag |
| # TODO: is this needed here? | # TODO: is this needed here? |
| docinfo = self.getNameFromIndexMeta(url, docinfo=docinfo, dom=dom) | docinfo = self.getNameFromIndexMeta(url, docinfo=docinfo, dom=dom) |
| # TODO: what to do with presentation? | |
| presentationUrl = texttool.get('presentation', None) | |
| if presentationUrl: # ueberschreibe diese durch presentation informationen | if presentationUrl: # ueberschreibe diese durch presentation informationen |
| # presentation url ergiebt sich ersetzen von index.meta in der url der fuer die Metadaten | # presentation url ergiebt sich ersetzen von index.meta in der url der fuer die Metadaten |
| # durch den relativen Pfad auf die presentation infos | # durch den relativen Pfad auf die presentation infos |
| Line 711 class documentViewer(Folder): | Line 697 class documentViewer(Folder): |
| docinfo = self.getBibinfoFromTextToolPresentation(presentationUrl, docinfo=docinfo, dom=dom) | docinfo = self.getBibinfoFromTextToolPresentation(presentationUrl, docinfo=docinfo, dom=dom) |
| # get authorization | |
| docinfo = self.getAuthinfoFromIndexMeta(url, docinfo=docinfo, dom=dom) # get access info | docinfo = self.getAuthinfoFromIndexMeta(url, docinfo=docinfo, dom=dom) # get access info |
| return docinfo | return docinfo |
| Line 839 class documentViewer(Folder): | Line 826 class documentViewer(Folder): |
| return pageinfo | return pageinfo |
| security.declareProtected('View management screens','changeDocumentViewerForm') | |
| changeDocumentViewerForm = PageTemplateFile('zpt/changeDocumentViewer', globals()) | |
| def changeDocumentViewer(self,title="",digilibBaseUrl=None,thumbrows=2,thumbcols=5,authgroups='mpiwg',RESPONSE=None): | def changeDocumentViewer(self,title="",digilibBaseUrl=None,thumbrows=2,thumbcols=5,authgroups='mpiwg',RESPONSE=None): |
| """init document viewer""" | """init document viewer""" |
| self.title=title | self.title=title |
| Line 846 class documentViewer(Folder): | Line 836 class documentViewer(Folder): |
| self.thumbrows = thumbrows | self.thumbrows = thumbrows |
| self.thumbcols = thumbcols | self.thumbcols = thumbcols |
| self.authgroups = [s.strip().lower() for s in authgroups.split(',')] | self.authgroups = [s.strip().lower() for s in authgroups.split(',')] |
| try: | |
| # assume MetaDataFolder instance is called metadata | |
| self.metadataService = getattr(self, 'metadata') | |
| except Exception, e: | |
| logging.error("Unable to find MetaDataFolder 'metadata': "+str(e)) | |
| if RESPONSE is not None: | if RESPONSE is not None: |
| RESPONSE.redirect('manage_main') | RESPONSE.redirect('manage_main') |