--- ECHO_content/ECHO_collection.py 2004/05/10 08:44:19 1.73
+++ ECHO_content/ECHO_collection.py 2004/05/18 22:30:09 1.87
@@ -19,14 +19,18 @@ from Globals import DTMLFile
from OFS.Folder import Folder
from OFS.SimpleItem import SimpleItem
from AccessControl import ClassSecurityInfo
+from AccessControl.User import UserFolder
from Globals import InitializeClass
from Globals import DTMLFile
+import Globals
from Products.PageTemplates.PageTemplateFile import PageTemplateFile
from Products.PageTemplates.PageTemplate import PageTemplate
from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate
from Globals import Persistent, package_home
from Acquisition import Implicit
from ECHO_helpers import displayTypes
+
+
try:
from psycopg import libpq
except:
@@ -112,7 +116,7 @@ def sendFile(self, filename, type):
break
if object:
# if the object exists then send it
- object()
+ return object.index_html(self.REQUEST.REQUEST, self.REQUEST.RESPONSE)
else:
# send a local file with the given content-type
fn = os.path.join(package_home(globals()), filename)
@@ -120,9 +124,25 @@ def sendFile(self, filename, type):
self.REQUEST.RESPONSE.write(file(fn).read())
return
+class BrowserCheck:
+ """check the browsers request to find out the browser type"""
+
+ def __init__(self, zope):
+ 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
+ self.nav = self.ua[string.find(self.ua, '('):]
+ ie = string.split(self.nav, "; ")[1]
+ if string.find(ie, "MSIE") > -1:
+ self.versIE = string.split(ie, " ")[1]
+ self.isMac = string.find(self.ua, 'Macintosh') > -1
+ self.isWin = string.find(self.ua, 'Windows') > -1
+ self.isIEWin = self.isIE and self.isWin
+ self.isIEMac = self.isIE and self.isMac
+
def writeMetadata(url,metadict):
- """Einlesen der Metadaten und und erstellen des geänderten XML file"""
+ """Einlesen der Metadaten und und erstellen des geaenderten XML file"""
try:
geturl=""
@@ -170,7 +190,7 @@ def writeMetadata(url,metadict):
metanode.appendChild(metanodeneu)
- return dom.toxml().encode('utf-8')
+ return dom.topxml().encode('utf-8')
def readMetadata(url):
"""Methode zum Auslesen der Metadateninformation zu einer Resource
@@ -385,7 +405,22 @@ class ECHO_resource(Folder):
return self.viewClassification
else:
return ""
-
+
+ def getFullTextXML(self,noredirect=None):
+ """getFullTextXML"""
+ try:
+ fh=urllib.urlopen(self.metalink)
+ dom=xml.dom.minidom.parse(fh)
+ texttools=dom.getElementsByTagName('texttool')
+ text=texttools[0].getElementsByTagName('text')
+ texturl=getText(text[0].childNodes)
+ if not noredirect:
+ self.REQUEST.RESPONSE.redirect(texturl)
+ else:
+ return texturl
+ except:
+ return None
+
def getCredits(self):
"""Ausgabe der credits"""
if self.credits:
@@ -515,7 +550,10 @@ class ECHO_resource(Folder):
def changeECHO_resource_coords(self,coords,viewClassification,RESPONSE=None):
"""Änderung der Properties - coords"""
- try:
+ if type(coords)==StringType:
+ coords=[coords]
+
+ try:
coordsnew=[ string.split(x,",") for x in coords]
except:
coordsnew=[]
@@ -539,7 +577,7 @@ class ECHO_resource(Folder):
def changeECHO_resource_metadata(self,RESPONSE=None):
"""change metadata"""
tags=self.findTagsFromMapping(self.contentType)
- OSAS_meta={}
+ self.OSAS_meta={}
for field in tags[1]:
try:
self.metaDataHash[self.getFieldTag(tags,field)]=self.REQUEST.form[self.getFieldTag(tags,field)]
@@ -547,13 +585,14 @@ class ECHO_resource(Folder):
except:
"""nothing"""
- return urllib.urlopen('http://localhost:8080/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.absolute_url()+'/newMetaXML',self.metalink)).read()
+ return urllib.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')).read()
if RESPONSE is not None:
RESPONSE.redirect('manage_main')
def newMetaXML(self):
+ """new index.meta"""
self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml')
return writeMetadata(self.metalink,self.OSAS_meta)
@@ -670,9 +709,15 @@ class ECHO_resource(Folder):
for referenceTypeF in self.referencetypes:
#print referenceTypeF[1].title,referenceType
- if referenceTypeF[1].title == referenceType:
+ if referenceTypeF[1].title.lower() == referenceType.lower():
#print "OK"
- bibdata[referenceTypeF[1].title]=referenceTypeF[1].fields
+ try:
+ bibdata[referenceTypeF[1].title]=referenceTypeF[1].fields
+ referenceType=referenceTypeF[1].title
+ except:
+ bibdata[referenceType]=referenceTypeF[1].fields
+
+
bibdata['data']=referenceTypeF[1]
self.fields=bibdata[referenceType]
for field in fieldlist:
@@ -691,8 +736,12 @@ class ECHO_resource(Folder):
for referenceTypeF in self.referencetypes:
- if referenceTypeF[1].title == referenceType:
- bibdata[referenceTypeF[1].title]=referenceTypeF[1].fields
+ if referenceTypeF[1].title.lower() == referenceType.lower():
+ try:
+ bibdata[referenceTypeF[1].title]=referenceTypeF[1].fields
+ referenceType=referenceTypeF[1].title
+ except:
+ bibdata[referenceType]=referenceTypeF[1].fields
bibdata['data']=referenceTypeF[1]
self.fields=bibdata[referenceType]
for field in fieldlist:
@@ -713,7 +762,7 @@ class ECHO_resource(Folder):
return "ERROR:",error
- if not (metadict['bib_type']==self.contentType):
+ if not (metadict['bib_type'].lower()==self.contentType.lower()):
self.REQUEST.SESSION['contentStorage']=metadict['bib_type']
self.REQUEST.SESSION['contentZope']=self.contentType
@@ -867,8 +916,11 @@ class ECHO_link(ECHO_externalLink):
def content_html(self):
- """template fuer content"""
- return content_html(self,'link')
+ """template fuer link"""
+ if hasattr(self,"link_template"):
+ return content_html(self,'link')
+ else:
+ return content_html(self,'collection')
def manage_addECHO_linkForm(self):
"""Form for external Links"""
@@ -889,6 +941,7 @@ def manage_addECHO_link(self,id,title,la
class ECHO_collection(Folder, Persistent, Implicit):
"""ECHO Collection"""
+
security=ClassSecurityInfo()
meta_type='ECHO_collection'
viewClassificationList=viewClassificationListMaster
@@ -908,10 +961,13 @@ class ECHO_collection(Folder, Persistent
"""title"""
return self.label.encode('utf-8')
+
+
def createRessourcesFromXMLForm(self):
"""form"""
pt=PageTemplateFile('Products/ECHO_content/zpt/createRessourcesFromXMLForm.zpt').__of__(self)
return pt()
+
def createRessourcesFromXML(self,fileupload):
"""read an XML file for generating resources"""
dom=xml.dom.minidom.parse(fileupload)
@@ -989,14 +1045,90 @@ class ECHO_collection(Folder, Persistent
return ret
def createJSAreas(self):
- """CreateJava"""
+ """new version of createJavaScript"""
dynamical="\n"
for ob in self.getGraphicCoords():
- if ob[5] == "area":
+ if ob[5] == "area":
dynamical+="""addArea('%s', 'overview', %s, 'area');\n"""%(ob[1],ob[0])
else:
dynamical+="""addArea('%s', 'overview', %s, 'arrow');\n"""%(ob[1],ob[0])
return dynamical
+
+ def createMapHead(self):
+ """generate divs"""
+ pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/ECHO_content_map_frag_js')).__of__(self)
+ return pt()
+
+ def createMapImg(self):
+ """generate img-tag for map"""
+ bt = BrowserCheck(self)
+ tag = ""
+ src = self.REQUEST['URL1'] + "/overview"
+ if bt.isN4:
+ tag += '