--- ECHO_content/ECHO_collection.py 2004/07/30 16:46:04 1.153 +++ ECHO_content/ECHO_collection.py 2004/08/04 18:36:24 1.156 @@ -14,6 +14,7 @@ import re import os import OFS.Image from types import * +from OFS.Cache import Cacheable from OFS.Image import Image from Globals import DTMLFile from OFS.Folder import Folder @@ -271,7 +272,7 @@ class BrowserCheck: -def writeMetadata(url,metadict,project=None,startpage=None,xslt=None,thumbtemplate=None,topbar=None,digiLibTemplate=None,xmlfrag=None): +def writeMetadata(url,metadict,project=None,startpage=None,xslt=None,thumbtemplate=None,topbar=None,digiLibTemplate=None,xmlfrag=None,digiliburlprefix=None): """Einlesen der Metadaten und und erstellen des geaenderten XML file""" def updateTextToolNode(tag,value): #print dom,tag,value @@ -369,6 +370,8 @@ def writeMetadata(url,metadict,project=N updateTextToolNode('xslt',xslt) + if digiliburlprefix: + updateTextToolNode('digiliburlprefix',digiliburlprefix) return dom.toxml().encode('utf-8') @@ -810,6 +813,7 @@ class ECHO_resource(Folder,Persistent): path=re.sub('http://foxridge.mpiwg-berlin.mpg.de:8080','',path) # falls foxridge als server path=re.sub('http://foxridge.mpiwg-berlin.mpg.de','',path) # falls foxridge als server path=re.sub('http://foxridge.rz-berlin.mpg.de:8080','',path) # falls foxridge als server + path=re.sub('http://content.mpiwg-berlin.mpg.de','',path) # falls content als server path=re.sub('http://foxridge.rz-berlin.mpg.de','',path) # falls foxridge als server path=re.sub('/index.meta','',path) @@ -843,19 +847,20 @@ class ECHO_resource(Folder,Persistent): return default - def changeViewerTemplateSet(self,project,xslt,thumbtemplate,topbar,digiLibTemplate,RESPONSE=None): + def changeViewerTemplateSet(self,project,xslt,thumbtemplate,topbar,digiLibTemplate,digiliburlprefix,RESPONSE=None): """changeit""" - paramList=['project','startpage','xslt','thumbtemplate','topbar','digiLibTemplate'] + paramList=['project','startpage','xslt','thumbtemplate','topbar','digiLibTemplate','digiliburlprefix'] #writeMetadata(self.metalink,self.metaDataHash,project,None,xslt,thumbtemplate,topbar,digiLibTemplate) - params="project=%s&xslt=%s&thumbtemplate=%s&topbar=%s&digiLibTemplate=%s"%(project,xslt,thumbtemplate,topbar,digiLibTemplate) + params="project=%s&xslt=%s&thumbtemplate=%s&topbar=%s&digiLibTemplate=%s&digiliburlprefix=%s"%(project,xslt,thumbtemplate,topbar,digiLibTemplate,digiliburlprefix) urllib.urlopen('http://echo.mpiwg-berlin.mpg.de/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/newMetaXML'+urllib.quote('?'+params))).read() + #print self.absolute_url()+'/newMetaXML'+urllib.quote'?'+params) # hack Pfad auf die Dokumente path=self.metalink @@ -872,7 +877,7 @@ class ECHO_resource(Folder,Persistent): path=re.sub('http://foxridge.rz-berlin.mpg.de:8080','',path) # falls foxridge als server path=re.sub('http://foxridge.rz-berlin.mpg.de','',path) # falls foxridge als server - + path=re.sub('http://content.mpiwg-berlin.mpg.de','',path) # falls content als server return urllib.urlopen("http://nausikaa2.rz-berlin.mpg.de:86/cgi-bin/toc/admin/reg.cgi?path=%s"%path).readlines() if RESPONSE is not None: @@ -1179,7 +1184,7 @@ class ECHO_resource(Folder,Persistent): def getMDValue(self,fieldName): return self.metaDataHash.get(fieldName,'!!NOT USED HERE in Type: %s'%self.contentType) - def newMetaXML(self,project=None,startpage=None,xslt=None,thumbtemplate=None,topbar=None,digiLibTemplate=None): + def newMetaXML(self,project=None,startpage=None,xslt=None,thumbtemplate=None,topbar=None,digiLibTemplate=None,digiliburlprefix=None): """new index.meta""" self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml') @@ -1187,9 +1192,9 @@ class ECHO_resource(Folder,Persistent): self.copyIndex_meta2echo_resource() try: - return writeMetadata(self.metalink,self.OSAS_meta,project,startpage,xslt,thumbtemplate,topbar,digiLibTemplate) + return writeMetadata(self.metalink,self.OSAS_meta,project,startpage,xslt,thumbtemplate,topbar,digiLibTemplate,digiliburlprefix=digiliburlprefix) except: - return writeMetadata(self.metalink,self.metaDataHash,project,startpage,xslt,thumbtemplate,topbar,digiLibTemplate) + return writeMetadata(self.metalink,self.metaDataHash,project,startpage,xslt,thumbtemplate,topbar,digiLibTemplate,digiliburlprefix=digiliburlprefix) def showMetaDataXML(self,project=None,startpage=None,xslt=None,thumbtemplate=None,topbar=None,digiLibTemplate=None): """schreibe md""" @@ -1229,7 +1234,7 @@ class ECHO_resource(Folder,Persistent): {'label':'Change Coords','action':'ECHO_resource_config_coords'}, {'label':'Add coords','action':'ECHO_graphicEntry'}, {'label':'Sync Metadata','action':'ECHO_getResourceMD'}, - {'label':'Change TemplateSets','action':'changeViewerTemplateSetForm'}, + {'label':'Change TemplateSets and Image Viewer','action':'changeViewerTemplateSetForm'}, {'label':'set/change startpage','action':'setStartPageForm'}, {'label':'Copy MD for indexing and search','action':'copySearchFields'}, ) @@ -1663,7 +1668,7 @@ def manage_addECHO_link(self,id,title,la RESPONSE.redirect('manage_main') -class ECHO_collection(Folder, Persistent, Implicit): +class ECHO_collection(Folder, Persistent, Implicit, Cacheable): """ECHO Collection""" security=ClassSecurityInfo() @@ -1843,14 +1848,14 @@ class ECHO_collection(Folder, Persistent else: return None - def changeViewerTemplateSets(self,project,xslt,thumbtemplate,topbar,digiLibTemplate,RESPONSE=None): + def changeViewerTemplateSets(self,project,xslt,thumbtemplate,topbar,digiLibTemplate,digiliburlprefix,RESPONSE=None): """change the templates""" resources=self.ZopeFind(self,obj_metatypes=['ECHO_resource'],search_sub=1) for resource in resources: - resource[1].changeViewerTemplateSet(project,xslt,thumbtemplate,topbar,digiLibTemplate) + resource[1].changeViewerTemplateSet(project,xslt,thumbtemplate,topbar,digiLibTemplate,digiliburlprefix) if RESPONSE is not None: RESPONSE.redirect('manage_main') @@ -2196,7 +2201,7 @@ class ECHO_collection(Folder, Persistent self.bgcolour=bgcolour - manage_options = Folder.manage_options+( + manage_options = Folder.manage_options+ Cacheable.manage_options+( {'label':'Main Config','action':'ECHO_collection_config'}, {'label':'Change Labels','action':'changeLabels'}, {'label':'Change Titles','action':'changeTitles'}, @@ -2204,7 +2209,7 @@ class ECHO_collection(Folder, Persistent {'label':'Graphics','action':'ECHO_graphicEntry'}, {'label':'create resources from XML','action':'createRessourcesFromXMLForm'}, {'label':'Set Startpage','action':'setStartpageFolderForm'}, - {'label':'Change Viewer Templates','action':'changeViewerTemplateSetsForm'}, + {'label':'Change Viewer Templates and Image Viewer','action':'changeViewerTemplateSetsForm'}, {'label':'Reload Metadata','action':'reloadMetaDataFromStorageWarning'}, {'label':'ImportCollection','action':'updateCollection'}, {'label':'Copy MD for indexing and search','action':'copySearchFields'}, @@ -2306,20 +2311,29 @@ class ECHO_collection(Folder, Persistent def index_html(self): """standard page""" - + if self.ZCacheable_isCachingEnabled(): + + result = self.ZCacheable_get() + if result is not None: + # Got a cached value. + return result + if 'index.html' in self.__dict__.keys(): - return getattr(self,'index.html')() + ret=getattr(self,'index.html')() elif 'overview' in self.__dict__.keys(): - return self.showOverview() + ret=self.showOverview() elif hasattr(self,'collection_index_template'): - return self.collection_index_template() + ret=self.collection_index_template() elif hasattr(self,'main_index_template'): - return self.main_index_template() - - pt=PageTemplateFile('Products/ECHO_content/zpt/ECHO_main_index_template_standard.zpt').__of__(self) - pt.content_type="text/html" - return pt() + ret=self.main_index_template() + else: + pt=PageTemplateFile('Products/ECHO_content/zpt/ECHO_main_index_template_standard.zpt').__of__(self) + pt.content_type="text/html" + ret=pt.render() + + self.ZCacheable_set(ret) + return ret def content_html(self): """template fuer content"""