--- ECHO_content/ECHO_Nav.py 2004/06/25 11:02:16 1.35
+++ ECHO_content/ECHO_Nav.py 2004/08/31 17:26:05 1.42
@@ -89,14 +89,15 @@ class ECHO_ZCatalogElement(SimpleItem):
if RESPONSE is not None:
RESPONSE.redirect('manage_main')
-
def getKeywordList(self):
return getattr(self,self.catalogId).uniqueValuesFor(self.field)
def getNavList(self):
"""ausgabe der treffer list für navigation"""
+
records=self.getKeywordList()
+
if not records:
return []
else:
@@ -191,6 +192,8 @@ class ECHO_sqlElement(SimpleItem):
"""Erzeuge navigation aus sql-abfrage"""
meta_type="ECHO_sqlElement"
baseUrl=""
+
+
def __init__(self,id,title,query,field,searchField,baseUrl,weight,contentType):
"""init"""
@@ -203,7 +206,7 @@ class ECHO_sqlElement(SimpleItem):
else:
self.searchField=searchField
self.baseUrl=baseUrl
- self.weight=weight
+
self.content=contentType
manage_options= SimpleItem.manage_options+(
@@ -251,12 +254,30 @@ class ECHO_sqlElement(SimpleItem):
if RESPONSE is not None:
RESPONSE.redirect('manage_main')
- def searchQuery(self):
- return self.search(var=self.query)
+ def searchQuery(self,query=None,obj=None):
+ #presently a hack, tests if search is of the search method, if not look at the next level.
+ #
+ #return self.ZSQLsimpleSearch(var=self.query)
+ if not query:
+ query=self.query
+
+ if self.search.meta_type=="Z SQL Method":
+ return self.search(var=self.query)
+ else:
+ if self.aq_parent.aq_parent.search.meta_type=="Z SQL Method":
+ return self.aq_parent.aq_parent.search(var=self.query)
+ else:
+ return []
+
+
+
def getNavList(self):
"""ausgabe der treffer list für navigation"""
+
records=self.searchQuery()
+
+
if not records:
return []
else:
@@ -291,23 +312,24 @@ class ECHO_pageTemplate(ZopePageTemplate
'html/ECHO_pageTemplateDefault.html')
manage_options=ZopePageTemplate.manage_options+(
- {'label':'Main Config','action':'changeECHO_pageTemplateWeightForm'},
+ {'label':'Main Config','action':'changeECHO_pageTemplateMainForm'},
)
def content_html(self):
"""content_html"""
return content_html(self,'pageTemplate')
- def changeECHO_pageTemplateWeightForm(self):
+ def changeECHO_pageTemplateMainForm(self):
"""change"""
- pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_pageTemplateWeight.zpt').__of__(self)
+ pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_pageTemplateMain.zpt').__of__(self)
return pt()
- def changeECHO_pageTemplateWeight(self,weight,contentType,label,RESPONSE=None):
+ def changeECHO_pageTemplateMain(self,weight,contentType,label,description,RESPONSE=None):
"""change"""
self.weight=weight
self.contentType=contentType
self.label=label
+ self.description=description
if RESPONSE is not None:
RESPONSE.redirect('manage_main')
@@ -395,6 +417,51 @@ class ECHO_navigation(Folder):
"""Navigations Element"""
meta_type="ECHO_Navigation"
+ def ECHOFormatListStr(self,list,search="\n",replace="
"):
+ """formatiert liste im str"""
+ if list:
+ return re.sub(search,replace,list)
+ else:
+ return
+
+ def ECHO_cacheManageForm(self):
+ """change form"""
+ pt=PageTemplateFile('Products/ECHO_content/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:
+ self.deleteCache()
+
+ print activateCache
+ self.activateCache=activateCache
+
+ if RESPONSE is not None:
+ RESPONSE.redirect('manage_main')
+
+ def setCache(self,obj=None,RESPONSE=None,managerName='CacheManager'):
+ """setze alle collections auf cache = CacheManager"""
+
+
+ if not obj:
+ obj = self
+
+ entries=obj.ZopeFind(obj,obj_metatypes=['ECHO_collection'],search_sub=1)
+
+ for entry in entries:
+ #print entry[0]
+ entry[1].ZCacheable_setManagerId(managerName)
+
+
+ return "changed all CM in: "+self.title
+
displayedMetaTypes=displayTypes
def getImageViewers(self):
@@ -414,6 +481,8 @@ class ECHO_navigation(Folder):
manage_options = Folder.manage_options+(
{'label':'Main Config','action':'ECHO_navigationConfigForm'},
+ {'label':'Cache','action':'ECHO_cacheManageForm'},
+
)
def ECHO_navigationConfigForm(self):
@@ -448,25 +517,38 @@ class ECHO_navigation(Folder):
temp=self.pathToHierarchy[0:]
temp=re.sub("/",".",temp)
temp="self.aq_parent"+temp
+
objtemp=eval(temp)
nav={}
- obj=objtemp
-
- for keys in obj.__dict__.keys():
- x=getattr(obj,keys)
- if hasattr(x,"meta_type"):
+ #check if cash is enabled and if already exists and if not empty
+ if getattr(self,'_v_hash',None) and getattr(self,'activateCache',None) and self._v_hash.get(str(depth),None):
+
+ return self._v_hash[str(depth)]
- if x.meta_type in self.displayedMetaTypes:
-
- if depth>1:
- nav[x.getId()]=(self.getColls(x,int(depth)-1,checkOnly),x)
- else:
- nav[x.getId()]=(None,x)
-
+ # if not generate new hash
+ obj=objtemp
+
+ for keys in obj.ZopeFind(obj,obj_metatypes=self.displayedMetaTypes):
+ x=keys[1]
+ if depth>1:
+ nav[x.getId()]=(self.getColls(x,int(depth)-1,checkOnly),x)
+ else:
+ nav[x.getId()]=(None,x)
+
+ #store in cache if activated
+ if getattr(self,'activateCache',None):
+
+ try:
+ self._v_hash[str(depth)]={}
+ except:
+ self._v_hash={}
+ self._v_hash[str(depth)]={}
+
+ for x in nav.keys():
+ self._v_hash[str(depth)][x]=nav[x]
- #print nav
return nav
def barFromHash(self,hash,start=None,sortField=None,location=None):
@@ -476,7 +558,7 @@ class ECHO_navigation(Folder):
if not start:
temp=hash
sortField="weight"
- else: # list mit pfad zum hash
+ else: # liste mit pfad zum hash
temp=hash
#print "HI",sortField
if not sortField:
@@ -508,19 +590,22 @@ class ECHO_navigation(Folder):
#print "TEMP",temp,self.tempSorted(temp, field=sortField)
for x in self.tempSorted(temp, field=sortField):
+
if not temp[x][1].title == "":
if (temp[x][1].meta_type=="ECHO_sqlElement") or (temp[x][1].meta_type=="ECHO_ZCatalogElement"):
-
+
for z in temp[x][1].getNavList():
listNav.append((z[0],z[1],None))
-
+
else:
# add label falls existiert und nicht leer
if hasattr(temp[x][1],'label'):
if not temp[x][1].label=='':
- label=temp[x][1].label.decode('utf-8','ignore')
-
+ try:
+ label=temp[x][1].label.encode('utf-8','ignore')
+ except:
+ label=temp[x][1].label
else:
label=temp[x][1].title.encode('utf-8')
else:
@@ -532,13 +617,6 @@ class ECHO_navigation(Folder):
listNav.append((label,createPath(self.absolute_url(),temp[x][1].absolute_url()),temp[x][1]))
else:
listNav.append((label,createPath(self.absolute_url(),temp[x][1].absolute_url()),temp[x][1]))
- #print self.getId(),start
- #print listNav
-
- #html=""
- #for k in listNav:
- # print k
- # html=html+"%s "% (self.absolute_url()+createPath(k[1][1].absolute_url()),k[0])
return listNav