version 1.177, 2004/10/13 14:55:15
|
version 1.188, 2004/11/10 16:32:11
|
Line 29 from Products.PageTemplates.PageTemplate
|
Line 29 from Products.PageTemplates.PageTemplate
|
from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate |
from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate |
from Globals import Persistent, package_home |
from Globals import Persistent, package_home |
from Acquisition import Implicit |
from Acquisition import Implicit |
from ECHO_helpers import displayTypes |
from ECHO_helpers import * |
import urllib |
import urllib |
import smtplib |
import smtplib |
import time |
import time |
Line 39 from Ft.Xml import EMPTY_NAMESPACE
|
Line 39 from Ft.Xml import EMPTY_NAMESPACE
|
|
|
import Ft.Xml.XPath |
import Ft.Xml.XPath |
import cStringIO |
import cStringIO |
|
import zLOG |
|
|
try: |
try: |
from psycopg import libpq |
from psycopg import libpq |
Line 262 def content_html(self,type):
|
Line 263 def content_html(self,type):
|
pt.content_type="text/html" |
pt.content_type="text/html" |
return pt() |
return pt() |
|
|
def toList(field): |
|
"""Einzelfeld in Liste umwandeln""" |
|
if type(field)==StringType: |
|
return [field] |
|
else: |
|
return field |
|
|
|
def getText(nodelist): |
|
|
|
rc = "" |
|
for node in nodelist: |
|
if node.nodeType == node.TEXT_NODE: |
|
rc = rc + node.data |
|
return rc |
|
|
|
def getTextFromNode(nodename): |
def getTextFromNode(nodename): |
nodelist=nodename.childNodes |
nodelist=nodename.childNodes |
Line 310 class BrowserCheck:
|
Line 299 class BrowserCheck:
|
"""check the browsers request to find out the browser type""" |
"""check the browsers request to find out the browser type""" |
|
|
def __init__(self, zope): |
def __init__(self, zope): |
|
"""initialisiere""" |
self.ua = zope.REQUEST.get_header("HTTP_USER_AGENT") |
self.ua = zope.REQUEST.get_header("HTTP_USER_AGENT") |
self.isN4 = (string.find(self.ua, 'Mozilla/4.') > -1) and (string.find(self.ua, 'MSIE') < 0) |
self.isN4 = (string.find(self.ua, 'Mozilla/4.') > -1) and (string.find(self.ua, 'MSIE') < 0) |
self.isIE = string.find(self.ua, 'MSIE') > -1 |
self.isIE = string.find(self.ua, 'MSIE') > -1 |
Line 322 class BrowserCheck:
|
Line 312 class BrowserCheck:
|
self.isIEWin = self.isIE and self.isWin |
self.isIEWin = self.isIE and self.isWin |
self.isIEMac = self.isIE and self.isMac |
self.isIEMac = self.isIE and self.isMac |
|
|
|
class Hello(Folder): |
|
"""helloo""" |
|
def __init__(self): |
|
self.test=test |
|
|
|
meta_type="ECHO_copyright" |
|
|
|
|
|
|
|
def __init__(self,id,title,copyrights): |
|
"""init""" |
|
self.title=title |
|
self.id=id |
|
self.copyrights=copyrights[0:] |
|
|
|
def getCopyrights(self): |
|
"""return coyprights""" |
|
return self.copyrights |
|
|
|
manage_options = Folder.manage_options+( |
|
{'label':'Main Config','action':'ECHO_copyright_configForm'}, |
|
) |
|
|
|
|
|
def ECHO_copyright_configForm(self): |
|
"""change form""" |
|
pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_copyright').__of__(self) |
|
pt.content_type="text/html" |
|
return pt() |
|
|
|
def ECHO_copyright_config(self,title,RESPONSE=None): |
|
"""change""" |
|
self.title=title |
|
self.copyrights=[] |
|
self.copyrights=getCopyrightsFromForm(self,self.REQUEST.form)[0:] |
|
|
|
if RESPONSE is not None: |
|
RESPONSE.redirect('manage_main') |
|
|
|
|
|
|
Line 590 class ECHO_layoutTemplate(ZopePageTempla
|
Line 618 class ECHO_layoutTemplate(ZopePageTempla
|
|
|
def manage_addECHO_layoutTemplateForm(self): |
def manage_addECHO_layoutTemplateForm(self): |
"""Form for adding""" |
"""Form for adding""" |
pt=PageTemplateFile('Products/ECHO_content/zpt/AddECHO_layoutTemplate.zpt').__of__(self) |
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt/AddECHO_layoutTemplate.zpt')).__of__(self) |
return pt() |
return pt() |
|
|
from urllib import quote |
from urllib import quote |
Line 1013 class ECHO_resource(Folder,Persistent):
|
Line 1041 class ECHO_resource(Folder,Persistent):
|
return pt() |
return pt() |
|
|
|
|
|
def createImageUrl(self,pn=1): |
|
"""create ImageUrl""" |
|
|
|
|
|
resourcepath=readFieldFromXML(self.metalink,'resource','archive-path') |
|
|
|
digiliburlprefix=readFieldFromXML(self.metalink,'texttool','digiliburlprefix') |
|
images=readFieldFromXML(self.metalink,'texttool','image') |
|
|
|
|
|
if (not resourcepath) or (not digiliburlprefix) or (not images): |
|
zLOG.LOG("ECHO (createImageUrl)",zLOG.ERROR,"Cannot create ImageUrl for %s"%self.absolute_url()) |
|
return None |
|
resourcepath=resourcepath.replace('/mpiwg/online','') |
|
if not digiliburlprefix: digiliburlprefix="http://echo.mpiwg-berlin.mpg.de/zogilib?" |
|
|
|
if (not images) or (not resourcepath): return None |
|
|
|
return "%sfn=%s&pn=%i"%(digiliburlprefix,resourcepath+"/"+images,pn) |
|
|
|
def copyTitleToInfoXML(self,RESPONSE=None): |
|
"""copy title from the resource""" |
|
presentationXML=readFieldFromXML(self.metalink,'texttool','presentation') |
|
resourcepath=readFieldFromXML(self.metalink,'resource','archive-path') |
|
if (not presentationXML) or (not resourcepath): |
|
if RESPONSE: |
|
RESPONSE.write("Error: %s\n"%self.getId()) |
|
else: |
|
return None,self.absolute_url() |
|
|
|
try: |
|
fh=file(os.path.join(resourcepath,presentationXML),'w') |
|
fh.write("""<info> |
|
<author></author> |
|
<title>%s</title> |
|
<date></date> |
|
<display>yes</display> |
|
</info>"""%self.title) |
|
fh.close() |
|
return 1,self.getId() |
|
except: |
|
if RESPONSE: |
|
RESPONSE.write("Error: %s\n"%self.getId()) |
|
else: |
|
return None,self.absolute_url() |
|
|
|
|
def setStartPage(self,startpage=None,RESPONSE=None): |
def setStartPage(self,startpage=None,RESPONSE=None): |
"""set start page, if no startpage defined use the generic one of the resource""" |
"""set start page, if no startpage defined use the generic one of the resource""" |
|
|
if (not (type(startpage)==StringType)) and ("__generic" in startpage): # checke ob generic in der liste |
if (not (type(startpage)==StringType)): |
|
if ("__generic" in startpage): # checke ob generic in der liste |
startpage=self.absolute_url()+"/startpage_html" |
startpage=self.absolute_url()+"/startpage_html" |
|
elif ("__firstPage" in startpage): # checke ob generic in der liste |
|
startpage=self.createImageUrl() |
|
|
if (not startpage) or (startpage=="__generic"): |
if (not startpage): |
startpage=self.absolute_url()+"/startpage_html" |
startpage=self.absolute_url()+"/startpage_html" |
|
elif (startpage=="__generic"): |
|
startpage=self.absolute_url()+"/startpage_html" |
|
elif (startpage=="__firstPage"): |
|
startpage=self.createImageUrl() |
|
|
params="startpage=%s"%startpage |
params="startpage=%s"%startpage |
|
print 'http://xserve02.mpiwg-berlin.mpg.de:18880/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/newMetaXML'+urllib.quote('?'+params)) |
|
|
ECHO_helpers.urlopen('http://xserve02.mpiwg-berlin.mpg.de:18880/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/newMetaXML'+urllib.quote('?'+params))).read() |
ECHO_helpers.urlopen('http://xserve02.mpiwg-berlin.mpg.de:18880/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/newMetaXML'+urllib.quote('?'+params))).read() |
|
|
Line 1038 class ECHO_resource(Folder,Persistent):
|
Line 1120 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:8080','',path) # falls foxridge als server |
path=re.sub('http://content.mpiwg-berlin.mpg.de','',path) # falls content 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('http://foxridge.rz-berlin.mpg.de','',path) # falls foxridge als server |
path=re.sub('http://vision.rz-berlin.mpg.de','',path) # falls vision als server |
path=re.sub('http://vision.mpiwg-berlin.mpg.de','',path) # falls vision als server |
|
path=re.sub('http://xserve02.mpiwg-berlin.mpg.de:18880','',path) # falls vision als server |
path=re.sub('http://echo.mpiwg-berlin.mpg.de','',path) # falls echo |
path=re.sub('http://echo.mpiwg-berlin.mpg.de','',path) # falls echo |
path=re.sub('/index.meta','',path) |
path=re.sub('/index.meta','',path) |
|
|
Line 1054 class ECHO_resource(Folder,Persistent):
|
Line 1137 class ECHO_resource(Folder,Persistent):
|
return pt() |
return pt() |
|
|
|
|
|
|
def getTextToolsField(self,name,default=''): |
def getTextToolsField(self,name,default=''): |
"""Lese Textoolsfelder aus index.meta im path aus""" |
"""Lese Textoolsfelder aus index.meta im path aus""" |
|
|
Line 1142 class ECHO_resource(Folder,Persistent):
|
Line 1226 class ECHO_resource(Folder,Persistent):
|
|
|
def getFullTextXML(self,noredirect=None): |
def getFullTextXML(self,noredirect=None): |
"""getFullTextXML; gives the FullText as an XML Document, and <error></error> if somthing goes wrong.""" |
"""getFullTextXML; gives the FullText as an XML Document, and <error></error> if somthing goes wrong.""" |
|
|
try: |
try: |
|
#zLOG.LOG("ECHO Fulltext",zLOG.INFO,"open %s"%self.metalink) |
fh=ECHO_helpers.urlopen(self.metalink) |
fh=ECHO_helpers.urlopen(self.metalink) |
|
#zLOG.LOG("ECHO Fulltext",zLOG.INFO,"opened %s"%self.metalink) |
dom=xml.dom.minidom.parse(fh) |
dom=xml.dom.minidom.parse(fh) |
texttools=dom.getElementsByTagName('texttool') |
texttools=dom.getElementsByTagName('texttool') |
text=texttools[0].getElementsByTagName('text') |
text=texttools[0].getElementsByTagName('text') |
texturl=getText(text[0].childNodes) |
texturl=getText(text[0].childNodes) |
|
|
|
#zLOG.LOG("ECHO Fulltext",zLOG.INFO,"found %s"%texturl) |
|
fh.close() |
|
#zLOG.LOG("ECHO Fulltext",zLOG.INFO,"closed fh") |
|
#keine url |
if not (texturl.split(":")[0] in ['http','ftp','file']): |
if not (texturl.split(":")[0] in ['http','ftp','file']): |
texturl=re.sub("//","/",texturl) |
if not noredirect: |
#return texturl+"::"+texturl.split(":")[0] |
return file(texturl).read() |
|
else: |
|
return texturl |
|
|
if not noredirect: |
if not noredirect: |
self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml') |
self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml') |
|
zLOG.LOG("ECHO Fulltext",zLOG.INFO,"redirect to:%s"%texturl) |
self.REQUEST.RESPONSE.redirect(texturl) |
self.REQUEST.RESPONSE.redirect(texturl) |
else: |
else: |
return texturl |
return texturl |
Line 1178 class ECHO_resource(Folder,Persistent):
|
Line 1274 class ECHO_resource(Folder,Persistent):
|
archivepath=getText(text[0].childNodes) |
archivepath=getText(text[0].childNodes) |
archivepath=re.sub('/mpiwg/online/','',archivepath) |
archivepath=re.sub('/mpiwg/online/','',archivepath) |
imageurl="http://echo.mpiwg-berlin.mpg.de/zogilib?fn="+archivepath+"/"+imagetemp |
imageurl="http://echo.mpiwg-berlin.mpg.de/zogilib?fn="+archivepath+"/"+imagetemp |
|
fh.close() |
|
|
if not noredirect: |
if not noredirect: |
self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml') |
self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml') |
self.REQUEST.RESPONSE.redirect(imageurl) |
self.REQUEST.RESPONSE.redirect(imageurl) |
Line 2166 class ECHO_collection(Folder, Persistent
|
Line 2264 class ECHO_collection(Folder, Persistent
|
if RESPONSE is not None: |
if RESPONSE is not None: |
RESPONSE.redirect('manage_main') |
RESPONSE.redirect('manage_main') |
|
|
|
def copyTitleToInfoXMLFolder(self,RESPONSE=None): |
|
"""copy title into the title field of info.xml |
|
author and date werden leer!!! |
|
""" |
|
|
|
|
|
resources=self.ZopeFind(self,obj_metatypes=['ECHO_resource'],search_sub=1) |
|
|
|
|
|
for resource in resources: |
|
ret,txt=resource[1].copyTitleToInfoXML() |
|
if (not ret) and RESPONSE: |
|
RESPONSE.write("error: %s\n"%txt) |
|
if ret and RESPONSE: |
|
RESPONSE.write("ok: %s\n"%txt) |
|
|
|
#zLOG.LOG("ECHO (copyTitleToInfoXMLFolder)",zLOG.INFO,txt) |
|
if RESPONSE is not None: |
|
RESPONSE.write("done!\n") |
|
RESPONSE.close() |
|
RESPONSE.redirect('manage_main') |
|
|
def copySearchFields(self,RESPONSE=None): |
def copySearchFields(self,RESPONSE=None): |
"""copys import metadatafields to the object""" |
"""copys import metadatafields to the object""" |
resources=self.ZopeFind(self,obj_metatypes=['ECHO_resource']) |
resources=self.ZopeFind(self,obj_metatypes=['ECHO_resource']) |
Line 3024 class ECHO_root(Folder,Persistent,Implic
|
Line 3142 class ECHO_root(Folder,Persistent,Implic
|
#return "http://enlil.museum.upenn.edu/cgi-bin/cdlget.plx?item=%s&project=ncdl" |
#return "http://enlil.museum.upenn.edu/cgi-bin/cdlget.plx?item=%s&project=ncdl" |
###END CDLI add |
###END CDLI add |
|
|
|
|
|
def checkResource(self,id): |
|
"""checks if a resource is in the tree, gives back none or list of resources""" |
|
if hasattr(self,"_v_checkResource") and self._v_checkResource.has_key(id): #existiert ein cache und id ist bereits drin? |
|
return self._v_checkResource[id] |
|
|
|
else: |
|
resources=self.ZopeFind(self,obj_metatypes=['ECHO_resource'],obj_ids=[id],search_sub=1) |
|
|
|
if not hasattr(self,"_v_checkResource"): self._v_checkResource={}#lege cache an falls nicht existent |
|
if resources: |
|
self._v_checkResource[id]=resources[0:] # slicing to be sure that data is stabil |
|
else: |
|
self._v_checkResource[id]=None |
|
|
|
return self._v_checkResource[id] |
|
|
def sendForm(self,fromaddr,content,server='mail.mpiwg-berlin.mpg.de'): |
def sendForm(self,fromaddr,content,server='mail.mpiwg-berlin.mpg.de'): |
"""sendform""" |
"""sendform""" |
toaddrs=["dwinter@mpiwg-berlin.mpg.de"] |
toaddrs=["dwinter@mpiwg-berlin.mpg.de"] |
Line 3522 class ECHO_root(Folder,Persistent,Implic
|
Line 3657 class ECHO_root(Folder,Persistent,Implic
|
|
|
if self.checkRef(ref): |
if self.checkRef(ref): |
if pn: |
if pn: |
link.setAttribute("href",self.aq_parent.absolute_url()+"/vlp_coll?id="+ref+"&p="+pn) |
link.setAttribute("href",self.aq_parent.absolute_url()+"/references?id="+ref+"&p="+pn) |
else: |
else: |
link.setAttribute("href",self.aq_parent.absolute_url()+"/vlp_coll?id="+ref) |
link.setAttribute("href",self.aq_parent.absolute_url()+"/references?id="+ref) |
|
|
|
|
newxml=dom.toxml('utf-8') |
newxml=dom.toxml('utf-8') |
Line 4165 def manage_addECHO_institution(self, id,
|
Line 4300 def manage_addECHO_institution(self, id,
|
except: url=REQUEST['URL1'] |
except: url=REQUEST['URL1'] |
REQUEST.RESPONSE.redirect('%s/manage_main' % url) |
REQUEST.RESPONSE.redirect('%s/manage_main' % url) |
return id |
return id |
|
|