--- ECHO_content/ECHO_collection.py 2004/07/21 16:36:18 1.150
+++ ECHO_content/ECHO_collection.py 2004/08/05 12:53:58 1.158
@@ -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
@@ -30,6 +31,7 @@ from Globals import Persistent, package_
from Acquisition import Implicit
from ECHO_helpers import displayTypes
import urllib
+import time
try:
from psycopg import libpq
@@ -46,6 +48,49 @@ import xml.dom.minidom
from ECHO_graphicalOverview import javaHandler,javaScriptMain
import ECHO_helpers
+def ECHO_rerenderLinksMD(self,obj=None,types=['title','label']):
+ """Rerender all Links"""
+ ret=""
+
+ if not obj:
+ obj = self
+
+ entries=obj.ZopeFind(obj,obj_metatypes=['ECHO_resource'],search_sub=1)
+
+ for entry in entries:
+ if entry[1].meta_type == 'ECHO_resource':
+ try:
+ entry[1].ECHO_getResourceMD(template="no")
+ if "title" in types:
+ entry[1].generate_title()
+ if "label" in types:
+ entry[1].generate_label()
+ ret+="OK:"+entry[0]+"-- "+entry[1].getTitle().decode('utf-8')+"-- "+entry[1].getTitle().decode('utf-8')+"
"
+ except:
+ ret+="Error:"+entry[0]+"
"
+
+
+
+
+ return "
"+ret+"Rerenderd all links to resources in: "+self.title+""
+
+def reloadMetaDataFromStorage(self,RESPONSE=None):
+ """copy metadata from the storage to ECHO"""
+ ret=""
+ resources=self.ZopeFind(self,obj_metatypes=['ECHO_resource'],search_sub=1)
+
+ for resource in resources:
+ x=str(resource[1].copyIndex_meta2echo_resource())+"
"
+ ret+=x
+ #print x
+
+
+ if RESPONSE is not None:
+ #RESPONSE.redirect('./manage_main')
+ return ""+ret+""
+
+ return ret
+
def getRDFDescription(self,linkURL,urn=None,nameDef=None,typeName=None):
"""rdf"""
@@ -227,8 +272,9 @@ 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"""
+ print "url",url
def updateTextToolNode(tag,value):
#print dom,tag,value
metanode=dom.getElementsByTagName('texttool')[0]
@@ -325,6 +371,8 @@ def writeMetadata(url,metadict,project=N
updateTextToolNode('xslt',xslt)
+ if digiliburlprefix:
+ updateTextToolNode('digiliburlprefix',digiliburlprefix)
return dom.toxml().encode('utf-8')
@@ -766,6 +814,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)
@@ -799,19 +848,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
@@ -828,7 +878,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:
@@ -921,14 +971,19 @@ class ECHO_resource(Folder,Persistent):
return "ERROR"
ret=[]
- for copyright in obj.getCopyrights():
+ for copyright in obj.getCopyrights(): #copyright - media / partner / copyrightID
- link="copyrightTypes/"+copyright[2]+'/copyright.html'
try:
- copyrightTypeObj=getattr(self.copyrightTypes,copyright[2])
+ if hasattr(self.copyrightTypes,copyright[2]):
+ copyrightTypeObj=getattr(self.copyrightTypes,copyright[2])
+ link="copyrightTypes/"+copyright[2]+'/copyright.html'
+ else:
+ copyrightTypeObj=getattr(obj,copyright[2])
+ link="copyrightModel/"+copyright[2]+'/copyright.html'
+
label=copyrightTypeObj.label
- url=copyrightTypeObj.url
+ url=getattr(copyrightTypeObj, 'url', '')
if url!='':
ret.append((url,copyright[0],copyright[1],copyright[2],label))
@@ -941,6 +996,17 @@ class ECHO_resource(Folder,Persistent):
"""nothing"""
return ret
+
+ def getInstitutionsHTML(self):
+ """gibt Liste der frdernden Institutionen aus"""
+
+ if hasattr(self,'support'):
+ obj=self.support
+ ret=obj.getSupporter()
+ return ret
+ else:
+ return ''
+
def getCredits(self):
"""Ausgabe der credits"""
@@ -1130,7 +1196,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')
@@ -1138,9 +1204,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"""
@@ -1180,7 +1246,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'},
)
@@ -1360,7 +1426,7 @@ class ECHO_resource(Folder,Persistent):
self.metaDataHash={}
if not error=="": #Fehler beim Auslesen des Metafiles
- return "ERROR:",error
+ return "ERROR:",error,self.absolute_url()
self.contentType=metadict['bib_type'][0:]
fields=self.findTagsFromMapping(self.contentType)
@@ -1614,7 +1680,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()
@@ -1794,19 +1860,41 @@ 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'])
+ resources=self.ZopeFind(self,obj_metatypes=['ECHO_resource'],search_sub=1)
+
+ for resource in resources:
+
+ resource[1].changeViewerTemplateSet(project,xslt,thumbtemplate,topbar,digiLibTemplate,digiliburlprefix)
+
+ if RESPONSE is not None:
+ RESPONSE.redirect('manage_main')
+
+
+ def setStartpageFolderForm(self):
+ """Form for changing the startpage"""
+
+
+ pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_resourceStartPageFolder.zpt').__of__(self)
+ pt.content_type="text/html"
+ return pt()
+
+ def setStartpageFolder(self,startpage=None,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].setStartPage(startpage)
if RESPONSE is not None:
RESPONSE.redirect('manage_main')
+
def copySearchFields(self,RESPONSE=None):
"""copys import metadatafields to the object"""
resources=self.ZopeFind(self,obj_metatypes=['ECHO_resource'])
@@ -1817,21 +1905,19 @@ class ECHO_collection(Folder, Persistent
if RESPONSE is not None:
RESPONSE.redirect('manage_main')
+
+ def reloadMetaDataFromStorageWarning(self,RESPONSE=None):
+ """warning"""
+ pt=PageTemplateFile('Products/ECHO_content/zpt/reloadMetaDataFromStorageWarning.zpt').__of__(self)
+ pt.content_type="text/html"
+ return pt()
def reloadMetaDataFromStorage(self,RESPONSE=None):
"""copy metadata from the storage to ECHO"""
- ret=""
- resources=self.ZopeFind(self,obj_metatypes=['ECHO_resource'])
-
- for resource in resources:
- ret+=str(resource[1].copyIndex_meta2echo_resource())+"
"
+ return reloadMetaDataFromStorage(self,RESPONSE=None)
-
- if RESPONSE is not None:
- # RESPONSE.redirect('manage_main')
- return ret
-
+
def getPartnerCopyright(self,name,sonst="generic"):
"""gibt generisches copyright eines partners aus, sonst behalte jetzige einsteillung"""
#print "hi",name,sonst
@@ -2079,34 +2165,20 @@ class ECHO_collection(Folder, Persistent
security.declarePublic('ECHO_rerenderLinksMD')
- def ECHO_rerenderLinksMD(self,obj=None,types=['title','label']):
- """Rerender all Links"""
- ret=""
-
- if not obj:
- obj = self
-
- entries=obj.ZopeFind(obj,obj_metatypes=['ECHO_resource','ECHO_collection'])
- for entry in entries:
- if entry[1].meta_type == 'ECHO_resource':
- try:
- entry[1].ECHO_getResourceMD(template="no")
- if "title" in types:
- entry[1].generate_title()
- if "label" in types:
- entry[1].generate_label()
- ret+="OK:"+entry[0]+"-- "+entry[1].getTitle().decode('utf-8')+"-- "+entry[1].getTitle().decode('utf-8')+"
"
- except:
- ret+="Error:"+entry[0]+"
"
+ def ECHO_rerenderLinksMDWarning(self):
+ """change form"""
+ pt=PageTemplateFile('Products/ECHO_content/zpt/rerenderLinksWarning').__of__(self)
+ pt.content_type="text/html"
+ return pt()
- else:
- self.ECHO_rerenderLinksMD(entry[1])
-
-
- return ret+"Rerenderd all links to resources in: "+self.title
+
+ def ECHO_rerenderLinksMD(self,obj=None,types=['title','label']):
+ """Rerender all Links"""
+ return ECHO_rerenderLinksMD(self,obj,types)
+
security.declarePublic('ECHO_newViewerLink')
@@ -2141,15 +2213,16 @@ 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'},
- {'label':'Rerender Labels and Titles','action':'ECHO_rerenderLinksMD'},
+ {'label':'Rerender Labels and Titles','action':'ECHO_rerenderLinksMDWarning'},
{'label':'Graphics','action':'ECHO_graphicEntry'},
{'label':'create resources from XML','action':'createRessourcesFromXMLForm'},
- {'label':'Change Viewer Templates','action':'changeViewerTemplateSetsForm'},
- {'label':'Reload Metadata','action':'reloadMetaDataFromStorage'},
+ {'label':'Set Startpage','action':'setStartpageFolderForm'},
+ {'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'},
)
@@ -2250,20 +2323,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"""
@@ -2355,7 +2437,7 @@ class ECHO_group(ECHO_collection):
manage_options = Folder.manage_options+(
{'label':'Main Config','action':'ECHO_group_config'},
- {'label':'Rerender Links','action':'ECHO_rerenderLinksMD'},
+ {'label':'Rerender Links','action':'ECHO_rerenderLinksMDWarning'},
{'label':'Graphics','action':'ECHO_graphicEntry'},
)
@@ -2607,6 +2689,13 @@ class ECHO_root(Folder,Persistent,Implic
security=ClassSecurityInfo()
meta_type="ECHO_root"
+
+
+ manage_options=Folder.manage_options+(
+ {'label':'Main Config','action':'ECHO_copyright_configForm'},
+ {'label':'Reload Metadata','action':'reloadMetaDataFromStorageWarning'},
+ )
+
def showRDF(self):
"""showrdf"""
@@ -2617,6 +2706,18 @@ class ECHO_root(Folder,Persistent,Implic
ret+=""""""
return ret
+
+ def reloadMetaDataFromStorageWarning(self,RESPONSE=None):
+ """warning"""
+ pt=PageTemplateFile('Products/ECHO_content/zpt/reloadMetaDataFromStorageWarning.zpt').__of__(self)
+ pt.content_type="text/html"
+ return pt()
+
+ def reloadMetaDataFromStorage(self,RESPONSE=None):
+ """reload MD from Storage"""
+
+ return reloadMetaDataFromStorage(self,RESPONSE)
+
def getRDF(self,urn=None):
"""rdf of the collection"""
@@ -2737,7 +2838,7 @@ class ECHO_root(Folder,Persistent,Implic
return retStr
- def copyrightTypeSelector_HTML(self,selected=None,first=None):
+ def copyrightTypeSelector_HTML(self, object=None, selected=None,first=None):
"""give type selector"""
if not first:
@@ -2758,8 +2859,16 @@ class ECHO_root(Folder,Persistent,Implic
retStr+="""