--- ECHO_content/ECHO_Nav.py 2004/11/24 15:20:14 1.50
+++ ECHO_content/ECHO_Nav.py 2005/10/23 09:46:26 1.59
@@ -1,5 +1,6 @@
# Objekte zur Erzeugung von Navigationselementen
+from AccessControl import ClassSecurityInfo
from Globals import DTMLFile
from OFS.Image import Image,cookId
from OFS.Folder import Folder
@@ -13,7 +14,7 @@ import os.path
from Globals import package_home
import urllib
from ECHO_helpers import *
-from ECHO_collection import content_html
+from ECHO_collection import content_html
from types import *
@@ -27,7 +28,7 @@ import re
import string
from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate
import os.path
-from Globals import package_home
+
import urllib
from ECHO_helpers import displayTypes,checkOnlyOneInGroup
from ECHO_collection import content_html
@@ -297,20 +298,32 @@ def manage_addECHO_sqlElement(self,id,ti
RESPONSE.redirect('manage_main')
-class ECHO_pageTemplate(ZopePageTemplate):
+class ECHO_pageTemplate(ZopePageTemplate,ECHO_basis):
"""pageTemplate Objekt"""
meta_type="ECHO_pageTemplate"
-
+ security=ClassSecurityInfo()
+
+
_default_content_fn = os.path.join(package_home(globals()),
'html/ECHO_pageTemplateDefault.html')
- manage_options=ZopePageTemplate.manage_options+(
+ manage_options=ZopePageTemplate.manage_options+ECHO_basis.manage_options+(
{'label':'Main Config','action':'changeECHO_pageTemplateMainForm'},
+ {'label':'Graphic Coords','action':'ECHO_graphicEntry'},
)
+ security.declarePublic('content_html')
+
+ def addChanges(self):
+ """do nothing leere methode, notwendig, da bei veerbung
+ von dieser klasse nur ueberschrieben werden kann,
+ falls methode per url aufgerufen werden soll"""
+
+ return True
+
def content_html(self):
- """content_html"""
- return content_html(self,'pageTemplate')
+ """content_html"""
+ return content_html(self,'pageTemplate')
def changeECHO_pageTemplateMainForm(self):
"""change"""
@@ -329,14 +342,7 @@ class ECHO_pageTemplate(ZopePageTemplate
if RESPONSE is not None:
RESPONSE.redirect('manage_main')
-
- def getLabel(self):
- if hasattr(self,'label'):
- return self.label.encode('utf-8')
-
- else:
- return 0
-
+
def getWeight(self):
"""get weight"""
if hasattr(self,'weight'):
@@ -414,39 +420,72 @@ class ECHO_navigation(Folder):
"""Navigations Element"""
meta_type="ECHO_Navigation"
+ def getNavInfo(self):
+ """root informationen"""
+ if hasattr(self,'logo_image'):
+ if hasattr(self.logo_image,'tag'):
+ imageTag=self.logo_image.tag()
+ else:
+ imageTag=''
+ return (self.title,imageTag)
+
+ def linkBar(self,parent):
+ """linkbarer balken"""
+ str=""
+
+
+ while not(parent.meta_type == "ECHO_root"):
+ fragment="""%s"""%(parent.absolute_url(),parent.label)
+ str=fragment+"/"+str
+ parent=parent.aq_parent
+
+ return str
+
+ def decode(self,str):
+ """decoder"""
+ if not str:
+ return ""
+ if type(str)==StringType:
+
+ return str
+ else:
+ try:
+ return str.encode('utf-8')
+ except:
+ return str.encode('latin-1')
def ECHOFormatListStr(self,list,search="\n",replace="
"):
"""formatiert liste im str"""
- if list:
- return re.sub(search,replace,list)
- else:
- return
+ if list:
+ return re.sub(search,replace,list)
+ else:
+ return
def ECHO_cacheManageForm(self):
- """change form"""
- pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','ECHO_cacheManageForm')).__of__(self)
- pt.content_type="text/html"
- return pt()
+ """change form"""
+ pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','ECHO_cacheManageForm')).__of__(self)
+ pt.content_type="text/html"
+ return pt()
def ECHO_cacheManage(self,cacheManagerName=None,deleteCache=None, activateCache=None,RESPONSE=None):
- """cachemanager"""
- if cacheManagerName=="": chacheManagerName=None
-
- self.cacheManagerName=cacheManagerName
- self.setCache(managerName=cacheManagerName)
-
- if deleteCache:
+ """cachemanager"""
+ if cacheManagerName=="": chacheManagerName=None
+
+ self.cacheManagerName=cacheManagerName
+ self.setCache(managerName=cacheManagerName)
+
+ if deleteCache:
try:
- self.deleteCache()
+ self.deleteCache()
except:
for roots in self.ZopeFind(self,obj_metatypes=['ECHO_root'],search_sub=1):
roots[1].deleteCache()
- self.activateCache=activateCache
+ self.activateCache=activateCache
- if RESPONSE is not None:
- RESPONSE.redirect('manage_main')
-
+ if RESPONSE is not None:
+ RESPONSE.redirect('manage_main')
+
def setCache(self,obj=None,RESPONSE=None,managerName='CacheManager'):
"""setze alle collections auf cache = CacheManager"""
@@ -454,10 +493,9 @@ class ECHO_navigation(Folder):
if not obj:
obj = self
- entries=obj.ZopeFind(obj,obj_metatypes=['ECHO_collection'],search_sub=1)
+ entries=obj.ZopeFind(obj,obj_metatypes=['ECHO_collection','VLP_resource'],search_sub=1)
for entry in entries:
- #print entry[0]
entry[1].ZCacheable_setManagerId(managerName)
@@ -473,8 +511,8 @@ class ECHO_navigation(Folder):
return viewers
def getR(self):
- """re"""
- return self.REQUEST
+ """re"""
+ return self.REQUEST
def __init__(self,id,title,pathToHierarchy):
"""init"""
@@ -572,7 +610,7 @@ class ECHO_navigation(Folder):
tempObj=self.pathToHierarchy[0:]
tempObj=re.sub("/",".",tempObj)
tempObj="self.aq_parent"+tempObj
- #print tempObj
+ #print tempObj
objtemp=eval(tempObj)
obj=objtemp
@@ -618,13 +656,14 @@ class ECHO_navigation(Folder):
label=temp[x][1].title.encode('utf-8')
else:
label=temp[x][1].title.encode('utf-8')
-
+
if location:
+
loc=getattr(temp[x][1],'location','top')
if (loc==location):
- listNav.append((label,createPath(self.absolute_url(),temp[x][1].absolute_url()),temp[x][1],getattr(temp[x][1],'prefix',''),getattr(temp[x][1],'suffix','')))
+ listNav.append((label,createPath(self.absolute_url(),temp[x][1].absolute_url())+getattr(temp[x][1],'queryString',''),temp[x][1],getattr(temp[x][1],'prefix',''),getattr(temp[x][1],'suffix','')))
else:
- listNav.append((label,createPath(self.absolute_url(),temp[x][1].absolute_url()),temp[x][1],getattr(temp[x][1],'prefix',''),getattr(temp[x][1],'suffix','')))
+ listNav.append((label,createPath(self.absolute_url(),temp[x][1].absolute_url())+getattr(temp[x][1],'queryString',''),temp[x][1],getattr(temp[x][1],'prefix',''),getattr(temp[x][1],'suffix','')))
return listNav
@@ -634,7 +673,10 @@ class ECHO_navigation(Folder):
for x in hash.keys():
#print hash[x][1]
if hasattr(hash[x][1],field):
- weight=getattr(hash[x][1],field)
+ try:
+ weight=int(getattr(hash[x][1],field))
+ except:
+ weight=getattr(hash[x][1],field)
#print weight
else:
weight=0
@@ -686,8 +728,15 @@ class ECHO_navigation(Folder):
return 1
else:
return 0
+
-
+ def getPathStyle(self, item, style=""):
+ """returns a string with the given style + 'sel' if the path is already selected."""
+
+ if self.isSelectedPath(item):
+ return style + 'sel'
+ else:
+ return style
def buttonsFromHash(self,hash,start=None,orientation="horizontal"):
@@ -754,9 +803,9 @@ class ECHO_navigation(Folder):
return keys
def numberOfMainNavElements(self):
- """number of main elements"""
+ """number of main elements"""
- return len(self.barFromHash(self.createNavHash(0)))
+ return len(self.barFromHash(self.createNavHash(0)))
def startOfHierarchy(self,list):
splitted=self.pathToHierarchy.split("/")
@@ -769,7 +818,7 @@ class ECHO_navigation(Folder):
return nr+1
def secondNavElements(self):
- """Zweite Ordnung"""
+ """Zweite Ordnung Navigationselemente"""
hash=self.createNavHash(2,checkOnly="no")
actual_url=self.REQUEST['URL']
@@ -779,12 +828,12 @@ class ECHO_navigation(Folder):
splitted=ult_temp.split("/")
- #print "AU",self.absolute_url(),splitted
- #start=[splitted[2]] #orig
+ #print "AU",self.absolute_url(),splitted
+ #start=[splitted[2]] #orig
startNr= self.startOfHierarchy(splitted)
- start=[splitted[startNr]]
-
+ start=[splitted[startNr]]
+
#print start
keys=self.barFromHash(hash,start=start)
@@ -812,7 +861,7 @@ class ECHO_navigation(Folder):
#start=splitted[2:order+1] #orig
startNr= self.startOfHierarchy(splitted)
#print startNr
- start=splitted[startNr:order+startNr-1]
+ start=splitted[startNr:order+startNr-1]
#print start
keys=self.barFromHash(hash,start=start)