--- ECHO_content/ECHO_collection.py 2004/04/05 12:07:57 1.29
+++ ECHO_content/ECHO_collection.py 2004/05/06 13:41:41 1.57
@@ -26,14 +26,21 @@ 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
import xml.dom.minidom
from ECHO_graphicalOverview import javaHandler,javaScriptMain
+import ECHO_helpers
#List of different types for the graphical linking viewer
viewClassificationListMaster=['view point','area']
@@ -195,11 +202,6 @@ class ECHO_layoutTemplate(ZopePageTempla
meta_type="ECHO_layoutTemplate"
- manage_options=ZopePageTemplate.manage_options+(
- {'label':'Set back to Standard','action':'changeECHO_layoutTemplateToStandardForm'},
- )
-
-
def __init__(self, id, text=None, content_type=None,EchoType=None):
self.id = str(id)
@@ -212,12 +214,7 @@ class ECHO_layoutTemplate(ZopePageTempla
text = open(self._default_content_fn).read()
self.pt_edit(text, content_type)
- def changeECHO_layoutTemplateToStandardForm(self):
- """change form"""
- pt=PageTemplateFile('Products/ECHO_content/zpt/changeECHO_pageTemplateWeightForm.zpt').__of__(self)
- return pt()
-
- def changeECHO_pageTemplateWeight(self,templateKind):
+
"""change form"""
@@ -237,6 +234,7 @@ def manage_addECHO_layoutTemplate(self,
EchoTypes=EchoType
for singleType in EchoTypes:
+
id = str(singleType)+"_template"
if REQUEST is None:
self._setObject(id, ECHO_layoutTemplate(id, text,EchoType=singleType))
@@ -273,6 +271,15 @@ 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"""
return content_html(self,'resource')
@@ -319,6 +326,11 @@ class ECHO_resource(Folder):
except:
return []
+ def getContentType(self):
+ try:
+ return self.contentType
+ except:
+ return ""
def ECHO_resource_config(self):
"""Main configuration"""
@@ -336,9 +348,10 @@ class ECHO_resource(Folder):
def changeECHO_resource(self,metalink,link,title,label,description,contentType,responsible,weight,viewClassification="",coords=None,credits=None,RESPONSE=None):
"""Änderung der Properties"""
-
- coordsnew=[ string.split(x,",") for x in coords]
-
+ try:
+ coordsnew=[ string.split(x,",") for x in coords]
+ except:
+ coordsnew=[]
setECHO_collectionInformation(self,title,label,description,contentType,responsible,credits,weight,coordsnew)
@@ -441,6 +454,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')
@@ -478,7 +499,10 @@ class ECHO_externalLink(Folder):
def changeECHO_externalLink(self,link,title,label,description,contentType,responsible,weight,coords=None,credits=None,RESPONSE=None):
"""Änderung der Properties"""
- coordsnew=[ string.split(x,",") for x in coords]
+ try:
+ coordsnew=[ string.split(x,",") for x in coords]
+ except:
+ coordsnew=[]
setECHO_collectionInformation(self,title,label,description,contentType,responsible,credits,weight,coords)
@@ -521,12 +545,64 @@ 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'
+ 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)
+ return pt()
+ def createRessourcesFromXML(self,fileupload):
+ """read an XML file for generating resources"""
+ dom=xml.dom.minidom.parse(fileupload)
+ ret="
Added
"
+ for resource in dom.getElementsByTagName('resource'):
+ link=getText(resource.getElementsByTagName('link')[0].childNodes)
+ label=getText(resource.getElementsByTagName('label')[0].childNodes)
+ #splitted=link.split("?")[0].split("/")
+ #id=splitted[len(splitted)-1].encode('ascii')
+ id=re.sub(" ","_",label).encode('ascii')
+
+ ret+=""+label+"
"
+ manage_addECHO_resource(self,id,label.encode('ascii'),label.encode('ascii'),"","","",link.encode('ascii'),"","")
+ return ret
def getImageTag(self):
"""GetTag"""
try:
@@ -541,7 +617,21 @@ class ECHO_collection(Folder, Persistent
return "done"
except:
return None
-
+
+ def getSecondaryLink(self):
+ """secondary link"""
+ try:
+ return self.secondaryLink
+ except:
+ return ""
+
+ def getSecondaryLinkTitle(self):
+ """secondary link"""
+ try:
+ return self.secondaryLinkTitle
+ except:
+ return ""
+
def getCollectionTreeXML(self):
"""Tree as XML"""
@@ -551,7 +641,7 @@ class ECHO_collection(Folder, Persistent
for entry in object.__dict__.keys():
element=getattr(object,entry)
try:
- if element.meta_type=="ECHO_collection":
+ if element.meta_type in ["ECHO_collection","ECHO_group"]:
collections+=""
collections+=getCollection(element,depth)+"\n"
except:
@@ -567,7 +657,11 @@ class ECHO_collection(Folder, Persistent
dynamical=""
for ob in self.getGraphicCoords():
- dynamical+="""Coords.push(new Coord('%s', Img, %s));\n"""%(ob[1],ob[0])
+ if ob[4][4] == "":
+ dynamical+="""Coords.push(new Coord('%s', Img, %s));\n"""%(ob[1],ob[0])
+ else:
+ 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
return ret
@@ -599,21 +693,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
@@ -630,7 +724,7 @@ class ECHO_collection(Folder, Persistent
return []
- def __init__(self,id,title,label,description,contentType,responsible,credits,weight,sortfield,coords,imageTag=""):
+ def __init__(self,id,title,label,description,contentType,responsible,credits,weight,sortfield,coords,secondaryLinkTitle,secondaryLink,imageTag="",bgcolour=""):
#print "CO",coords
self.id = id
@@ -646,12 +740,16 @@ class ECHO_collection(Folder, Persistent
self.sortfield=sortfield
coordsnew=[ string.split(x,",") for x in coords]
self.coords=coordsnew
-
+ self.secondaryLinkTitle=secondaryLinkTitle
+ self.secondaryLink=secondaryLink
+ self.bgcolour=bgcolour
+
manage_options = Folder.manage_options+(
{'label':'Main Config','action':'ECHO_collection_config'},
{'label':'Rerender Links','action':'ECHO_rerenderLinksMD'},
{'label':'Graphics','action':'ECHO_graphicEntry'},
+ {'label':'create resources from XML','action':'createRessourcesFromXMLForm'},
)
@@ -704,15 +802,34 @@ class ECHO_collection(Folder, Persistent
security.declarePublic('changeECHO_collection')
- def changeECHO_collection(self,title,label,description,contentType,responsible,weight,credits=None,sortfield="weight",coords=None,RESPONSE=None,imageTag=""):
+ def getBgcolour(self):
+ """colour"""
+ if hasattr(self,'bgcolour') and not (self.bgcolour==""):
+ return self.bgcolour
+ 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=""):
"""Änderung der Properties"""
+ self.secondaryLink=secondaryLink
+ self.secondaryLinkTitle=secondaryLinkTitle
self.imageTag=imageTag
- coordsnew=[ string.split(x,",") for x in coords]
-
+ self.bgcolour=bgcolour
+
+ if coords:
+ coordsnew=[ string.split(x,",") for x in coords]
+ self.coords=coordsnew[0:]
+ else:
+ coordsnew=None
+ self.coords=None
+
setECHO_collectionInformation(self,title,label,description,contentType,responsible,credits,weight,coordsnew)
-
- self.coords=coordsnew[0:]
+ try:
+ self.coords=coordsnew[0:] # HACK fehler in setECHO_collection
+ except:
+ """none"""
+
self.sortfield=sortfield
if RESPONSE is not None:
@@ -734,11 +851,15 @@ class ECHO_collection(Folder, Persistent
if 'index.html' in self.__dict__.keys():
return getattr(self,'index.html')()
+
elif 'overview' in self.__dict__.keys():
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()
@@ -767,53 +888,25 @@ class ECHO_collection(Folder, Persistent
if len(coordtemp)>3:
coord=coordtemp[0:4]
if hasattr(object,'label') and not object.label=="":
- ids.append([string.join(coord,", "),object.getId(),object.label,object])
+ ids.append([string.join(coord,", "),object.getId(),object.label,object,coordtemp])
elif hasattr(object,'title'):
if not object.title=="":
- ids.append([string.join(coord,", "),object.getId(),object.title,object])
+ ids.append([string.join(coord,", "),object.getId(),object.title,object,coordtemp])
else:
- ids.append([string.join(coord,", "),object.getId(),object.getId(),object])
+ ids.append([string.join(coord,", "),object.getId(),object.getId(),object,coordtemp])
else:
- ids.append([string.join(coord,", "),object.getId(),object.getId(),object])
+ ids.append([string.join(coord,", "),object.getId(),object.getId(),object,coordtemp])
except:
"""nothing"""
return ids
- def getSubCols(self,sortfield="weight"):
- subColTypes=['ECHO_collection','ECHO_externalLink','ECHO_resource']
- ids=[]
- for entry in self.__dict__.keys():
- object=getattr(self,entry)
- try:
- if object.meta_type in subColTypes:
- ids.append(object)
-
- except:
- """nothing"""
- try:
- sortfield=self.sortfield
- except:
- """nothing"""
-
- tmplist=[]
- for x in ids:
- if hasattr(x,sortfield):
- try:
- x=int(x)
- except:
- """nothing"""
- tmp=getattr(x,sortfield)
- else:
- tmp=10000000
- tmplist.append((tmp,x))
- tmplist.sort()
- return [x for (key,x) in tmplist]
+
+
+ getSubCols = ECHO_helpers.getSubCols
-
-
@@ -823,21 +916,136 @@ def manage_addECHO_collectionForm(self):
return pt()
-def manage_addECHO_collection(self,id,title,label,description,contentType,responsible,weight,sortfield,coords="",credits=None,RESPONSE=None,imageTag=""):
+def manage_addECHO_collection(self,id,title,label,description,contentType,responsible,weight,sortfield,coords="",secondaryLinkTitle="",secondaryLink="",credits=None,RESPONSE=None,imageTag="",bgcolour=""):
"""add a echo collection"""
- newObj=ECHO_collection(id,title,label,description,contentType,responsible,credits,weight,sortfield,coords,imageTag)
+ newObj=ECHO_collection(id,title,label,description,contentType,responsible,credits,weight,sortfield,coords,secondaryLinkTitle=secondaryLinkTitle,secondaryLink=secondaryLink,imageTag=imageTag,bgcolour="")
self._setObject(id,newObj)
if RESPONSE is not None:
RESPONSE.redirect('manage_main')
+class ECHO_group(ECHO_collection):
+ """ECHO Gruppe"""
+ meta_type="ECHO_group"
+
+ manage_options = Folder.manage_options+(
+ {'label':'Main Config','action':'ECHO_group_config'},
+ {'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"""
+
+ if not hasattr(self,'weight'):
+ self.weight=""
+
+ if not hasattr(self,'sortfield'):
+ self.sortfield="weight"
+
+ if not hasattr(self,'coords'):
+ self.coords=[]
+
+ pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_group.zpt').__of__(self)
+ return pt()
+
+ def changeECHO_group(self,title,label,description,contentType,responsible,weight,secondaryLink,secondaryLinkTitle,credits=None,sortfield="weight",coords=None,RESPONSE=None,imageTag="",bgcolour="",logo=""):
+ """Änderung der Properties"""
+
+ self.secondaryLink=secondaryLink
+ self.secondaryLinkTitle=secondaryLinkTitle
+ self.imageTag=imageTag
+ self.bgcolour=bgcolour
+ self.logo=logo
+
+ if coords:
+ coordsnew=[ string.split(x,",") for x in coords]
+ self.coords=coordsnew[0:]
+ else:
+ coordsnew=None
+ self.coords=None
+
+ setECHO_collectionInformation(self,title,label,description,contentType,responsible,credits,weight,coordsnew)
+
+
+
+ self.sortfield=sortfield
+
+ if RESPONSE is not None:
+ RESPONSE.redirect('manage_main')
+
+ def getLogo(self):
+ """logo ausgeben"""
+ try:
+ return self.logo
+ except:
+ return "ECHO_groups"
+
+ def content_html(self):
+ """template fuer content"""
+ return content_html(self,'group')
+
+
+
+def manage_addECHO_groupForm(self):
+ """Add group form"""
+ pt=PageTemplateFile('Products/ECHO_content/zpt/AddECHO_groupForm.zpt').__of__(self)
+ return pt()
+
+
+def manage_addECHO_group(self,id,title,label,description,contentType,responsible,weight,sortfield,coords="",secondaryLinkTitle="",secondaryLink="",credits=None,RESPONSE=None,imageTag="",bgcolour="",logo=""):
+ """add a echo group"""
+
+
+ newObj=ECHO_group(id,title,label,description,contentType,responsible,credits,weight,sortfield,coords,secondaryLinkTitle=secondaryLinkTitle,secondaryLink=secondaryLink,imageTag=imageTag,bgcolour="")
+
+ setattr(newObj,'logo',logo)
+ self._setObject(id,newObj)
+
+ if RESPONSE is not None:
+ RESPONSE.redirect('manage_main')
+
+
+
class ECHO_root(Folder,Persistent,Implicit):
"""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"
def contentTypeSelector_HTML(self,selected=None):
"""give type selector"""
@@ -847,7 +1055,7 @@ class ECHO_root(Folder,Persistent,Implic
retStr="