--- ECHO_content/ECHO_collection.py 2004/04/16 15:42:52 1.45
+++ ECHO_content/ECHO_collection.py 2004/05/07 14:51:02 1.65
@@ -26,9 +26,15 @@ from Products.PageTemplates.PageTemplate
from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate
from Globals import Persistent, package_home
from Acquisition import Implicit
-
-#from psycopg import libpq
-#from pyPgSQL import libpq
+from ECHO_helpers import displayTypes
+try:
+ from psycopg import libpq
+except:
+ try:
+ from pyPgSQL import libpq
+ except:
+ print "ECHO_collection: Warning - No libpq imported!"
+
import xml.dom.minidom
import urllib
@@ -70,6 +76,28 @@ def getText(nodelist):
return rc
+def sendFile(self, filename, type):
+ """sends an object or a local file (in the product) as response"""
+ paths = filename.split('/')
+ object = self
+ # look for an object called filename
+ for path in paths:
+ if hasattr(object, path):
+ object = getattr(object, path)
+ else:
+ object = None
+ break
+ if object:
+ # if the object exists then send it
+ object()
+ else:
+ # send a local file with the given content-type
+ fn = os.path.join(package_home(globals()), filename)
+ self.REQUEST.RESPONSE.setHeader("Content-Type", type)
+ self.REQUEST.RESPONSE.write(file(fn).read())
+ return
+
+
def readMetadata(url):
"""Methoden zum Auslesen der Metadateninformation zu einer Resource
Vorerst noch Typ bib"""
@@ -266,6 +294,13 @@ class ECHO_resource(Folder):
viewClassificationList=viewClassificationListMaster
getSubCols = ECHO_helpers.getSubCols
+ def getTitle(self):
+ """title"""
+ return self.title.encode('utf-8')
+
+ def getLabel(self):
+ """title"""
+ return self.label.encode('utf-8')
def content_html(self):
"""template fuer content"""
@@ -313,6 +348,11 @@ class ECHO_resource(Folder):
except:
return []
+ def getContentType(self):
+ try:
+ return self.contentType
+ except:
+ return ""
def ECHO_resource_config(self):
"""Main configuration"""
@@ -336,7 +376,7 @@ class ECHO_resource(Folder):
coordsnew=[]
setECHO_collectionInformation(self,title,label,description,contentType,responsible,credits,weight,coordsnew)
-
+ self.viewClassification=viewClassification
self.coords=coordsnew[0:]
self.link=link
self.metalink=metalink
@@ -436,6 +476,14 @@ class ECHO_externalLink(Folder):
security=ClassSecurityInfo()
meta_type='ECHO_externalLink'
+ def getTitle(self):
+ """title"""
+ return self.title.encode('utf-8')
+
+ def getLabel(self):
+ """title"""
+ return self.label.encode('utf-8')
+
def content_html(self):
"""template fuer content"""
return content_html(self,'externalLink')
@@ -519,12 +567,48 @@ def manage_addECHO_externalLink(self,id,
RESPONSE.redirect('manage_main')
+class ECHO_link(ECHO_externalLink):
+ """external_link"""
+
+ meta_type="ECHO_link"
+
+
+ def content_html(self):
+ """template fuer content"""
+ return content_html(self,'link')
+
+def manage_addECHO_linkForm(self):
+ """Form for external Links"""
+ pt=PageTemplateFile('Products/ECHO_content/zpt/AddECHO_linkForm.zpt').__of__(self)
+ return pt()
+
+
+def manage_addECHO_link(self,id,title,label,description,contentType,responsible,link,weight,coords=None,credits=None,RESPONSE=None):
+ """Add an external Link"""
+
+ newObj=ECHO_link(id,link,title,label,description,contentType,responsible,credits,weight,coords)
+
+ self._setObject(id,newObj)
+
+ if RESPONSE is not None:
+ RESPONSE.redirect('manage_main')
+
class ECHO_collection(Folder, Persistent, Implicit):
"""ECHO Collection"""
security=ClassSecurityInfo()
meta_type='ECHO_collection'
+ displayTypes=displayTypes
+
+ def getTitle(self):
+ """title"""
+ return self.title.encode('utf-8')
+
+ def getLabel(self):
+ """title"""
+ return self.label.encode('utf-8')
+
def createRessourcesFromXMLForm(self):
"""form"""
pt=PageTemplateFile('Products/ECHO_content/zpt/createRessourcesFromXMLForm.zpt').__of__(self)
@@ -541,7 +625,7 @@ class ECHO_collection(Folder, Persistent
id=re.sub(" ","_",label).encode('ascii')
ret+="
"+label+"
"
- manage_addECHO_resource(self,id,label,label,"","","",link,"","")
+ manage_addECHO_resource(self,id,label.encode('ascii'),label.encode('ascii'),"","","",link.encode('ascii'),"","")
return ret
def getImageTag(self):
"""GetTag"""
@@ -582,23 +666,31 @@ class ECHO_collection(Folder, Persistent
element=getattr(object,entry)
try:
if element.meta_type in ["ECHO_collection","ECHO_group"]:
- collections+=""
+ collections+=""
collections+=getCollection(element,depth)+"\n"
except:
"""nothing"""
return collections
-
- return ""+getCollection(self)+""
+ ret=""""""
+ return ret+""+getCollection(self)+""
def createJavaScript(self):
"""CreateJava"""
- ret=javaScriptMain
+ #ret=javaScriptMain
+ ret=""
- dynamical=""
+ dynamical="\n"
for ob in self.getGraphicCoords():
- dynamical+="""Coords.push(new Coord('%s', Img, %s));\n"""%(ob[1],ob[0])
- ret+=javaHandler%dynamical
+ if ob[4][4] == "":
+ #dynamical+="""Coords.push(new Coord('%s', Img, %s));\n"""%(ob[1],ob[0])
+ dynamical+="""addArea('%s', 'overview', %s, 'area');\n"""%(ob[1],ob[0])
+ else:
+ dynamical+="""addArea('%s', 'overview', %s, 'arrow');\n"""%(ob[1],ob[0])
+ #dynamical+="""Coords.push(new Coord('%s', Img, %s));//%s\n"""%(ob[1],ob[0],ob[4][4])
+ #dynamical+="ShowArrow(new getObj('i.%s'),Img,%s);\n"%(ob[1],ob[0])
+ #ret+=javaHandler%dynamical
+ ret+=dynamical
return ret
security.declarePublic('getCreditObject')
@@ -629,21 +721,21 @@ class ECHO_collection(Folder, Persistent
return ret
security.declarePublic('ECHO_rerenderLinksMD')
- def ECHO_rerenderLinksMD(self):
+ def ECHO_rerenderLinksMD(self,obj=None):
"""Rerender all Links"""
-
- for entry in self.__dict__.keys():
- object=getattr(self,entry)
-
+ if not obj:
+ obj = self
- try:
+ entries=obj.ZopeFind(obj,obj_metatypes=['ECHO_resource','ECHO_collection'])
+
+ 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])
+
- if object.meta_type == 'ECHO_resource':
-
- object.ECHO_getResourceMD(template="no")
-
- except:
- """nothing"""
return "Rerenderd all links to resources in: "+self.title
@@ -792,8 +884,10 @@ class ECHO_collection(Folder, Persistent
return self.showOverview()
elif hasattr(self,'collection_index_template'):
return self.collection_index_template()
+ elif hasattr(self,'main_index_template'):
+ return self.main_index_template()
- pt=PageTemplateFile('Products/ECHO_content/zpt/ECHO_content_standard.zpt').__of__(self)
+ pt=PageTemplateFile('Products/ECHO_content/zpt/ECHO_main_index_template_standard.zpt').__of__(self)
pt.content_type="text/html"
return pt()
@@ -808,6 +902,20 @@ class ECHO_collection(Folder, Persistent
else:
return []
+ def area_img(self):
+ """area image"""
+ sendFile(self, 'images/red.gif', 'image/gif')
+ return
+
+ def hl_lib_js(self):
+ """javascript"""
+ sendFile(self, 'js/hl_lib.js', 'text/plain')
+ return
+
+ def js_lib_js(self):
+ """javascript"""
+ sendFile(self, 'js/js_lib.js', 'text/plain')
+ return
def getGraphicCoords(self):
@@ -821,16 +929,14 @@ class ECHO_collection(Folder, Persistent
for coordtemp in object.coords:
if len(coordtemp)>3:
coord=coordtemp[0:4]
+ label=""
if hasattr(object,'label') and not object.label=="":
- ids.append([string.join(coord,", "),object.getId(),object.label,object])
- elif hasattr(object,'title'):
- if not object.title=="":
- ids.append([string.join(coord,", "),object.getId(),object.title,object])
- else:
- ids.append([string.join(coord,", "),object.getId(),object.getId(),object])
- else:
- ids.append([string.join(coord,", "),object.getId(),object.getId(),object])
-
+ label=object.label
+ elif hasattr(object,'title') and not object.title=="":
+ label=object.title
+ else:
+ label=object.getId()
+ ids.append([string.join(coord,", "),object.getId(),label,object,coordtemp,object.getViewClassification()])
except:
"""nothing"""
@@ -870,6 +976,29 @@ class ECHO_group(ECHO_collection):
{'label':'Rerender Links','action':'ECHO_rerenderLinksMD'},
{'label':'Graphics','action':'ECHO_graphicEntry'},
)
+
+ def index_html(self):
+ """standard page"""
+ displayedObjects=self.ZopeFind(self,obj_metatypes=displayTypes)
+ #if (len(displayedObjects)==1) and (displayedObjects[0][1].meta_type=="ECHO_collection"): # nur ein Object dann redirect auf dieses Object
+ # return self.REQUEST.RESPONSE.redirect(displayedObjects[0][1].absolute_url())
+
+ if 'index.html' in self.__dict__.keys():
+ return getattr(self,'index.html')()
+
+ elif 'overview' in self.__dict__.keys():
+ return self.showOverview()
+ elif hasattr(self,'group_index_template'):
+ return self.group_index_template()
+ elif hasattr(self,'collection_index_template'):
+ return self.collection_index_template()
+ elif hasattr(self,'main_index_template'):
+ return self.main_index_template()
+
+ pt=PageTemplateFile('Products/ECHO_content/zpt/ECHO_main_index_template_standard.zpt').__of__(self)
+ pt.content_type="text/html"
+ return pt()
+
def ECHO_group_config(self):
"""Main configuration"""
@@ -947,6 +1076,13 @@ class ECHO_root(Folder,Persistent,Implic
"""ECHO Root Folder"""
meta_type="ECHO_root"
+
+ def getImageTag(self):
+ """needed by main_template"""
+ return ""
+ secondaryLink="" #needed by main_template
+ secondaryLinkTitle="" #needed by main_template
+
def getBgcolour(self):
"""hack"""
return "#dddddd"
@@ -958,14 +1094,22 @@ class ECHO_root(Folder,Persistent,Implic
else:
retStr="