Annotation of ECHO_content/ECHO_Nav.py~, revision 1.1
1.1 ! dwinter 1: # Objekte zur Erzeugung von Navigationselementen
! 2:
! 3:
! 4: from OFS.Folder import Folder
! 5: from OFS.SimpleItem import SimpleItem
! 6: from Products.PageTemplates.PageTemplateFile import PageTemplateFile
! 7: from Products.PageTemplates.PageTemplate import PageTemplate
! 8: import re
! 9: import string
! 10: from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate
! 11: import os.path
! 12: from Globals import package_home
! 13:
! 14: class ECHO_sqlElement(SimpleItem):
! 15: """Erzeuge navigation aus sql-abfrage"""
! 16: meta_type="ECHO_sqlElement"
! 17:
! 18: def __init__(self,id,title,query):
! 19: """init"""
! 20: self.id=id
! 21: self.title=title
! 22: self.query=query
! 23:
! 24: manage_options= SimpleItem.manage_options+(
! 25: {'label':'Main Config','action':'changeECHO_sqlElementForm'},
! 26: )
! 27:
! 28: def changeECHO_sqlElementForm(self):
! 29: """change"""
! 30: pt=PageTemplateFile('Products/ECHO_content/ChangeECHO_sqlElement.zpt').__of__(self)
! 31: return pt()
! 32:
! 33: def changeECHO_sqlElement(self,title,query,RESPONSE=None):
! 34: """change"""
! 35: self.title=title
! 36: self.query=query
! 37:
! 38: if RESPONSE is not None:
! 39: RESPONSE.redirect('manage_main')
! 40:
! 41: #def getList
! 42:
! 43: def manage_AddECHO_sqlElementForm(self):
! 44: """Form for adding"""
! 45: pt=PageTemplateFile('Products/ECHO_content/AddECHO_sqlElement.zpt').__of__(self)
! 46: return pt()
! 47:
! 48: def manage_AddECHO_sqlElement(self,id,title,query,RESPONSE=None):
! 49: """Add an ECHO_sqlelement"""
! 50: self._setObject(id,ECHO_sqlElement(id,title,query))
! 51:
! 52: if RESPONSE is not None:
! 53: RESPONSE.redirect('manage_main')
! 54:
! 55:
! 56: class ECHO_pageTemplate(ZopePageTemplate):
! 57: """pageTemplate Objekt"""
! 58: meta_type="ECHO_pageTemplate"
! 59:
! 60: _default_content_fn = os.path.join(package_home(globals()),
! 61: 'ECHO_pageTemplateDefault.html')
! 62:
! 63:
! 64: ## def __init__(self, id, text=None, content_type=None):
! 65: ## self.id = str(id)
! 66: ## self.ZBindings_edit(self._default_bindings)
! 67: ## if text is None:
! 68: ## text = open(self._default_cont).read()
! 69: ## self.pt_edit(text, content_type)
! 70:
! 71: def manage_AddECHO_pageTemplateForm(self):
! 72: """Form for adding"""
! 73: pt=PageTemplateFile('Products/ECHO_content/AddECHO_pageTemplate.zpt').__of__(self)
! 74: return pt()
! 75:
! 76: from urllib import quote
! 77:
! 78:
! 79: def manage_AddECHO_pageTemplate(self, id, title=None, text=None,
! 80: REQUEST=None, submit=None):
! 81: "Add a Page Template with optional file content."
! 82:
! 83:
! 84: id = str(id)
! 85: if REQUEST is None:
! 86: self._setObject(id, ECHO_pageTemplate(id, text))
! 87: ob = getattr(self, id)
! 88: if title:
! 89: ob.pt_setTitle(title)
! 90: return ob
! 91: else:
! 92: file = REQUEST.form.get('file')
! 93: headers = getattr(file, 'headers', None)
! 94: if headers is None or not file.filename:
! 95: zpt = ECHO_pageTemplate(id)
! 96: else:
! 97: zpt = ECHO_pageTemplate(id, file, headers.get('content_type'))
! 98:
! 99: self._setObject(id, zpt)
! 100:
! 101: try:
! 102: u = self.DestinationURL()
! 103: except AttributeError:
! 104: u = REQUEST['URL1']
! 105:
! 106: if submit == " Add and Edit ":
! 107: u = "%s/%s" % (u, quote(id))
! 108: REQUEST.RESPONSE.redirect(u+'/manage_main')
! 109: return ''
! 110:
! 111:
! 112: class ECHO_navigation(Folder):
! 113: """Navigations Element"""
! 114: meta_type="ECHO_Navigation"
! 115:
! 116: displayedMetaTypes=['ECHO_collection','ECHO_pageTemplate','ZSQLExtendFolder']
! 117:
! 118: def __init__(self,id,title,pathToHierarchy):
! 119: """init"""
! 120: self.id=id
! 121: self.title=title
! 122: self.pathToHierarchy=pathToHierarchy
! 123:
! 124: manage_options = Folder.manage_options+(
! 125: {'label':'Main Config','action':'ECHO_navigationConfigForm'},
! 126: )
! 127:
! 128: def ECHO_navigationConfigForm(self):
! 129: """configForm"""
! 130: pt=PageTemplateFile('Products/ECHO_content/ChangeECHO_navigation.zpt').__of__(self)
! 131: return pt()
! 132:
! 133: def ECHO_navigationConfig(self,title,pathToHierarchy,RESPONSE=None):
! 134: """config"""
! 135: self.title=title
! 136: self.pathToHierarchy=pathToHierarchy
! 137:
! 138: if RESPONSE is not None:
! 139: RESPONSE.redirect('manage_main')
! 140:
! 141:
! 142: def getColls(self,obj,depth):
! 143: nav={}
! 144: #print "HERE",obj.
! 145: for keys in obj.__dict__.keys():
! 146: x=getattr(obj,keys)
! 147: if hasattr(x,"meta_type"):
! 148: if x.meta_type in self.displayedMetaTypes:
! 149: if depth>1:
! 150: nav[x.getId()]=(self.getColls(x,depth-1),x)
! 151: else:
! 152: nav[x.getId()]=(None,x)
! 153: return nav
! 154:
! 155: def createNavHash(self,depth):
! 156: """Auslesen des Hierarchiebuames"""
! 157: temp=self.pathToHierarchy[0:]
! 158: temp=re.sub("/",".",temp)
! 159: temp="self.aq_parent"+temp
! 160:
! 161: objtemp=eval(temp)
! 162: nav={}
! 163: obj=objtemp
! 164:
! 165: #exec(obj)
! 166:
! 167: #objtemp = compile(temp,'<string>','single')
! 168: #obj=eval(objtemp)
! 169: print obj
! 170:
! 171: #print obj.__dict__.keys()
! 172:
! 173: for keys in obj.__dict__.keys():
! 174: x=getattr(obj,keys)
! 175: if hasattr(x,"meta_type"):
! 176: #print x.meta_type
! 177: if x.meta_type in self.displayedMetaTypes:
! 178: if depth>1:
! 179: nav[x.getId()]=(self.getColls(x,int(depth)-1),x)
! 180: else:
! 181: nav[x.getId()]=(None,x)
! 182:
! 183:
! 184: #print nav
! 185: return nav
! 186:
! 187: def barFromHash(self,hash,start=None):
! 188: """Erzeuge Navigations Element"""
! 189: print "hash",hash
! 190: if not start:
! 191: listNav=[(hash[x][1].title,self.absolute_url()+createPath(hash[x][1].absolute_url())) for x in hash.keys()]
! 192: else: # list mit pfad zum hash
! 193: temp=hash
! 194: for x in start:
! 195: temp=temp[x][0]
! 196: listNav=[(temp[x][1].title,self.absolute_url()+createPath(temp[x][1].absolute_url())) for x in temp.keys()]
! 197: #print listNav
! 198:
! 199: #html=""
! 200: #for k in listNav:
! 201: # print k
! 202: # html=html+"<a href='%s'>%s</a> "% (self.absolute_url()+createPath(k[1][1].absolute_url()),k[0])
! 203:
! 204: return listNav
! 205:
! 206:
! 207: def buttonsFromHash(self,hash,start=None,orientation="horizontal"):
! 208:
! 209: """Generate Buttons"""
! 210: if orientation=="horizontal":
! 211: html="<table><tr>"
! 212: startTag="<td>"
! 213: endTag="</td>"
! 214: endHtml="</tr></table>"
! 215:
! 216: else:
! 217: html="<table>"
! 218: startTag="<tr><td>"
! 219: endTag="</td></tr>"
! 220: endHtml="</table>"
! 221:
! 222: if not start:
! 223: temp=hash
! 224: else:
! 225: temp=hash
! 226: for x in start:
! 227: temp=temp[x][0]
! 228: #print temp
! 229:
! 230: for key in temp.keys():
! 231:
! 232: description=temp[x][1].title
! 233: url=self.absolute_url()+createPath(temp[key][1].absolute_url())
! 234:
! 235: if (self.REQUEST['URL']==url) | (self.REQUEST['URL']==url+"/index_html"):
! 236: html=html+startTag+"[%s]" % description+endTag
! 237: else:
! 238: html=html+startTag+"[<a href='%s'>%s</a>]" % (url,description)+endTag
! 239:
! 240:
! 241: html=html+endHtml
! 242:
! 243: return html
! 244:
! 245: def mainNavBar(self):
! 246: """print main navigation bar"""
! 247: keys=""
! 248: try:
! 249: keys=self.buttonsFromHash(self.createNavHash(0))
! 250: except:
! 251: keys=""
! 252:
! 253: return keys
! 254:
! 255: def mainNavElements(self):
! 256: """print main navigation bar"""
! 257: keys=""
! 258:
! 259: try:
! 260: keys=self.barFromHash(self.createNavHash(0))
! 261: except:
! 262: keys=""
! 263:
! 264: return keys
! 265:
! 266: def secondNavElements(self):
! 267: """Zweite Ordnung"""
! 268:
! 269: hash=self.createNavHash(2)
! 270: actual_url=self.REQUEST['URL']
! 271:
! 272: ult_temp=re.sub(self.absolute_url(),"",actual_url)
! 273: #print ult_temp
! 274:
! 275: splitted=ult_temp.split("/")
! 276:
! 277:
! 278: ## if splitted[len(splitted)-1]=="index_html":
! 279: ## start=[splitted[len(splitted)-2]]
! 280: ## else:
! 281: ## start=[splitted[len(splitted)-1]]
! 282:
! 283: start=[splitted[2]]
! 284: #print start
! 285:
! 286: keys=self.barFromHash(hash,start=start)
! 287:
! 288:
! 289: return keys
! 290:
! 291:
! 292: def secondNavBar(self):
! 293: """Zweite Ordnung"""
! 294:
! 295: hash=self.createNavHash(2)
! 296: actual_url=self.REQUEST['URL']
! 297:
! 298: ult_temp=re.sub(self.absolute_url(),"",actual_url)
! 299: #print ult_temp
! 300:
! 301: splitted=ult_temp.split("/")
! 302:
! 303:
! 304: ## if splitted[len(splitted)-1]=="index_html":
! 305: ## start=[splitted[len(splitted)-2]]
! 306: ## else:
! 307: ## start=[splitted[len(splitted)-1]]
! 308:
! 309: start=[splitted[2]]
! 310: #print start
! 311:
! 312: keys=self.buttonsFromHash(hash,start=start,orientation="vertical")
! 313:
! 314:
! 315: return keys
! 316:
! 317: def manage_AddECHO_navigationForm(self):
! 318: """Form for adding"""
! 319: pt=PageTemplateFile('Products/ECHO_content/AddECHO_navigation.zpt').__of__(self)
! 320: return pt()
! 321:
! 322: def manage_AddECHO_navigation(self,id,title,pathToHierarchy,RESPONSE=None):
! 323: """Add an ECHO_root"""
! 324: self._setObject(id,ECHO_navigation(id,title,pathToHierarchy))
! 325:
! 326: if RESPONSE is not None:
! 327: RESPONSE.redirect('manage_main')
! 328:
! 329:
! 330: #helpers
! 331:
! 332: def createPath(url):
! 333: temp=url.split("/")
! 334: del temp[0]
! 335: del temp[1]
! 336: return string.join(temp,"/")
! 337:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>