--- ECHO_content/ECHO_collection.py 2007/02/20 15:55:21 1.285
+++ ECHO_content/ECHO_collection.py 2007/07/24 09:11:45 1.291
@@ -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
@@ -74,8 +75,8 @@ 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
@@ -89,9 +90,9 @@ def logger(txt,method,txt2):
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=""):
@@ -199,6 +200,8 @@ class ECHO_locale(ZopePageTemplate):
self.title=title
self.label=label
if text:
+ if content_type is None:
+ content_type = self.content_type
self.pt_edit(text, content_type)
self.id=id
@@ -217,6 +220,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:
@@ -306,6 +311,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)
@@ -363,7 +370,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'))
@@ -1176,8 +1183,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
@@ -1330,7 +1355,7 @@ class ECHO_resource(CatalogAware,Folder,
#caching
if not hasattr(self,'_v_mapHash'): #noch keine cachevariable
self._v_mapHash={}
-
+
tmp=self._v_mapHash.get(ct,None)
@@ -1519,7 +1544,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()):
@@ -1771,8 +1796,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'
-
+ self.linkType = linkType # Linktypen 'otherPresentation','external'
+
def ECHO_externalLink_config(self):
"""Main configuration"""
@@ -1793,20 +1818,32 @@ class ECHO_externalLink(Folder,ECHO_basi
setECHO_collectionInformation(self,title,label,description,contentType,responsible,credits,weight)
self.link=link
- self.linkType = linkType
+ 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'
+ 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 = (
@@ -1819,7 +1856,7 @@ class ECHO_externalLink(Folder,ECHO_basi
"""standard page"""
return self.REQUEST.RESPONSE.redirect(self.link)
-
+
def manage_addECHO_externalLinkForm(self):
"""Form for external Links"""
@@ -1968,7 +2005,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 ""
@@ -2133,16 +2170,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')
@@ -2599,9 +2636,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)
@@ -2669,7 +2706,7 @@ class ECHO_collection(CatalogAware, Fold
self.secondaryLinkTitle=secondaryLinkTitle
self.secondaryLink=secondaryLink
self.bgcolour=bgcolour
- self.isVisible=isVisible
+ self.isVisible=isVisible
manage_options = Folder.manage_options+ Cacheable.manage_options+(
@@ -2725,7 +2762,7 @@ class ECHO_collection(CatalogAware, Fold
self.isAlwaysClickable=isAlwaysClickable
self.prefix=prefix[0:]
self.suffix=suffix[0:]
- self.setIsVisible(isVisible)
+ self.setIsVisible(isVisible)
setECHO_collectionInformation(self,title,label,description,contentType,responsible,credits,weight)
@@ -2826,9 +2863,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
@@ -3716,7 +3755,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=""
@@ -3728,9 +3770,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
@@ -4101,6 +4144,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)