--- ECHO_content/ECHO_collection.py 2004/08/17 15:22:14 1.163
+++ ECHO_content/ECHO_collection.py 2004/09/01 19:11:36 1.169
@@ -270,6 +270,13 @@ def getText(nodelist):
rc = rc + node.data
return rc
+def getTextFromNode(nodename):
+ nodelist=nodename.childNodes
+ rc = ""
+ for node in nodelist:
+ if node.nodeType == node.TEXT_NODE:
+ rc = rc + node.data
+ return rc
def sendFile(self, filename, type):
"""sends an object or a local file (in the product) as response"""
@@ -513,6 +520,7 @@ class ECHO_copyright(Folder):
{'label':'Main Config','action':'ECHO_copyright_configForm'},
)
+
def ECHO_copyright_configForm(self):
"""change form"""
pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_copyright').__of__(self)
@@ -666,7 +674,7 @@ class ECHO_fullText(ZopePageTemplate):
# 3 handler functions
def start_element(name, attrs):
global retLex
- print name
+
retLex+=createTag(name,attrs)
def end_element(name):
global retLex
@@ -689,7 +697,7 @@ class ECHO_fullText(ZopePageTemplate):
p.CharacterDataHandler = char_data
p.Parse(lemmatized.encode('utf-8'),1)
- print repr(lemmatized.encode('utf-8'))
+ #print repr(lemmatized.encode('utf-8'))
return retLex
@@ -797,7 +805,7 @@ class ECHO_resource(Folder,Persistent):
"""showrdf"""
self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml')
ret="""\n\n"""
- ret+=self.getRDF(urn="echo:collectionroot")+"\n"
+ ret+=self.getRDF(urn="echo:colllectionroot")+"\n"
ret+=""""""
return ret
@@ -1019,6 +1027,7 @@ class ECHO_resource(Folder,Persistent):
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('/index.meta','',path)
@@ -1082,8 +1091,12 @@ class ECHO_resource(Folder,Persistent):
path=re.sub('http://foxridge.rz-berlin.mpg.de:8080','',path) # falls foxridge als server
path=re.sub('http://foxridge.rz-berlin.mpg.de','',path) # falls foxridge als server
path=re.sub('http://content.mpiwg-berlin.mpg.de','',path) # falls content als server
+
+ path=re.sub('http://vision.rz-berlin.mpg.de','',path) # falls vision als server
+
return ECHO_helpers.urlopen("http://nausikaa2.rz-berlin.mpg.de:86/cgi-bin/toc/admin/reg.cgi?path=%s"%path).readlines()
+
if RESPONSE is not None:
RESPONSE.redirect('manage_main')
@@ -2529,7 +2542,7 @@ class ECHO_collection(Folder, Persistent
else:
return "#dddddd"
- def changeECHO_collection(self,title,label,description,contentType,responsible,weight,secondaryLink,secondaryLinkTitle,credits=None,sortfield="weight",coords=None,RESPONSE=None,imageTag="",bgcolour="",viewClassification=None,location=None):
+ def changeECHO_collection(self,title,label,description,contentType,responsible,weight,secondaryLink,secondaryLinkTitle,credits=None,sortfield="weight",coords=None,RESPONSE=None,imageTag="",bgcolour="",viewClassification=None,location=None,isAlwaysClickable=None):
"""Aenderung der Properties"""
self.secondaryLink=secondaryLink
@@ -2538,6 +2551,7 @@ class ECHO_collection(Folder, Persistent
self.bgcolour=bgcolour
self.viewClassification=viewClassification
self.location=location
+ self.isAlwaysClickable=isAlwaysClickable
if coords:
coordsnew=[ string.split(x,",") for x in coords]
@@ -2557,7 +2571,15 @@ class ECHO_collection(Folder, Persistent
if RESPONSE is not None:
RESPONSE.redirect('manage_main')
+ def setAlwaysClickable(self,flag="yes"):
+ """set clickable"""
+ if flag=="yes":
+ self.isAlwaysClickable="yes"
+ else:
+ self.isAlwaysClickable=None
+ return flag
+
def showOverview(self):
"""overview"""
if 'ECHO_overview.html' in self.__dict__.keys():
@@ -2929,13 +2951,162 @@ def manage_addECHO_userFolderForm(self):
"""add a user folder form"""
return manage_addECHO_userFolder(self)
+
+
+def createNode(self,descrs,node):
+ name=descrs[node]['name']
+ type=descrs[node]['type']
+ urn=node
+ #print " will create",node.encode('utf-8')
+ id=re.sub('[^a-zA-Z0-9]','',name).encode('ascii','ignore')
+ #print "id",id
+ #print type
+ #self.REQUEST.RESPONSE.write("
%s
\n"%id)
+ if type=="CDLI_group":
+
+ try:
+ manage_addECHO_collection(self,id,name,name,"","","","","")
+
+ except:
+ self.REQUEST.RESPONSE.write("
Error%s
\n"%id)
+
+ self.REQUEST.RESPONSE.write("Creates:%s
\n"%getattr(self,id).absolute_url())
+
+ return type,getattr(self,id),urn
+
+ if type=="CDLI_item":
+ try:
+ manage_addECHO_resource(self,id,name,name,"","",urn,"","")
+ except:
+ self.REQUEST.RESPONSE.write("Error%s
\n"%id)
+ self.REQUEST.RESPONSE.write("Creates:%s
\n"%getattr(self,id).absolute_url())
+
+
+ return "XX"
+
+
class ECHO_root(Folder,Persistent,Implicit):
"""ECHO Root Folder"""
security=ClassSecurityInfo()
meta_type="ECHO_root"
+
+ ###CDLI adds -> have to be removed
+ def getTablet(self,item):
+ #print "getTablet"
+ try:
+ read=urllib.urlopen("http://enlil.museum.upenn.edu/cgi-bin/cdlget.plx?item=%s&project=ncdl"%item).read()
+ read=re.sub("\[search\]","search",read)
+ return read[read.find("")+6:read.rfind("")]
+ except:
+ return "Sorry no connection to the data server enlil.museum.upenn.edu
"
+ #return "http://enlil.museum.upenn.edu/cgi-bin/cdlget.plx?item=%s&project=ncdl"
+ ###END CDLI add
+
+ def generateFromRDFForm(self):
+ """change form"""
+ pt=PageTemplateFile('Products/ECHO_content/zpt/generateFromRDFForm').__of__(self)
+ pt.content_type="text/html"
+ return pt()
+
+ def generateFromRDF(self,file,startNode="/Cuneiform Corpus"):
+
+ """generate from RDF"""
+
+ global seqs
+ seqs={}
+ global descrs
+ descrs={}
+ global key
+ key=""
+ global value
+ value=""
+
+ def getEdges(seqs,urn):
+ """edges"""
+ ret=[]
+ return seqs[urn]
+
+ def createSubs(self,seqs,descrs,urn,level=0):
+ """create subs"""
+ for edge in getEdges(seqs,urn):
+ cn=createNode(self,descrs,edge)
+ if cn[0]=="CDLI_group":
+ createSubs(cn[1],seqs,descrs,cn[2],level+1)
+ return
+
+ def start_element(name,attrs):
+
+ global seqs
+ global descrs
+ global key
+ global value
+ seq=""
+ if name=="RDF:Seq":
+ key=attrs.get('RDF:about')
+ try: # teste ob liste
+ x=seqs[key][0]
+ except:
+
+ seqs[key]=[]
+
+
+ elif name=="RDF:Description":
+ key=attrs.get('RDF:about')
+
+
+ elif name=="RDF:li":
+ name=attrs.get('RDF:resource')
+ seqs[key].append(name)
+
+ elif name=="ECHONAVIGATION:type":
+ value="type"
+
+ elif name=="ECHONAVIGATION:name":
+ value="name"
+ elif name=="ECHONAVIGATION:linkClickable":
+ value="linkClickable"
+
+ def end_element(name):
+ """nothing"""
+ key=""
+ value=""
+
+ def char_data(data):
+ """nothing"""
+
+ data=re.sub("\n","",data)
+ try:
+ if descrs[key].has_key(value):
+ descrs[key][value]+=data
+ else:
+ descrs[key][value]=data
+ except:
+
+ descrs[key]={}
+ descrs[key][value]=data
+
+ p = xml.parsers.expat.ParserCreate()
+
+ p.StartElementHandler = start_element
+ p.EndElementHandler = end_element
+ p.CharacterDataHandler = char_data
+
+
+ p.ParseFile(file)
+ self.REQUEST.RESPONSE.write("Start
")
+ createSubs(self,seqs,descrs,startNode)
+ self.REQUEST.RESPONSE.write("done
")
+ #print "done"
+
+
+ return "done"
+
+
+
+
def changeWeightsInCollection(self):
"""change all lables of a collection"""
ret=""
@@ -2962,7 +3133,9 @@ class ECHO_root(Folder,Persistent,Implic
{'label':'Main Config','action':'ECHO_copyright_configForm'},
{'label':'Reload Metadata','action':'reloadMetaDataFromStorageWarning'},
{'label':'Change Weights','action':'changeWeights'},
- )
+ {'label':'Generate from RDF','action':'generateFromRDFForm'},
+
+)
def showRDF(self):
@@ -3228,6 +3401,26 @@ class ECHO_root(Folder,Persistent,Implic
return "changed all contenttypes in: "+self.title
+ def deleteCache(self,obj=None,RESPONSE=None):
+ """setze alle collections auf cache = CacheManager"""
+
+
+ if not obj:
+ obj = self
+
+ entries=obj.ZopeFind(obj,search_sub=1)
+
+ for entry in entries:
+ if hasattr(entry[1],'_v_hash'):
+ entry[1]._v_hash=None
+
+
+
+
+ return "changed all CM in: "+self.title
+
+
+
def ECHO_newViewerLink(self,obj=None):
"""change links (:86 faellt weg)"""
@@ -3293,9 +3486,15 @@ class ECHO_root(Folder,Persistent,Implic
for link in links:
link.tagName="a"
- ref=link.getAttribute("ref")
+ ref=link.getAttribute("ref")
+ pn=link.getAttribute("page")
+
if self.checkRef(ref):
- link.setAttribute("href",self.aq_parent.absolute_url()+"/vlp_coll?id="+ref)
+ if pn:
+ link.setAttribute("href",self.aq_parent.absolute_url()+"/vlp_coll?id="+ref+"&p="+pn)
+ else:
+ link.setAttribute("href",self.aq_parent.absolute_url()+"/vlp_coll?id="+ref)
+
newxml=dom.toxml('utf-8')
@@ -3308,19 +3507,24 @@ class ECHO_root(Folder,Persistent,Implic
def xml2html(self,str,quote="yes"):
"""link2html fuer VLP muss hier noch raus"""
- print str
+ #print str
+
if str:
if quote=="yes2":
str=re.sub("\&","&",str)
dom=xml.dom.minidom.parseString(str)
links=dom.getElementsByTagName("link")
-
for link in links:
link.tagName="a"
ref=link.getAttribute("ref")
+ pn=link.getAttribute("page")
+
if self.checkRef(ref):
- link.setAttribute("href",self.aq_parent.absolute_url()+"/vlp_coll?id="+ref)
+ if pn:
+ link.setAttribute("href",self.aq_parent.absolute_url()+"/vlp_coll?id="+ref+"&p="+pn)
+ else:
+ link.setAttribute("href",self.aq_parent.absolute_url()+"/vlp_coll?id="+ref)
str= dom.toxml()
@@ -3331,7 +3535,7 @@ class ECHO_root(Folder,Persistent,Implic
return ""
def checkRef(self,ref):
- dbs={'vl_literature':'AND CD LIKE \'%lise%\'','vl_technology':'','vl_people':''}
+ dbs={'vl_literature':'AND CD LIKE \'%lise%\'','vl_technology':'','vl_people':'','vl_sites':''}
res=None
for db in dbs.keys():