--- ECHO_content/ECHO_collection.py 2007/01/15 11:13:04 1.280
+++ ECHO_content/ECHO_collection.py 2008/11/19 14:22:42 1.297
@@ -42,6 +42,7 @@ from Products.ZCatalog.CatalogPathAwaren
from Products.ZCTextIndex.ZCTextIndex import manage_addLexicon
import urllib
+import urllib2
import cgi
import smtplib
import time
@@ -51,7 +52,7 @@ from Ft.Xml import EMPTY_NAMESPACE
import Ft.Xml.XPath
import cStringIO
-import zLOG
+
import sys
try:
@@ -74,20 +75,24 @@ try:
except:
print "no echo_language"
class ECHO_language:
- """ leere Klasse"""
- pass
+ """ leere Klasse"""
+ pass
from ECHO_movie import *
import vlp_xmlhelpers #TODO: vlp elemente aus echo herausnehmen
import xmlrpclib
-
+import logging
+#ersetzt logging.info
+def logger(txt,method,txt2):
+ """logging"""
+ logging.info(txt+ txt2)
def normalizeCt(str):
- """normalizes content_type"""
- #str= str.replace(" ","_")
- return str.replace("-"," ").lower()
+ """normalizes content_type"""
+ #str= str.replace(" ","_")
+ return str.replace("-"," ").lower()
def setECHO_collectionInformation(self,title,label,description,contentType,responsible,credits,weight,coordstrs=""):
@@ -191,12 +196,15 @@ class ECHO_locale(ZopePageTemplate):
meta_type="ECHO_locale"
def __init__(self,id,lang,title,label,text=None,content_type=None):
- self.lang=lang
- self.title=title
- self.label=label
- if text:
- self.pt_edit(text, content_type)
- self.id=id
+ self.lang=lang
+ self.title=title
+ self.label=label
+ # default content
+ if not text:
+ text = open(self._default_content_fn).read()
+ content_type = 'text/html'
+ self.pt_edit(text, content_type)
+ self.id=id
manage_options = ZopePageTemplate.manage_options+(
{'label':'Main Config','action':'change_ECHO_localeForm'},
@@ -213,6 +221,8 @@ class ECHO_locale(ZopePageTemplate):
self.title=title
self.label=label
if not text is None:
+ if content_type is None:
+ content_type = self.content_type
self.pt_edit(text, content_type)
if RESPONSE is not None:
@@ -302,6 +312,8 @@ class ECHO_layoutTemplate(ZopePageTempla
if text is None:
self._default_content_fn = os.path.join(package_home(globals()),'zpt','ECHO_%s_template_standard.zpt'%EchoType)
text = open(self._default_content_fn).read()
+ if content_type is None:
+ content_type = self.content_type
self.pt_edit(text, content_type)
@@ -359,7 +371,7 @@ class ECHO_fullText(ZopePageTemplate,ECH
def getPage(self,nr='1'):
"""get page n"""
#return self().encode('latin-1','ignore')
- try:
+ try:
dom=xml.dom.minidom.parseString(self())
except:
dom=xml.dom.minidom.parseString(self().encode('latin-1'))
@@ -417,6 +429,22 @@ class ECHO_resource(CatalogAware,Folder,
getSubCols = ECHO_helpers.getSubCols
+ def index_meta(self,RESPONSE=None):
+ """ gibt das im metalink gespeicher xml-file zurueck"""
+ url = self.metalink
+ txt=""
+ logging.debug("ml:%s"%url)
+ try:
+ page = urllib.urlopen(url);
+ if RESPONSE:
+ RESPONSE.setHeader("Content-Type","text/xml")
+
+ txt = page.read();
+ except:
+ logging.error("Cannot read metadata of: %s"%self.getId())
+
+ return txt
+
def reindex(self):
"""generate fields for indexing and reindex"""
@@ -619,7 +647,7 @@ class ECHO_resource(CatalogAware,Folder,
try:
urllib.urlopen(url)
except:
- zLOG.LOG("ECHO_Resource (getAccessRightMD)", zLOG.INFO,"%s (%s)"%sys.exc_info()[0:2])
+ logger("ECHO_Resource (getAccessRightMD)", logging.INFO,"%s (%s)"%sys.exc_info()[0:2])
return None,getattr(self,'accessRight','')
@@ -627,7 +655,7 @@ class ECHO_resource(CatalogAware,Folder,
try:
dom = NonvalidatingReader.parseUri(url)
except:
- zLOG.LOG("ECHO_Resource (getAccessRightMD)", zLOG.INFO,"%s (%s)"%sys.exc_info()[0:2])
+ logger("ECHO_Resource (getAccessRightMD)", logging.INFO,"%s (%s)"%sys.exc_info()[0:2])
return (None,"Cannot parse: "+url+"
"+"%s (%s)"%sys.exc_info()[0:2])
@@ -763,7 +791,7 @@ class ECHO_resource(CatalogAware,Folder,
if (not resourcepath) or (not digiliburlprefix) or (not images):
- zLOG.LOG("ECHO (createImageUrl)",zLOG.ERROR,"Cannot create ImageUrl for %s"%self.absolute_url())
+ logger("ECHO (createImageUrl)",logging.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?"
@@ -896,8 +924,8 @@ class ECHO_resource(CatalogAware,Folder,
break;
except:
- zLOG.LOG("ECHO_ressource (changeViewerTemplateSet)", zLOG.ERROR,"%s (%s)"%sys.exc_info()[0:2])
- zLOG.LOG("ECHO_ressource (changeViewerTemplateSet)", zLOG.ERROR,'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)))
+ logger("ECHO_ressource (changeViewerTemplateSet)", logging.ERROR,"%s (%s)"%sys.exc_info()[0:2])
+ logger("ECHO_ressource (changeViewerTemplateSet)", logging.ERROR,'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)))
#print self.absolute_url()+'/newMetaXML'+urllib.quote'?'+params)
# hack Pfad auf die Dokumente
path=self.metalink
@@ -913,8 +941,8 @@ class ECHO_resource(CatalogAware,Folder,
try:
return ECHO_helpers.urlopen("http://nausikaa2.rz-berlin.mpg.de:86/cgi-bin/toc/admin/reg.cgi?path=%s"%path).readlines()
except:
- zLOG.LOG("ECHO_Resource (changeViewerTemplateSet)", zLOG.INFO,"%s (%s)"%sys.exc_info()[0:2])
- zLOG.LOG("ECHO_Resource (changeViewerTemplateSet)", zLOG.INFO,"http://nausikaa2.rz-berlin.mpg.de:86/cgi-bin/toc/admin/reg.cgi?path=%s"%path)
+ logger("ECHO_Resource (changeViewerTemplateSet)", logging.INFO,"%s (%s)"%sys.exc_info()[0:2])
+ logger("ECHO_Resource (changeViewerTemplateSet)", logging.INFO,"http://nausikaa2.rz-berlin.mpg.de:86/cgi-bin/toc/admin/reg.cgi?path=%s"%path)
if RESPONSE is not None:
RESPONSE.redirect('manage_main')
@@ -936,17 +964,17 @@ class ECHO_resource(CatalogAware,Folder,
"""getFullTextXML; gives the FullText as an XML Document, and if somthing goes wrong."""
try:
- #zLOG.LOG("ECHO Fulltext",zLOG.INFO,"open %s"%self.metalink)
+ #logger("ECHO Fulltext",logging.INFO,"open %s"%self.metalink)
fh=ECHO_helpers.urlopen(self.metalink)
- #zLOG.LOG("ECHO Fulltext",zLOG.INFO,"opened %s"%self.metalink)
+ #logger("ECHO Fulltext",logging.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)
+ #logger("ECHO Fulltext",logging.INFO,"found %s"%texturl)
fh.close()
- #zLOG.LOG("ECHO Fulltext",zLOG.INFO,"closed fh")
+ #logger("ECHO Fulltext",logging.INFO,"closed fh")
#keine url
if not (texturl.split(":")[0] in ['http','ftp','file']):
if not noredirect:
@@ -956,7 +984,7 @@ class ECHO_resource(CatalogAware,Folder,
if not noredirect:
self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml')
- zLOG.LOG("ECHO Fulltext",zLOG.INFO,"redirect to:%s"%texturl)
+ logger("ECHO Fulltext",logging.INFO,"redirect to:%s"%texturl)
self.REQUEST.RESPONSE.redirect(texturl)
else:
return texturl
@@ -1172,8 +1200,26 @@ class ECHO_resource(CatalogAware,Folder,
only if metalink is set, otherwise it gives false
"""
+ texterUrl="http://nausikaa2.mpiwg-berlin.mpg.de/digitallibrary/servlet/Texter?fn=/"
+
vl,msg=self.checkValidityOfMetaLink()
+ if not vl: #ungueltiger link, versuche neuen
+ newStr=re.match(".*/mpiwg/online/(.*)",self.metalink) # suche pfad hinter /mpiwg/online
+ oldLink=self.metalink
+
+ if newStr:
+ self.metalink=texterUrl+newStr.group(1)
+ vl,msg=self.checkValidityOfMetaLink()
+ else:
+ logging.error("change Viewer XX(mew Metadatafile) %s"%self.metalink)
+ vl=False
+
+ if not vl: # geht immer noch nicht, dann setzte wieder zurueck
+ self.metalink=oldLink
+
+ logging.info("change Viewer (mew Metadatafile) %s"%self.metalink)
+
if vl:
self.newViewer=newViewer
return vl,msg
@@ -1279,7 +1325,7 @@ class ECHO_resource(CatalogAware,Folder,
self.metaDataHash[self.getFieldTag(tags,field)]=self.REQUEST.form[self.getFieldTag(tags,field)]
self.OSAS_meta[self.getFieldTag(tags,field)]=self.REQUEST.form['OSAS_%s'%self.getFieldTag(tags,field)]
except:
- zLOG.LOG("ECHO_collection (changeECHO_resource_metadata)",zLOG.ERROR,"%s (%s)"%sys.exc_info()[0:2])
+ logger("ECHO_collection (changeECHO_resource_metadata)",logging.ERROR,"%s (%s)"%sys.exc_info()[0:2])
print self.newMetaXML()
tries=0
@@ -1305,7 +1351,7 @@ class ECHO_resource(CatalogAware,Folder,
self.getMDValue('year',generic="yes"),self.getTitle()])
except:
- #zLOG.LOG(" ECHO_collection(getMDSimpleSearchField)",zLOG.INFO," ".join([self.getMDValue('title',generic="yes"),
+ #logger(" ECHO_collection(getMDSimpleSearchField)",logging.INFO," ".join([self.getMDValue('title',generic="yes"),
# self.getMDValue('author',generic="yes"),
# self.getMDValue('year',generic="yes"),'']))
return ""
@@ -1320,13 +1366,13 @@ class ECHO_resource(CatalogAware,Folder,
ct=self.contentType.replace(" ","_").lower()
ct=self.contentType.replace("-","_").lower()
else:
- zLOG.LOG("ECHO_collection (getMDValue)", zLOG.INFO, "no_content type for %s"%self.getId())
+ logger("ECHO_collection (getMDValue)", logging.INFO, "no_content type for %s"%self.getId())
ct=""
#caching
if not hasattr(self,'_v_mapHash'): #noch keine cachevariable
self._v_mapHash={}
-
+
tmp=self._v_mapHash.get(ct,None)
@@ -1348,18 +1394,15 @@ class ECHO_resource(CatalogAware,Folder,
ret =self.metaDataHash.get(fieldName,'!!NOT USED HERE in Type: %s'%normalizeCt(self.contentType))
except:
- zLOG.LOG("ECHO (line 1069)",zLOG.ERROR,"no md hash for %s"%self.getId())
+ logger("ECHO (line 1069)",logging.ERROR,"no md hash for %s"%self.getId())
return ""
else:
ret= self.metaDataHash.get(fieldNameTest,empty)
-
- if type(ret) is StringType:
- return ret.decode('utf-8')
- else:
- return ret
+
+ return unicodify(ret)
getFieldValue=getMDValue #depricated
@@ -1420,6 +1463,10 @@ class ECHO_resource(CatalogAware,Folder,
self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml')
return writeMetadata(self.metalink,self.metaDataHash)
+ def getMetaDataLink(self):
+ """get link to the meta data"""
+ return self.metalink
+
def changeECHO_resource(self,metalink,link,title,label,description,contentType,responsible,weight,coords=None,credits=None,RESPONSE=None):
"""Aenderung der Properties"""
@@ -1515,7 +1562,7 @@ class ECHO_resource(CatalogAware,Folder,
tags=self.findTagsFromMapping(normalizeCt(self.contentType))
self.referencetypes=tags[2]
for referenceTypeF in self.referencetypes:
-
+
if normalizeCt(referenceTypeF[1].title) == normalizeCt(referenceType.lower()):
@@ -1752,7 +1799,7 @@ class ECHO_externalLink(Folder,ECHO_basi
- def __init__(self,id,link,title,label,description,contentType,responsible,credits,weight,coords):
+ def __init__(self,id,link,title,label,description,contentType,responsible,credits,weight,coords,linkType):
self.id = id
"""Festlegen der ID"""
@@ -1767,6 +1814,8 @@ class ECHO_externalLink(Folder,ECHO_basi
self.responsible=responsible
coordsnew=[ string.split(x,",") for x in coords]
self.coords=coordsnew
+ self.linkType = linkType # Linktypen 'otherPresentation','external'
+
def ECHO_externalLink_config(self):
"""Main configuration"""
@@ -1782,25 +1831,50 @@ class ECHO_externalLink(Folder,ECHO_basi
return pt()
- def changeECHO_externalLink(self,link,title,label,description,contentType,responsible,weight,coords=None,credits=None,RESPONSE=None):
+ def changeECHO_externalLink(self,link,title,label,description,contentType,responsible,weight,coords=None,credits=None,RESPONSE=None,linkType='otherPresentation'):
"""Aenderung der Properties"""
setECHO_collectionInformation(self,title,label,description,contentType,responsible,credits,weight)
self.link=link
+ self.linkType = linkType
if RESPONSE is not None:
RESPONSE.redirect('manage_main')
+ def getLinkType(self):
+ """ return linkType """
+ if hasattr(self,"linkType"):
+ return self.linkType
+ else :
+ return 'otherPresentation'
+
+ def setLinkType(self,type):
+ """ set linkType """
+ self.linkType = type
+
+ def checkLink(self):
+ """ returns tuple (isWorking,Error) """
+ try:
+ urllib2.urlopen(self.link)
+ return (True, '')
+ except urllib2.HTTPError, e:
+ return (False, e.code)
+ except urllib2.URLError, e:
+ return (False, str(e.reason))
+ except:
+ return (False, 'unknown Error')
- manage_options = Folder.manage_options+(
+
+ manage_options = (
{'label':'Main Config','action':'ECHO_externalLink_config'},
{'label':'Graphic Coords','action':'ECHO_graphicEntry'},
- )
+ )+Folder.manage_options
def index_html(self):
"""standard page"""
return self.REQUEST.RESPONSE.redirect(self.link)
+
def manage_addECHO_externalLinkForm(self):
"""Form for external Links"""
@@ -1808,10 +1882,10 @@ def manage_addECHO_externalLinkForm(self
return pt()
-def manage_addECHO_externalLink(self,id,title,label,description,contentType,responsible,link,weight,coords=None,credits=None,RESPONSE=None):
+def manage_addECHO_externalLink(self,id,title,label,description,contentType,responsible,link,weight,coords=None,credits=None,RESPONSE=None,linkType='otherPresentation'):
"""Add an external Link"""
- newObj=ECHO_externalLink(id,link,title,label,description,contentType,responsible,credits,weight,coords)
+ newObj=ECHO_externalLink(id,link,title,label,description,contentType,responsible,credits,weight,coords,linkType)
self._setObject(id,newObj)
@@ -1949,7 +2023,7 @@ class ECHO_link(ECHO_externalLink):
params['backLink']=self.aq_parent.absolute_url()
params['startLink']=splitted[0]+"?"+urllib.urlencode(params)
-
+
return self.REQUEST.RESPONSE.redirect(splitted[0]+"?"+urllib.urlencode(params))
else:
return ""
@@ -1960,10 +2034,10 @@ def manage_addECHO_linkForm(self):
return pt()
-def manage_addECHO_link(self,id,title,label,description="",contentType="",responsible="",link="",weight="",coords=[],credits=None,RESPONSE=None):
+def manage_addECHO_link(self,id,title,label,description="",contentType="",responsible="",link="",weight="",coords=[],credits=None,linkType="external",RESPONSE=None):
"""Add an external Link"""
- newObj=ECHO_link(id,link,title,label,description,contentType,responsible,credits,weight,coords)
+ newObj=ECHO_link(id,link,title,label,description,contentType,responsible,credits,weight,coords,linkType)
self._setObject(id,newObj)
@@ -2114,16 +2188,16 @@ class ECHO_collection(CatalogAware, Fold
if obj.meta_type=="ECHO_mapText":
if splitted[1]=="en":
- obj.locale_en.pt_edit(REQUEST.form[key],None)
+ obj.locale_en.pt_edit(REQUEST.form[key],obj.locale_en.content_type)
else:
- obj.pt_edit(REQUEST.form[key],None)
+ obj.pt_edit(REQUEST.form[key],obj.content_type)
else:
text=obj.ZopeFind(obj,obj_metatypes=['ECHO_mapText'])
if splitted[1]=="en":
- text[0][1].locale_en.pt_edit(REQUEST.form[key],None)
+ text[0][1].locale_en.pt_edit(REQUEST.form[key],text[0][1].locale_en.content_type)
else:
- text[0][1].pt_edit(REQUEST.form[key],None)
+ text[0][1].pt_edit(REQUEST.form[key],text[0][1].content_type)
if RESPONSE is not None:
RESPONSE.redirect('manage_main')
@@ -2419,7 +2493,7 @@ class ECHO_collection(CatalogAware, Fold
if ret and RESPONSE:
RESPONSE.write("ok: %s\n"%txt)
- #zLOG.LOG("ECHO (copyTitleToInfoXMLFolder)",zLOG.INFO,txt)
+ #logger("ECHO (copyTitleToInfoXMLFolder)",logging.INFO,txt)
if RESPONSE is not None:
RESPONSE.write("done!\n")
RESPONSE.close()
@@ -2537,8 +2611,24 @@ class ECHO_collection(CatalogAware, Fold
manage_addECHO_resource(self,id,title,label,description,responsible,link,metalink,weight,credits=None,coords=None,RESPONSE=None)
return "done"
except:
- return None
+ logging.error("ECHOcollection: (AddResource): %s %s"%sys.exc_info()[0:2])
+ return None
+ def addResourceAndCreateLabelAndTitle(self,id,title,label,description,contentType,responsible,link,metalink,weight,credits=None,coords=None,RESPONSE=None):
+ """SSS"""
+ ret = self.addResource(id,title,label,description,contentType,responsible,link,metalink,weight,credits,coords,RESPONSE)
+ if ret is None:
+ return None
+
+ try:
+ server2=getattr(self,id)
+ server2.copyIndex_meta2echo_resource()
+ server2.generate_label()
+ server2.generate_title()
+ except:
+ logging.error("An Error occured adding the resource A\n %s %s"%sys.exc_info()[0:2])
+ return None
+ return "done"
def getSecondaryLink(self):
"""secondary link"""
try:
@@ -2580,9 +2670,9 @@ class ECHO_collection(CatalogAware, Fold
ret=""""""
return ret+""+getCollection(self,pwstr=pwstr)+""
- def createAllJSAreas(self):
+ def createAllJSAreas(self,mapColTypes=None):
"""create area calls for JavaScript"""
- areas = self.getAllMapAreas()
+ areas = self.getAllMapAreas(mapColTypes=mapColTypes)
return self.createJSAreas(areas)
@@ -2632,7 +2722,7 @@ class ECHO_collection(CatalogAware, Fold
return ECHO_rerenderLinksMD(self,obj,types)
- def __init__(self,id,title,label,description="",contentType="",responsible="",credits="",weight="",sortfield="",coords=[],secondaryLinkTitle="",secondaryLink="",imageTag="",bgcolour=""):
+ def __init__(self,id,title,label,description="",contentType="",responsible="",credits="",weight="",sortfield="",coords=[],secondaryLinkTitle="",secondaryLink="",imageTag="",bgcolour="",isVisible=True):
self.id = id
"""Festlegen der ID"""
@@ -2650,6 +2740,7 @@ class ECHO_collection(CatalogAware, Fold
self.secondaryLinkTitle=secondaryLinkTitle
self.secondaryLink=secondaryLink
self.bgcolour=bgcolour
+ self.isVisible=isVisible
manage_options = Folder.manage_options+ Cacheable.manage_options+(
@@ -2694,7 +2785,7 @@ class ECHO_collection(CatalogAware, Fold
security.declarePublic('changeECHO_collection')
- def changeECHO_collection(self,title,label,description,contentType,responsible,weight,secondaryLink,secondaryLinkTitle,credits=None,sortfield="weight",coords=None,RESPONSE=None,imageTag="",bgcolour="",location=None,isAlwaysClickable=None,prefix="",suffix=""):
+ def changeECHO_collection(self,title,label,description,contentType,responsible,weight,secondaryLink,secondaryLinkTitle,credits=None,sortfield="weight",coords=None,RESPONSE=None,imageTag="",bgcolour="",location=None,isAlwaysClickable=None,prefix="",suffix="",isVisible=True):
"""Aenderung der Properties"""
self.secondaryLink=secondaryLink
@@ -2705,6 +2796,7 @@ class ECHO_collection(CatalogAware, Fold
self.isAlwaysClickable=isAlwaysClickable
self.prefix=prefix[0:]
self.suffix=suffix[0:]
+ self.setIsVisible(isVisible)
setECHO_collectionInformation(self,title,label,description,contentType,responsible,credits,weight)
@@ -2805,9 +2897,11 @@ class ECHO_collection(CatalogAware, Fold
"""javascript"""
return sendFile(self, 'js/hl_add.js', 'text/plain')
- def getAllMapAreas(self,mapColTypes=['ECHO_collection','ECHO_resource','ECHO_link','ECHO_externalLink']):
+ def getAllMapAreas(self,mapColTypes=None):
"""Give list of coordinates"""
-
+ if mapColTypes is None:
+ mapColTypes=['ECHO_collection','ECHO_resource','ECHO_link','ECHO_externalLink']
+
areas=[]
for entry in self.getSubCols(subColTypes=mapColTypes):
object=entry
@@ -2842,11 +2936,11 @@ def manage_addECHO_collectionForm(self):
return pt()
-def manage_addECHO_collection(self,id,title,label,description="",contentType="",responsible="",weight=0,sortfield="weight",coords="",secondaryLinkTitle="",secondaryLink="",credits=None,RESPONSE=None,imageTag="",bgcolour=""):
+def manage_addECHO_collection(self,id,title,label,description="",contentType="",responsible="",weight=0,sortfield="weight",coords="",secondaryLinkTitle="",secondaryLink="",credits=None,RESPONSE=None,imageTag="",bgcolour="",isVisible=True):
"""add a echo collection"""
- newObj=ECHO_collection(id,title,label,description,contentType,responsible,credits,weight,sortfield,coords,secondaryLinkTitle=secondaryLinkTitle,secondaryLink=secondaryLink,imageTag=imageTag,bgcolour="")
+ newObj=ECHO_collection(id,title,label,description,contentType,responsible,credits,weight,sortfield,coords,secondaryLinkTitle=secondaryLinkTitle,secondaryLink=secondaryLink,imageTag=imageTag,bgcolour="",isVisible=isVisible)
self._setObject(id,newObj)
@@ -3457,8 +3551,10 @@ class ECHO_root(Folder,Persistent,Implic
"""ret attribute if existing"""
try:
- return getattr(found,field).decode('ascii','ignore')
+ return getattr(found,field)#.decode('utf-8','ignore')
except:
+ logging.error("can't: decode: %s"%repr(field))
+ logging.error(" %s %s"%(sys.exc_info()[0],sys.exc_info()[1]))
return ""
security.declarePublic('getImageTag')
@@ -3695,7 +3791,10 @@ class ECHO_root(Folder,Persistent,Implic
def formatAscii(self,str,url=None):
"""ersetze ascii umbrueche durch
"""
- #url=None
+
+ if not str:
+ return ""
+
if url:
retStr=""
@@ -3707,9 +3806,10 @@ class ECHO_root(Folder,Persistent,Implic
retStr+="""%s
"""%(strUrl,word)
str=retStr
if str:
- return re.sub(r"[\n]","
",str)
+ str = re.sub(r"[\n]","
",str)
+ return unicodify(str)
else:
- return ""
+ return u""
link2html=vlp_xmlhelpers.link2html
related2html=vlp_xmlhelpers.related2html
@@ -3846,6 +3946,20 @@ class ECHO_root(Folder,Persistent,Implic
self.REQUEST.RESPONSE.setHeader("Content-Type", "text/xml")
self.REQUEST.RESPONSE.write(ret)
+ def getCollectionsXML(self,viewerType=None,filter=None):
+ """gebe collections aus"""
+ ret="""
+ """
+ for resource in self.ZopeFind(self,obj_metatypes=['ECHO_collection','ECHO_group'],search_sub=1):
+
+ echo_url=resource[1].absolute_url()
+
+ ret+="""\n"""%urllib.quote(echo_url,safe='/:?')
+ ret +="""\n"""
+
+ self.REQUEST.RESPONSE.setHeader("Content-Type", "text/xml")
+ self.REQUEST.RESPONSE.write(ret)
+
def getFullTextsXML(self,viewerType=None,filter=None):
"""gebe all ressourcen aus"""
ret="""
@@ -4080,6 +4194,8 @@ class ECHO_linkList(ZopePageTemplate,ECH
self.ZBindings_edit(self._default_bindings)
if text is None:
text = ''
+ if content_type is None:
+ content_type = self.content_type
self.pt_edit(text, contentType)