--- ECHO_content/ECHO_collection.py 2004/10/19 18:44:26 1.180 +++ ECHO_content/ECHO_collection.py 2004/11/10 16:32:11 1.188 @@ -29,7 +29,7 @@ from Products.PageTemplates.PageTemplate from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate from Globals import Persistent, package_home from Acquisition import Implicit -from ECHO_helpers import displayTypes +from ECHO_helpers import * import urllib import smtplib import time @@ -263,20 +263,8 @@ def content_html(self,type): pt.content_type="text/html" 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): nodelist=nodename.childNodes @@ -311,6 +299,7 @@ class BrowserCheck: """check the browsers request to find out the browser type""" def __init__(self, zope): + """initialisiere""" 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.isIE = string.find(self.ua, 'MSIE') > -1 @@ -323,9 +312,47 @@ class BrowserCheck: self.isIEWin = self.isIE and self.isWin 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') + 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""" @@ -1013,19 +1040,73 @@ class ECHO_resource(Folder,Persistent): pt.content_type="text/html" 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(""" + + %s + + yes + """%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): """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" + elif ("__firstPage" in startpage): # checke ob generic in der liste + startpage=self.createImageUrl() + + if (not startpage): startpage=self.absolute_url()+"/startpage_html" - - if (not startpage) or (startpage=="__generic"): - 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 - + 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() @@ -1033,13 +1114,14 @@ class ECHO_resource(Folder,Persistent): path=re.sub(self.REQUEST['SERVER_URL'],'',path) path=re.sub('http://'+self.REQUEST['HTTP_HOST'],'',path) - + 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('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('/index.meta','',path) @@ -1055,6 +1137,7 @@ class ECHO_resource(Folder,Persistent): return pt() + def getTextToolsField(self,name,default=''): """Lese Textoolsfelder aus index.meta im path aus""" @@ -1145,23 +1228,24 @@ class ECHO_resource(Folder,Persistent): """getFullTextXML; gives the FullText as an XML Document, and if somthing goes wrong.""" try: - zLOG.LOG("ECHO Fulltext",zLOG.INFO,"open %s"%self.metalink) + #zLOG.LOG("ECHO Fulltext",zLOG.INFO,"open %s"%self.metalink) fh=ECHO_helpers.urlopen(self.metalink) - zLOG.LOG("ECHO Fulltext",zLOG.INFO,"opened %s"%self.metalink) + #zLOG.LOG("ECHO Fulltext",zLOG.INFO,"opened %s"%self.metalink) dom=xml.dom.minidom.parse(fh) texttools=dom.getElementsByTagName('texttool') text=texttools[0].getElementsByTagName('text') texturl=getText(text[0].childNodes) - zLOG.LOG("ECHO Fulltext",zLOG.INFO,"found %s"%texturl) + #zLOG.LOG("ECHO Fulltext",zLOG.INFO,"found %s"%texturl) fh.close() - zLOG.LOG("ECHO Fulltext",zLOG.INFO,"closed fh") - + #zLOG.LOG("ECHO Fulltext",zLOG.INFO,"closed fh") + #keine url if not (texturl.split(":")[0] in ['http','ftp','file']): - texturl=re.sub("//","/",texturl) - #hack has to be corrected - texturl="http://echo.mpiwg-berlin.mpg.de"+texturl - #return texturl+"::"+texturl.split(":")[0] + if not noredirect: + return file(texturl).read() + else: + return texturl + if not noredirect: self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml') zLOG.LOG("ECHO Fulltext",zLOG.INFO,"redirect to:%s"%texturl) @@ -2180,8 +2264,28 @@ class ECHO_collection(Folder, Persistent if RESPONSE is not None: 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): """copys import metadatafields to the object""" resources=self.ZopeFind(self,obj_metatypes=['ECHO_resource']) @@ -3038,6 +3142,23 @@ class ECHO_root(Folder,Persistent,Implic #return "http://enlil.museum.upenn.edu/cgi-bin/cdlget.plx?item=%s&project=ncdl" ###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'): """sendform""" toaddrs=["dwinter@mpiwg-berlin.mpg.de"] @@ -3536,9 +3657,9 @@ class ECHO_root(Folder,Persistent,Implic if self.checkRef(ref): 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: - 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') @@ -4179,3 +4300,4 @@ def manage_addECHO_institution(self, id, except: url=REQUEST['URL1'] REQUEST.RESPONSE.redirect('%s/manage_main' % url) return id +