--- ECHO_content/ECHO_collection.py 2004/05/12 15:41:55 1.83
+++ ECHO_content/ECHO_collection.py 2004/05/27 09:31:25 1.91
@@ -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:
@@ -48,24 +52,34 @@ viewClassificationListMaster=['view poin
def checkDiffs(self,metadict):
"""check differences"""
+
+
+
def NoneToEmpty(obj):
if obj:
return obj
else:
return ""
+
+
diffs={}
+
tags=self.findTagsFromMapping(self.contentType)
+ self.referencetypes=tags[2]
+ self.fields=tags[3]
+
+
for field in tags[1]:
try:
if (NoneToEmpty(self.getFieldValue(self.getFieldTag(tags,field)))==metadict[self.getFieldTag(tags,field)]):
diffs[self.getFieldTag(tags,field)]=1
else:
- print "DIFF",field,self.getFieldValue(self.getFieldTag(tags,field)),metadict[self.getFieldTag(tags,field)]
+
diffs[self.getFieldTag(tags,field)]=0
except:
diffs[self.getFieldTag(tags,field)]=0
- print "EX",field
+
return diffs
def content_html(self,type):
@@ -120,9 +134,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=""
@@ -146,7 +176,7 @@ def writeMetadata(url,metadict):
metanode=metanodes[0]
for metaData in metadict.keys():
- print metaData,metanode
+
try:
nodeOld=metanode.getElementsByTagName(metaData)
except:
@@ -165,13 +195,18 @@ def writeMetadata(url,metadict):
metanode.removeChild(nodeOld[0]).unlink()
metanodeneu=dom.createElement(metaData)
- metanodetext=dom.createTextNode(unicode(metadict[metaData],"utf8"))
+ try:
+ metanodetext=dom.createTextNode(unicode(metadict[metaData],"utf-8"))
+ except:
+ metanodetext=dom.createTextNode(metadict[metaData].encode('utf-8'))
metanodeneu.appendChild(metanodetext)
metanode.appendChild(metanodeneu)
- return dom.topxml().encode('utf-8')
+ return dom.toxml().encode('utf-8')
+
+
def readMetadata(url):
"""Methode zum Auslesen der Metadateninformation zu einer Resource
Vorerst noch Typ bib"""
@@ -196,7 +231,7 @@ def readMetadata(url):
if len(metanode)==0:
metanode=dom.getElementsByTagName('archimedes')
metadict['bib_type']='Archimedes'
- #print "HELLO"
+
if not len(metanode)==0:
metacontent=metanode[0].childNodes
@@ -208,7 +243,7 @@ def readMetadata(url):
for node in metacontent:
try:
- metadict[re.sub('-','_',node.tagName.lower())]=getText(node.childNodes)
+ metadict[re.sub('-','_',node.tagName.lower())]=urllib.unquote(getText(node.childNodes))
except:
"""nothing"""
@@ -233,15 +268,15 @@ def setECHO_collectionInformation(self,t
coords=[]
#coordinates of for rectangles
- #print "cs", coordstrs
+
if coordstrs:
for coordstr in coordstrs:
- #print "cs", coordstr
+
try:
temco=coordstr.split(",")
except:
temco=[]
- #temco.append(angle)
+
coords.append(temco)
@@ -361,7 +396,7 @@ def manage_addECHO_layoutTemplate(self,
REQUEST.RESPONSE.redirect(u+'/manage_main')
return ''
-class ECHO_resource(Folder):
+class ECHO_resource(Folder,Persistent):
"""ECHO Ressource"""
meta_type='ECHO_resource'
@@ -387,19 +422,25 @@ class ECHO_resource(Folder):
return ""
def getFullTextXML(self,noredirect=None):
- """getFullTextXML"""
+ """getFullTextXML; gives the FullText as an XML Document, and if somthing goes wrong."""
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)
+ self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml')
if not noredirect:
self.REQUEST.RESPONSE.redirect(texturl)
else:
return texturl
except:
- return None
+
+ if not noredirect:
+ self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml')
+ self.REQUEST.RESPONSE.write("no fulltext available")
+ else:
+ return "no fulltext available"
def getCredits(self):
"""Ausgabe der credits"""
@@ -408,7 +449,7 @@ class ECHO_resource(Folder):
else:
return []
- def __init__(self,id,link,metalink,title,label,description,contentType,responsible,credits,weight,coords):
+ def __init__(self,id,link,metalink,resourceID,title,label,description,contentType,renderingType,responsible,credits,weight,coords):
self.id = id
"""Festlegen der ID"""
@@ -421,8 +462,10 @@ class ECHO_resource(Folder):
self.credits=toList(credits)
self.description=description
self.contentType=contentType
+ self.renderingType=renderingType
self.responsible=responsible
-
+ self.resourceID=resourceID
+
if coords:
coordsnew=[ string.split(x,",") for x in coords]
else:
@@ -500,8 +543,7 @@ class ECHO_resource(Folder):
for data in self.metadata:
data_neu=re.sub('-','_',data)
self.metaDataHash[data_neu]=getattr(self,data)
- #print data_neu, getattr(self,data)
- #print self.metaDataHash,self.metadata
+
pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_resource_metadata.zpt').__of__(self)
return pt()
@@ -554,6 +596,17 @@ class ECHO_resource(Folder):
RESPONSE.redirect('manage_main')
+ def changeECHO_resource_metadata_local(self,RESPONSE=None):
+ """change metadata"""
+ tags=self.findTagsFromMapping(self.contentType)
+ for field in tags[1]:
+ self.metaDataHash[self.getFieldTag(tags,field)]=self.REQUEST.form[self.getFieldTag(tags,field)]
+
+
+
+ if RESPONSE is not None:
+ RESPONSE.redirect('manage_main')
+
def changeECHO_resource_metadata(self,RESPONSE=None):
"""change metadata"""
tags=self.findTagsFromMapping(self.contentType)
@@ -571,12 +624,20 @@ class ECHO_resource(Folder):
RESPONSE.redirect('manage_main')
+ def getMDValue(self,fieldName):
+ return self.metaDataHash.get(fieldName,'!!NOT USED HERE in Type: %s'%self.contentType)
+
def newMetaXML(self):
"""new index.meta"""
self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml')
return writeMetadata(self.metalink,self.OSAS_meta)
-
+
+ def getMetaDataXML(self):
+ """prints out metadata as stored in the echo environment, format is the index.meta format"""
+ self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml')
+ return writeMetadata(self.metalink,self.metaDataHash)
+
def changeECHO_resource(self,metalink,link,title,label,description,contentType,responsible,weight,viewClassification="",coords=None,credits=None,RESPONSE=None):
"""Änderung der Properties"""
@@ -667,7 +728,7 @@ class ECHO_resource(Folder):
def getFieldValue(self,field):
"""get value"""
- #print field
+
try:
ret=self.metaDataHash[field]
@@ -678,75 +739,138 @@ class ECHO_resource(Folder):
except:
return None
+ def getMetaDataHash(self):
+ """md hash"""
+ return self.metaDataHash
+
+ def setFieldValue(self,field,value):
+ """get value"""
+
+ if not hasattr(self,'metaDataHash'):
+ setattr(self,'metaDataHash',{})
+ self.metaDataHash[field]=value[0:]
+
+
+
def findLabelsFromMapping(self,referenceType):
"""gib hash mit label -> generic zurueck"""
- self.referencetypes=self.ZopeFind(self.standardMD)
- #print "RT",referenceType
+ #return {},[]
+
+ temp=self.ZopeFind(self.standardMD)
+
+ if referenceType=="":
+ referenceType="book"
+
bibdata={}
retdata={}
+ fields=[]
fieldlist=self.standardMD.fieldList
for referenceTypeF in self.referencetypes:
- #print referenceTypeF[1].title,referenceType
- if referenceTypeF[1].title == referenceType:
- #print "OK"
- 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]
+ fields=bibdata[referenceType]
for field in fieldlist:
retdata[field]=referenceTypeF[1].getValue(field)[1]
- #print retdata,fieldlist
- return retdata,fieldlist
+
+ return retdata,fieldlist,temp,fields
def findTagsFromMapping(self,referenceType):
"""gib hash mit label -> generic zurueck"""
- self.referencetypes=self.ZopeFind(self.standardMD)
+
+ if referenceType=="":
+ referenceType="book"
+
+ temp = self.ZopeFind(self.standardMD)[0:]
+
+ #self.referencetypes=temp[0:]
+
+
+
+
+
+
bibdata={}
retdata={}
fieldlist=self.standardMD.fieldList
- for referenceTypeF in self.referencetypes:
+ for referenceTypeF in temp:
- 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]
+ fields=bibdata[referenceType]
for field in fieldlist:
retdata[field]=referenceTypeF[1].getValue(field)[0]
- return retdata,fieldlist
+ return retdata,fieldlist,temp,fields
-
-
+
+ def copyIndex_meta2echo_resource(self,RESPONSE=None):
+ """copy MD von Index_meta to the echo_resource"""
+
+ (metadict, error)=readMetadata(self.metalink)
+
+ self.metaDataHash={}
+ if not error=="": #Fehler beim Auslesen des Metafiles
+ return "ERROR:",error
+ fields=self.findTagsFromMapping(self.contentType)
+ #fields=self.findLabelsFromMapping(self.contentType)
+ for field in fields[1]:
+ if self.isDefinedInThisSet(fields,field):
+ self.setFieldValue(self.getFieldTag(fields,field),metadict.get(self.getFieldTag(fields,field),''))
+
+
+
+ if RESPONSE:
+ return RESPONSE.redirect('manage_main')
+
def ECHO_getResourceMD(self,template="yes"):
"""Einlesen der Metadaten und Anlegen dieser Metadaten als Informationen zur Resource"""
(metadict, error)=readMetadata(self.metalink)
-
+
if not error=="": #Fehler beim Auslesen des Metafiles
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
return PageTemplateFile('Products/ECHO_content/zpt/ECHO_getResourceMDErrorContentType.zpt').__of__(self)()
-
- self.REQUEST.SESSION['metadict']=metadict
- self.REQUEST.SESSION['diffs']=checkDiffs(self,metadict)
+ self.REQUEST.SESSION['metadict']=metadict
+
+
+
+ self.REQUEST.SESSION['diffs']=checkDiffs(self,self.REQUEST.SESSION['metadict'])
+
if template=="yes":
- pt=PageTemplateFile('Products/ECHO_content/zpt/ECHO_resourceMD.zpt').__of__(self)
- return pt()
+ pt=PageTemplateFile('Products/ECHO_content/zpt/ECHO_resourceMD.zpt').__of__(self)
+ return pt()
+
@@ -759,12 +883,49 @@ class ECHO_resource(Folder):
return self.REQUEST.RESPONSE.redirect(self.link)
+ def startpage_html(self):
+ """prints out a startpage for a resource for use e.g. in the BVE"""
+
+ # suche ob startpage.html in dem Ordner vorhanden ist, dann wir diese angezeigt
+
+ sp=self.ZopeFind(self,obj_ids=['startpage.html'])
+
+ if sp:
+ return sp[1]()
+
+ #prüfen ob irgendwo ein template
+ if hasattr(self,'startpage_index_template'):
+ return self.startpage_index_template()
+
+ #generisches template ausgeben
+
+ pt=PageTemplateFile('Products/ECHO_content/zpt/ECHO_startpage_index_template_standard.zpt').__of__(self)
+ pt.content_type="text/html"
+ return pt()
+
+ def toc_html(self):
+
+ sp=self.ZopeFind(self,obj_ids=['toc.html'])
+
+ if sp:
+ return sp[0][1]()
+
+
+
def generate_label(self):
"""Erzeugt_standard_Label aus Template"""
pt=getattr(self,"label_template_"+self.bib_type)
return pt()
+ def generate_title(self,RESPONSE=None):
+ """Erzeugt_standard_Label aus Template"""
+ pt=getattr(self,"label_template_"+self.contentType)
+
+ self.title=pt()
+
+ return pt()
+
def manage_addECHO_resourceForm(self):
"""Form for adding a ressource"""
pt=PageTemplateFile('Products/ECHO_content/zpt/AddECHO_resourceForm.zpt').__of__(self)
@@ -772,10 +933,10 @@ def manage_addECHO_resourceForm(self):
-def manage_addECHO_resource(self,id,title,label,description,contentType,responsible,link,metalink,weight,credits=None,coords=None,RESPONSE=None):
+def manage_addECHO_resource(self,id,title,label,description,responsible,link,metalink,weight,resourceID=None,contentType=None,renderingType=None,credits=None,coords=None,RESPONSE=None):
"""addaresource"""
- newObj=ECHO_resource(id,link,metalink,title,label,description,contentType,responsible,credits,weight,coords)
+ newObj=ECHO_resource(id,link,metalink,resourceID,title,label,description,contentType,renderingType,responsible,credits,weight,coords)
self._setObject(id,newObj)
@@ -824,7 +985,7 @@ class ECHO_externalLink(Folder):
if not hasattr(self,'coords'):
self.coords=['']
- #print "G",self.coords
+
pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_externalLink.zpt').__of__(self)
return pt()
@@ -911,6 +1072,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
@@ -1000,7 +1162,7 @@ class ECHO_collection(Folder, Persistent
return ret+""+getCollection(self)+""
def createJavaScript(self):
- """CreateJava"""
+ """OLD CreateJava"""
ret=javaScriptMain
dynamical="\n"
@@ -1014,7 +1176,7 @@ class ECHO_collection(Folder, Persistent
return ret
def createJSAreas(self):
- """new version of createJavaScript"""
+ """create area calls for JavaScript"""
dynamical="\n"
for ob in self.getGraphicCoords():
if ob[5] == "area":
@@ -1024,20 +1186,37 @@ class ECHO_collection(Folder, Persistent
return dynamical
def createMapHead(self):
- """generate divs"""
+ """create javascript include and script tags for head"""
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 += ''%src
+ else:
+ tag += ''%src
+ return tag
def createMapLink(self, ob, text=None):
"""generate map link"""
+ bt = BrowserCheck(self)
id = ob[1]
link = ob[1]
if text == None:
text = ob[2]
- tag = '" + text + ""
+ tag = ""
+ if bt.isN4:
+ tag += '" + text + ""
+ else:
+ tag = '" + text + ""
return tag
def createMapAux(self, ob, arrowsrc="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?dw=15&fn=icons/pfeil"):
@@ -1046,18 +1225,39 @@ class ECHO_collection(Folder, Persistent
link = ob[1]
vtype = ob[5]
ctype = ob[3].contentType
-
- tag = ''%(id,id,id,link)
- if vtype == "view point":
- rot = ob[4][4]
- tag += ''%(id,arrowsrc,rot)
+ bt = BrowserCheck(self)
+ tag = ""
+
+ if bt.isN4:
+ tag += ''%(id,id,id)
+ if vtype == "view point":
+ rot = ob[4][4]
+ tag += ''%(link,arrowsrc,rot)
+ else:
+ tag += ''
+ tag += ''
else:
- tag += ''
- tag += ''
+ tag = ''%(id,id,id,link)
+ if vtype == "view point":
+ rot = ob[4][4]
+ if bt.isIEWin and bt.versIE > 5:
+ tag += ''%(id,arrowsrc,rot,arrowsrc,rot)
+ else:
+ tag += ''%(id,arrowsrc,rot)
+ else:
+ if bt.isIEWin:
+ tag += '
'
+ tag += ''
return tag
@@ -1100,7 +1300,7 @@ class ECHO_collection(Folder, Persistent
for entry in entries:
if entry[1].meta_type == 'ECHO_resource':
entry[1].ECHO_getResourceMD(template="no")
- #print "rerender",entry[1].getId()
+
else:
self.ECHO_rerenderLinksMD(entry[1])
@@ -1122,7 +1322,7 @@ class ECHO_collection(Folder, Persistent
return []
def __init__(self,id,title,label,description,contentType,responsible,credits,weight,sortfield,coords,secondaryLinkTitle,secondaryLink,imageTag="",bgcolour=""):
- #print "CO",coords
+
self.id = id
"""Festlegen der ID"""
@@ -1233,8 +1433,6 @@ class ECHO_collection(Folder, Persistent
if RESPONSE is not None:
RESPONSE.redirect('manage_main')
- security.declarePublic('index_html')
-
def showOverview(self):
"""overview"""
@@ -1243,6 +1441,7 @@ class ECHO_collection(Folder, Persistent
pt=PageTemplateFile('Products/ECHO_content/zpt/ECHO_content_overview.zpt').__of__(self)
return pt()
+ security.declareProtected('View','index_html')
def index_html(self):
"""standard page"""
@@ -1274,7 +1473,15 @@ class ECHO_collection(Folder, Persistent
def area_img(self):
"""area image"""
- return sendFile(self, 'images/red.gif', 'image/gif')
+ bt = BrowserCheck(self)
+ if bt.isIE or bt.isN4:
+ return sendFile(self, 'images/red.gif', 'image/gif')
+ else:
+ return sendFile(self, 'images/reda.png', 'image/png')
+
+ def trans_img(self):
+ """empty image"""
+ return sendFile(self, 'images/trans.gif', 'image/gif')
def hl_lib_js(self):
"""javascript"""
@@ -1316,9 +1523,8 @@ class ECHO_collection(Folder, Persistent
getSubCols = ECHO_helpers.getSubCols
-
-
-
+
+Globals.InitializeClass(ECHO_collection)
def manage_addECHO_collectionForm(self):
"""Add collection form"""
@@ -1339,6 +1545,7 @@ def manage_addECHO_collection(self,id,ti
class ECHO_group(ECHO_collection):
"""ECHO Gruppe"""
+ security=ClassSecurityInfo()
meta_type="ECHO_group"
manage_options = Folder.manage_options+(
@@ -1346,7 +1553,8 @@ class ECHO_group(ECHO_collection):
{'label':'Rerender Links','action':'ECHO_rerenderLinksMD'},
{'label':'Graphics','action':'ECHO_graphicEntry'},
)
-
+
+ security.declareProtected('View','index_html')
def index_html(self):
"""standard page"""
displayedObjects=self.ZopeFind(self,obj_metatypes=displayTypes)
@@ -1440,12 +1648,145 @@ def manage_addECHO_group(self,id,title,l
if RESPONSE is not None:
RESPONSE.redirect('manage_main')
+Globals.InitializeClass(ECHO_group)
+
+class ECHO_userFolder(UserFolder):
+ """User folder for Intranet"""
+ _domain_auth_mode=1 # Identification via domain
+ meta_type="ECHO_userFolder"
+ def authenticate(self, name, password, request):
+ emergency = self._emergency_user
+ if name is None:
+ return None
+ if emergency and name==emergency.getUserName():
+ user = emergency
+ else:
+ user = self.getUser(name)
+ if user is not None and user.authenticate(password, request):
+ return user
+ else:
+ return None
+
+ def domainSpecMatch(self,spec, request):
+ host=''
+ addr=''
+
+ # Fast exit for the match-all case
+ if len(spec) == 1 and spec[0] == '*':
+ return 1
+
+ if request.has_key('REMOTE_HOST'):
+ host=request['REMOTE_HOST']
+
+ if request.has_key('REMOTE_ADDR'):
+ addr=request['REMOTE_ADDR']
+
+ if request.has_key('HTTP_X_FORWARDED_FOR'):
+ addr=request['HTTP_X_FORWARDED_FOR']
+
+
+ if not host and not addr:
+ return 0
+
+ if not host:
+ try: host=socket.gethostbyaddr(addr)[0]
+ except: pass
+ if not addr:
+ try: addr=socket.gethostbyname(host)
+ except: pass
+
+
+ _host=host.split('.')
+ _addr=addr.split('.')
+ _hlen=len(_host)
+ _alen=len(_addr)
+
+ for ob in spec:
+ sz=len(ob)
+ _ob=ob.split('.')
+ _sz=len(_ob)
+
+ mo = addr_match(ob)
+ if mo is not None:
+ if mo.end(0)==sz:
+ fail=0
+ for i in range(_sz):
+ a=_addr[i]
+ o=_ob[i]
+ if (o != a) and (o != '*'):
+ fail=1
+ break
+ if fail:
+ continue
+ return 1
+
+ mo = host_match(ob)
+ if mo is not None:
+ if mo.end(0)==sz:
+ if _hlen < _sz:
+ continue
+ elif _hlen > _sz:
+ _item=_host[-_sz:]
+ else:
+ _item=_host
+ fail=0
+ for i in range(_sz):
+ h=_item[i]
+ o=_ob[i]
+ if (o != h) and (o != '*'):
+ fail=1
+ break
+ if fail:
+ continue
+ return 1
+ return 0
+
+Globals.default__class_init__(ECHO_userFolder)
+
+
+
+def manage_addECHO_userFolder(self,dtself=None,REQUEST=None,**ignored):
+ """add a user folder """
+ f=ECHO_userFolder()
+ self=self.this()
+ try: self._setObject('acl_users', f)
+ except: return MessageDialog(
+ title ='Item Exists',
+ message='This object already contains a User Folder',
+ action ='%s/manage_main' % REQUEST['URL1'])
+ self.__allow_groups__=f
+ if REQUEST is not None:
+ REQUEST['RESPONSE'].redirect(self.absolute_url()+'/manage_main')
+
+def manage_addECHO_userFolderForm(self):
+ """add a user folder form"""
+ return manage_addECHO_userFolder(self)
+
class ECHO_root(Folder,Persistent,Implicit):
"""ECHO Root Folder"""
+
+ security=ClassSecurityInfo()
+
meta_type="ECHO_root"
+
+ def getBibTag(self,tag,content):
+ """get field tag für index-meta-generation"""
+ if not content or content=="":
+ return ""
+ ret="<%s>"%tag
+ ret+=urllib.quote(content)
+ ret+="%s>"%tag
+ return ret
+
+ def getValueFromClass(self,field,found):
+ """retattribute falss existing"""
+ try:
+ return getattr(found,field)
+ except:
+ return ""
def getImageTag(self):
"""needed by main_template"""
@@ -1561,7 +1902,7 @@ class ECHO_root(Folder,Persistent,Implic
def checkIfArrow(obj):
if hasattr(obj,'coords'):
for coordtemp in obj.coords:
- #print obj.title,len(coordtemp)
+
if (len(coordtemp)>4) and not (coordtemp[4]==''):
return 4
return None
@@ -1633,7 +1974,7 @@ class ECHO_root(Folder,Persistent,Implic
for word in words:
strUrl=url%word
- #print "str",strUrl
+
retStr+="""%s
"""%(strUrl,word)
str=retStr
if str:
@@ -1644,12 +1985,12 @@ class ECHO_root(Folder,Persistent,Implic
def link2html(self,str):
"""link2html fuer VLP muss hier noch raus"""
if str:
- #print str
+
str=re.sub("\&","&",str)
dom=xml.dom.minidom.parseString(""+str+"")
links=dom.getElementsByTagName("link")
- #print "link",links
+
for link in links:
link.tagName="a"
ref=link.getAttribute("ref")
@@ -1664,7 +2005,6 @@ class ECHO_root(Folder,Persistent,Implic
dbs={'vl_literature':'AND CD LIKE \'%lise%\'','vl_technology':'','vl_people':''}
res=None
for db in dbs.keys():
- #print ref,"select reference from %s where reference =\'%s\' %s"%(db,ref,dbs[db])
res=res or self.search(var=str("select reference from %s where reference =\'%s\' %s"%(db,ref,dbs[db])))
return res
@@ -1673,7 +2013,7 @@ class ECHO_root(Folder,Persistent,Implic
def PgQuoteString(self,string):
"""Quote string"""
- #print "PG",string
+
return libpq.PgQuoteString(string)
def getPartners(self):
@@ -1791,7 +2131,7 @@ class ECHO_root(Folder,Persistent,Implic
else:
ret+="""\n"""%(urllib.quote(echo_url,safe='/:?'),urllib.quote(viewer_url,safe='/:?'))
ret +="""\n"""
- print ret
+
self.REQUEST.RESPONSE.setHeader("Content-Type", "text/xml")
self.REQUEST.RESPONSE.write(ret)