Annotation of ECHO_content/ECHO_Nav.py, revision 1.35
1.1 dwinter 1: # Objekte zur Erzeugung von Navigationselementen
2:
1.11 dwinter 3: from Globals import DTMLFile
4: from OFS.Image import Image,cookId
1.1 dwinter 5: from OFS.Folder import Folder
6: from OFS.SimpleItem import SimpleItem
7: from Products.PageTemplates.PageTemplateFile import PageTemplateFile
8: from Products.PageTemplates.PageTemplate import PageTemplate
9: import re
10: import string
11: from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate
12: import os.path
13: from Globals import package_home
14: import urllib
1.18 dwinter 15: from ECHO_helpers import displayTypes,checkOnlyOneInGroup
1.23 dwinter 16: from ECHO_collection import content_html
1.11 dwinter 17:
1.35 ! dwinter 18:
! 19:
! 20: from Globals import DTMLFile
! 21: from OFS.Image import Image,cookId
! 22: from OFS.Folder import Folder
! 23: from OFS.SimpleItem import SimpleItem
! 24: from Products.PageTemplates.PageTemplateFile import PageTemplateFile
! 25: from Products.PageTemplates.PageTemplate import PageTemplate
! 26: import re
! 27: import string
! 28: from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate
! 29: import os.path
! 30: from Globals import package_home
! 31: import urllib
! 32: from ECHO_helpers import displayTypes,checkOnlyOneInGroup
! 33: from ECHO_collection import content_html
! 34:
! 35:
! 36:
! 37:
! 38: class ECHO_ZCatalogElement(SimpleItem):
! 39: """Erzeuge navigation aus ZCatalog-abfrage"""
! 40: meta_type="ECHO_ZCatalogElement"
! 41: baseUrl=""
! 42:
! 43: def __init__(self,id,title,field,catalogId,baseUrl,weight,contentType):
! 44: """init"""
! 45: self.id=id
! 46: self.title=title
! 47: self.catalogId=catalogId
! 48: self.field=field
! 49:
! 50: self.baseUrl=baseUrl
! 51: self.weight=weight
! 52: self.content=contentType
! 53:
! 54: manage_options= SimpleItem.manage_options+(
! 55: {'label':'Main Config','action':'changeECHO_ZCatalogElementForm'},
! 56: )
! 57:
! 58:
! 59: def getWeight(self):
! 60: """get weight"""
! 61: if hasattr(self,'weight'):
! 62: return self.weight
! 63: else:
! 64: return 0
! 65:
! 66: def getcontentType(self):
! 67: """get weight"""
! 68:
! 69: if hasattr(self,'contentType'):
! 70: return self.contentType
! 71: else:
! 72: return 0
! 73:
! 74:
! 75: def changeECHO_ZCatalogElementForm(self):
! 76: """change"""
! 77:
! 78: pt=PageTemplateFile('Products/ECHO_content/zpt/changeECHO_ZCatalogElement.zpt').__of__(self)
! 79: return pt()
! 80:
! 81: def changeECHO_ZCatalogElement(self,title,field,catalogId,baseUrl,weight,contentType,RESPONSE=None):
! 82: """change"""
! 83: self.title=title
! 84: self.catalogId=catalogId
! 85: self.field=field
! 86: self.baseUrl=baseUrl
! 87: self.weight=weight
! 88: self.contentType=contentType
! 89:
! 90: if RESPONSE is not None:
! 91: RESPONSE.redirect('manage_main')
! 92:
! 93: def getKeywordList(self):
! 94: return getattr(self,self.catalogId).uniqueValuesFor(self.field)
! 95:
! 96: def getNavList(self):
! 97: """ausgabe der treffer list für navigation"""
! 98: records=self.getKeywordList()
! 99:
! 100: if not records:
! 101: return []
! 102: else:
! 103: ret=[]
! 104: for record in records:
! 105: #print "RC",record
! 106: #if record:
! 107: # ret.append((record,self.baseUrl+urllib.quote(record)))
! 108: try:
! 109: ret.append((record,self.baseUrl+urllib.quote(record)))
! 110: except:
! 111: """nothing"""
! 112:
! 113: return ret
! 114:
! 115:
! 116: def manage_addECHO_ZCatalogElementForm(self):
! 117: """Form for adding"""
! 118: pt=PageTemplateFile('Products/ECHO_content/zpt/AddECHO_ZCatalogElement.zpt').__of__(self)
! 119: return pt()
! 120:
! 121: def manage_addECHO_ZCatalogElement(self,id,title,field,baseUrl,weight,contentType,RESPONSE=None):
! 122: """Add an ECHO_ZCatalogelement"""
! 123: self._setObject(id,ECHO_ZCatalogElement(id,title,field,baseUrl,weight,contentType))
! 124:
! 125: if RESPONSE is not None:
! 126: RESPONSE.redirect('manage_main')
! 127:
! 128:
! 129:
1.11 dwinter 130: class ECHO_contentType(Image):
131: """ContentType Object"""
132:
133: meta_type="ECHO_contentType"
134:
135:
136: manage_options=Image.manage_options+(
137: {'label':'Change Description','action':'changeECHO_contentTypeForm'},
138: )
139:
140: def changeECHO_contentTypeForm(self):
141: """Change the description text"""
142: pt=PageTemplateFile('Products/ECHO_content/zpt/changeECHO_contentType.zpt').__of__(self)
143: return pt()
144:
145: def changeECHO_contentType(self,description,RESPONSE=None):
146: """Change the Content"""
147: self.description=description
148: if RESPONSE is not None:
149: RESPONSE.redirect('manage_main')
150:
151: manage_addECHO_contentTypeForm=DTMLFile('dtml/ECHO_contentTypeAdd',globals(),
152: Kind='ECHO_contentType',kind='ECHO_contentType')
153:
154: def manage_addECHO_contentType(self, id, file=None, title='', precondition='', content_type='', description='',
155: REQUEST=None):
156: """
157: Add a new Image object.
158:
159: Creates a new Image object 'id' with the contents of 'file'.
160: """
161:
162: id=str(id)
163: title=str(title)
164: content_type=str(content_type)
165: precondition=str(precondition)
166:
167: id, title = cookId(id, title, file)
168:
169: self=self.this()
170:
171: # First, we create the image without data:
172: self._setObject(id, ECHO_contentType(id,title,'',content_type, precondition))
173:
174: self._getOb(id).description=description
175:
176: # Now we "upload" the data. By doing this in two steps, we
177: # can use a database trick to make the upload more efficient.
178: if file:
179: self._getOb(id).manage_upload(file)
180: if content_type:
181: self._getOb(id).content_type=content_type
182:
183: if REQUEST is not None:
184: try: url=self.DestinationURL()
185: except: url=REQUEST['URL1']
186: REQUEST.RESPONSE.redirect('%s/manage_main' % url)
187: return id
188:
1.1 dwinter 189:
190: class ECHO_sqlElement(SimpleItem):
191: """Erzeuge navigation aus sql-abfrage"""
192: meta_type="ECHO_sqlElement"
193: baseUrl=""
194:
1.10 dwinter 195: def __init__(self,id,title,query,field,searchField,baseUrl,weight,contentType):
1.1 dwinter 196: """init"""
197: self.id=id
198: self.title=title
199: self.query=query
200: self.field=field
1.7 dwinter 201: if searchField=="":
202: self.searchField=field
203: else:
204: self.searchField=searchField
1.1 dwinter 205: self.baseUrl=baseUrl
1.3 dwinter 206: self.weight=weight
1.10 dwinter 207: self.content=contentType
1.1 dwinter 208:
209: manage_options= SimpleItem.manage_options+(
210: {'label':'Main Config','action':'changeECHO_sqlElementForm'},
211: )
212:
1.7 dwinter 213: def getSearchField(self):
214: try:
215: return self.searchField
216: except:
217: return self.field
218:
1.3 dwinter 219: def getWeight(self):
1.4 dwinter 220: """get weight"""
221: if hasattr(self,'weight'):
222: return self.weight
1.3 dwinter 223: else:
224: return 0
225:
1.10 dwinter 226: def getcontentType(self):
1.6 dwinter 227: """get weight"""
228:
1.10 dwinter 229: if hasattr(self,'contentType'):
230: return self.contentType
1.6 dwinter 231: else:
232: return 0
1.3 dwinter 233:
234:
1.1 dwinter 235: def changeECHO_sqlElementForm(self):
236: """change"""
1.6 dwinter 237:
238: pt=PageTemplateFile('Products/ECHO_content/zpt/changeECHO_sqlElement.zpt').__of__(self)
1.1 dwinter 239: return pt()
240:
1.10 dwinter 241: def changeECHO_sqlElement(self,title,query,field,searchField,baseUrl,weight,contentType,RESPONSE=None):
1.1 dwinter 242: """change"""
243: self.title=title
244: self.query=query
245: self.field=field
1.7 dwinter 246: self.searchField=searchField
1.1 dwinter 247: self.baseUrl=baseUrl
1.3 dwinter 248: self.weight=weight
1.10 dwinter 249: self.contentType=contentType
1.6 dwinter 250:
1.1 dwinter 251: if RESPONSE is not None:
252: RESPONSE.redirect('manage_main')
253:
254: def searchQuery(self):
255: return self.search(var=self.query)
256:
257: def getNavList(self):
258: """ausgabe der treffer list für navigation"""
259: records=self.searchQuery()
260: if not records:
261: return []
262: else:
263: ret=[]
264: for record in records:
1.7 dwinter 265: try:
266: ret.append((getattr(record,self.field),self.baseUrl+urllib.quote(str(getattr(record,self.getSearchField())))))
267: except:
268: """notrhing"""
269:
1.1 dwinter 270: return ret
271:
272:
1.6 dwinter 273: def manage_addECHO_sqlElementForm(self):
1.1 dwinter 274: """Form for adding"""
1.6 dwinter 275: pt=PageTemplateFile('Products/ECHO_content/zpt/AddECHO_sqlElement.zpt').__of__(self)
1.1 dwinter 276: return pt()
277:
1.10 dwinter 278: def manage_addECHO_sqlElement(self,id,title,query,field,searchField,baseUrl,weight,contentType,RESPONSE=None):
1.1 dwinter 279: """Add an ECHO_sqlelement"""
1.10 dwinter 280: self._setObject(id,ECHO_sqlElement(id,title,query,field,searchField,baseUrl,weight,contentType))
1.1 dwinter 281:
282: if RESPONSE is not None:
283: RESPONSE.redirect('manage_main')
284:
285:
286: class ECHO_pageTemplate(ZopePageTemplate):
287: """pageTemplate Objekt"""
288: meta_type="ECHO_pageTemplate"
289:
290: _default_content_fn = os.path.join(package_home(globals()),
1.6 dwinter 291: 'html/ECHO_pageTemplateDefault.html')
1.1 dwinter 292:
1.3 dwinter 293: manage_options=ZopePageTemplate.manage_options+(
1.31 jdamerow 294: {'label':'Main Config','action':'changeECHO_pageTemplateWeightForm'},
1.3 dwinter 295: )
1.23 dwinter 296:
297: def content_html(self):
298: """content_html"""
299: return content_html(self,'pageTemplate')
1.3 dwinter 300:
301: def changeECHO_pageTemplateWeightForm(self):
1.4 dwinter 302: """change"""
1.6 dwinter 303: pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_pageTemplateWeight.zpt').__of__(self)
1.4 dwinter 304: return pt()
305:
1.15 dwinter 306: def changeECHO_pageTemplateWeight(self,weight,contentType,label,RESPONSE=None):
1.4 dwinter 307: """change"""
308: self.weight=weight
1.10 dwinter 309: self.contentType=contentType
1.15 dwinter 310: self.label=label
311:
1.4 dwinter 312: if RESPONSE is not None:
313: RESPONSE.redirect('manage_main')
1.15 dwinter 314:
315: def getLabel(self):
316: if hasattr(self,'label'):
1.16 dwinter 317: return self.label.encode('utf-8')
1.15 dwinter 318: else:
319: return 0
1.4 dwinter 320:
321: def getWeight(self):
322: """get weight"""
323: if hasattr(self,'weight'):
324: return self.weight
325: else:
326: return 0
1.6 dwinter 327:
1.10 dwinter 328: def getcontentType(self):
1.33 jdamerow 329: """get contentType"""
330: if hasattr(self,'contentType'):
331: return self.contentType
1.6 dwinter 332: else:
333: return 0
334:
1.3 dwinter 335:
336:
1.1 dwinter 337:
1.10 dwinter 338: ## def __init__(self, id, text=None, contentType=None):
1.1 dwinter 339: ## self.id = str(id)
340: ## self.ZBindings_edit(self._default_bindings)
341: ## if text is None:
342: ## text = open(self._default_cont).read()
1.10 dwinter 343: ## self.pt_edit(text, contentType)
1.1 dwinter 344:
1.6 dwinter 345: def manage_addECHO_pageTemplateForm(self):
1.1 dwinter 346: """Form for adding"""
1.6 dwinter 347: pt=PageTemplateFile('Products/ECHO_content/zpt/AddECHO_pageTemplate.zpt').__of__(self)
1.1 dwinter 348: return pt()
349:
350: from urllib import quote
351:
352:
1.15 dwinter 353: def manage_addECHO_pageTemplate(self, id, label, weight= 0,contentType=0,title=None, text=None,
1.1 dwinter 354: REQUEST=None, submit=None):
355: "Add a Page Template with optional file content."
356:
357:
358: id = str(id)
359: if REQUEST is None:
360: self._setObject(id, ECHO_pageTemplate(id, text))
361: ob = getattr(self, id)
1.3 dwinter 362: setattr(ob,'weight',weight)
1.15 dwinter 363: setattr(ob,'label',label)
1.10 dwinter 364: setattr(ob,'contentType',contentType)
1.1 dwinter 365: if title:
366: ob.pt_setTitle(title)
367: return ob
368: else:
369: file = REQUEST.form.get('file')
370: headers = getattr(file, 'headers', None)
371: if headers is None or not file.filename:
372: zpt = ECHO_pageTemplate(id)
373: else:
1.10 dwinter 374: zpt = ECHO_pageTemplate(id, file, headers.get('contentType'))
1.1 dwinter 375:
376: self._setObject(id, zpt)
1.3 dwinter 377: ob = getattr(self, id)
378: setattr(ob,'weight',weight)
1.34 dwinter 379: setattr(ob,'label',label)
1.8 dwinter 380: if title:
381: ob.pt_setTitle(title)
382:
1.1 dwinter 383: try:
384: u = self.DestinationURL()
385: except AttributeError:
386: u = REQUEST['URL1']
387:
388: if submit == " Add and Edit ":
389: u = "%s/%s" % (u, quote(id))
390: REQUEST.RESPONSE.redirect(u+'/manage_main')
391: return ''
392:
393:
394: class ECHO_navigation(Folder):
395: """Navigations Element"""
396: meta_type="ECHO_Navigation"
397:
1.18 dwinter 398: displayedMetaTypes=displayTypes
1.35 ! dwinter 399:
! 400: def getImageViewers(self):
! 401: """images"""
! 402: viewers=self.ZopeFind(self.standardImageViewer,obj_metatypes=['OSAS_ViewerObject'])
! 403: return viewers
1.1 dwinter 404:
1.28 dwinter 405: def getR(self):
406: """re"""
407: return self.REQUEST
408:
1.1 dwinter 409: def __init__(self,id,title,pathToHierarchy):
410: """init"""
411: self.id=id
412: self.title=title
413: self.pathToHierarchy=pathToHierarchy
414:
415: manage_options = Folder.manage_options+(
416: {'label':'Main Config','action':'ECHO_navigationConfigForm'},
417: )
418:
419: def ECHO_navigationConfigForm(self):
420: """configForm"""
1.6 dwinter 421: pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_navigation.zpt').__of__(self)
1.1 dwinter 422: return pt()
423:
424: def ECHO_navigationConfig(self,title,pathToHierarchy,RESPONSE=None):
425: """config"""
426: self.title=title
427: self.pathToHierarchy=pathToHierarchy
428:
429: if RESPONSE is not None:
430: RESPONSE.redirect('manage_main')
431:
432:
1.19 dwinter 433: def getColls(self,obj,depth,checkOnly="no"):
1.1 dwinter 434: nav={}
435: #print "HERE",obj.
1.18 dwinter 436: for x_objs in obj.ZopeFind(obj,obj_metatypes=self.displayedMetaTypes):
437: x=x_objs[1]
1.22 dwinter 438: if checkOnly=="yes":
1.19 dwinter 439: x = checkOnlyOneInGroup(x)
1.18 dwinter 440: if depth>1:
441: nav[x.getId()]=(self.getColls(x,depth-1),x)
442: else:
443: nav[x.getId()]=(None,x)
1.1 dwinter 444: return nav
445:
1.19 dwinter 446: def createNavHash(self,depth,checkOnly="no"):
1.1 dwinter 447: """Auslesen des Hierarchiebuames"""
448: temp=self.pathToHierarchy[0:]
449: temp=re.sub("/",".",temp)
450: temp="self.aq_parent"+temp
451:
452: objtemp=eval(temp)
453: nav={}
454: obj=objtemp
455:
456:
457: for keys in obj.__dict__.keys():
458: x=getattr(obj,keys)
459: if hasattr(x,"meta_type"):
1.18 dwinter 460:
1.1 dwinter 461: if x.meta_type in self.displayedMetaTypes:
1.5 dwinter 462:
1.1 dwinter 463: if depth>1:
1.19 dwinter 464: nav[x.getId()]=(self.getColls(x,int(depth)-1,checkOnly),x)
1.1 dwinter 465: else:
466: nav[x.getId()]=(None,x)
467:
468:
469: #print nav
470: return nav
471:
1.32 dwinter 472: def barFromHash(self,hash,start=None,sortField=None,location=None):
1.1 dwinter 473: """Erzeuge Navigations Element"""
474: #print "hash",hash
475: listNav=[]
476: if not start:
477: temp=hash
1.5 dwinter 478: sortField="weight"
1.1 dwinter 479: else: # list mit pfad zum hash
480: temp=hash
1.7 dwinter 481: #print "HI",sortField
1.5 dwinter 482: if not sortField:
483: tempObj=self.pathToHierarchy[0:]
484: tempObj=re.sub("/",".",tempObj)
485: tempObj="self.aq_parent"+tempObj
1.28 dwinter 486: #print tempObj
1.5 dwinter 487: objtemp=eval(tempObj)
488:
489: obj=objtemp
490:
491: for x in start:
1.7 dwinter 492: #print "OBJ",start,obj,obj.getId(),x
1.5 dwinter 493:
494: obj=getattr(obj,x)
495:
496: if hasattr(obj,'sortfield'):
497: sortField=obj.sortfield
498: else:
499: sortField='weight'
1.7 dwinter 500: #print "START",start
1.1 dwinter 501: for x in start:
1.7 dwinter 502: #print "N2",x,temp[x]
503: try:
1.5 dwinter 504: temp=temp[x][0]
1.7 dwinter 505: except:
506: """nothing"""
507: return []
508: #print "TEMP",temp,self.tempSorted(temp, field=sortField)
1.13 dwinter 509:
1.5 dwinter 510: for x in self.tempSorted(temp, field=sortField):
1.4 dwinter 511: if not temp[x][1].title == "":
1.35 ! dwinter 512:
! 513: if (temp[x][1].meta_type=="ECHO_sqlElement") or (temp[x][1].meta_type=="ECHO_ZCatalogElement"):
! 514:
1.4 dwinter 515: for z in temp[x][1].getNavList():
1.17 dwinter 516: listNav.append((z[0],z[1],None))
1.35 ! dwinter 517:
1.4 dwinter 518: else:
1.27 dwinter 519: # add label falls existiert und nicht leer
1.7 dwinter 520: if hasattr(temp[x][1],'label'):
521: if not temp[x][1].label=='':
1.35 ! dwinter 522: label=temp[x][1].label.decode('utf-8','ignore')
1.13 dwinter 523:
1.7 dwinter 524: else:
1.16 dwinter 525: label=temp[x][1].title.encode('utf-8')
1.7 dwinter 526: else:
1.16 dwinter 527: label=temp[x][1].title.encode('utf-8')
1.32 dwinter 528:
529: if location:
530: loc=getattr(temp[x][1],'location','top')
531: if (loc==location):
532: listNav.append((label,createPath(self.absolute_url(),temp[x][1].absolute_url()),temp[x][1]))
533: else:
534: listNav.append((label,createPath(self.absolute_url(),temp[x][1].absolute_url()),temp[x][1]))
1.7 dwinter 535: #print self.getId(),start
536: #print listNav
1.1 dwinter 537:
538: #html=""
539: #for k in listNav:
540: # print k
541: # html=html+"<a href='%s'>%s</a> "% (self.absolute_url()+createPath(k[1][1].absolute_url()),k[0])
542:
543: return listNav
544:
1.5 dwinter 545: def tempSorted(self,hash,field="weight"):
1.4 dwinter 546: ls=[]
1.13 dwinter 547:
1.4 dwinter 548: for x in hash.keys():
549: #print hash[x][1]
1.5 dwinter 550: if hasattr(hash[x][1],field):
551: weight=getattr(hash[x][1],field)
1.4 dwinter 552: #print weight
553: else:
554: weight=0
555:
556: ls.append((x,weight))
557:
558: ls.sort(sortWeight)
559:
560: return [x[0] for x in ls]
561:
562:
563:
564:
1.1 dwinter 565: def isSelectedPath(self,item):
566: """test is path is already selected"""
1.26 dwinter 567: found=re.search("\?(.*)/",item[1])
1.1 dwinter 568: if found:
569: temp=re.sub(" ","%20",found.group(0))
570: #print temp+"::"+self.REQUEST['QUERY_STRING']
571: if ("?"+self.REQUEST['QUERY_STRING'])==temp:
572: return 1
573:
1.26 dwinter 574: if re.search(item[1]+"/",self.REQUEST['URL']):
1.1 dwinter 575: return 1
576: else:
577: return 0
578:
579:
580: def buttonsFromHash(self,hash,start=None,orientation="horizontal"):
581:
582: """Generate Buttons"""
583: if orientation=="horizontal":
584: html="<table><tr>"
585: startTag="<td>"
586: endTag="</td>"
587: endHtml="</tr></table>"
588:
589: else:
590: html="<table>"
591: startTag="<tr><td>"
592: endTag="</td></tr>"
593: endHtml="</table>"
594:
595: if not start:
596: temp=hash
597: else:
598: temp=hash
599: for x in start:
600: temp=temp[x][0]
601: #print temp
602:
1.5 dwinter 603: for key in self.tempSorted(temp):
1.1 dwinter 604:
605: description=temp[x][1].title
1.2 dwinter 606:
1.3 dwinter 607: url=createPath(self.absolute_url(),temp[key][1].absolute_url())
1.2 dwinter 608:
1.1 dwinter 609: if (self.REQUEST['URL']==url) | (self.REQUEST['URL']==url+"/index_html"):
610: html=html+startTag+"[%s]" % description+endTag
611: else:
612: html=html+startTag+"[<a href='%s'>%s</a>]" % (url,description)+endTag
613:
614:
615: html=html+endHtml
616:
617: return html
618:
619: def mainNavBar(self):
620: """print main navigation bar"""
621: keys=""
1.13 dwinter 622:
1.1 dwinter 623: try:
624: keys=self.buttonsFromHash(self.createNavHash(0))
625: except:
626: keys=""
627:
628: return keys
629:
1.32 dwinter 630: def mainNavElements(self,location=None):
1.1 dwinter 631: """print main navigation bar"""
632: keys=""
1.12 dwinter 633: #print "NAVELEMENT",self.getId()
1.5 dwinter 634: #try:
1.32 dwinter 635:
636: keys=self.barFromHash(self.createNavHash(0),location=location)
1.12 dwinter 637:
1.5 dwinter 638: #except:
639: # keys=""
1.1 dwinter 640:
641: return keys
1.12 dwinter 642:
643: def numberOfMainNavElements(self):
644: """number of main elements"""
645:
646: return len(self.barFromHash(self.createNavHash(0)))
647:
1.29 dwinter 648: def startOfHierarchy(self,list):
649: splitted=self.pathToHierarchy.split("/")
650: last=splitted[len(splitted)-1]
651: #print last,list
652: try:
653: nr=list.index(last)
654: except:
655: nr=0
656: return nr+1
657:
1.1 dwinter 658: def secondNavElements(self):
659: """Zweite Ordnung"""
660:
1.22 dwinter 661: hash=self.createNavHash(2,checkOnly="no")
1.1 dwinter 662: actual_url=self.REQUEST['URL']
663:
664: ult_temp=re.sub(self.absolute_url(),"",actual_url)
665: #print ult_temp
666:
667: splitted=ult_temp.split("/")
668:
1.29 dwinter 669: #print "AU",self.absolute_url(),splitted
1.28 dwinter 670: #start=[splitted[2]] #orig
1.29 dwinter 671: startNr= self.startOfHierarchy(splitted)
672:
673: start=[splitted[startNr]]
1.28 dwinter 674:
1.29 dwinter 675: #print start
1.7 dwinter 676:
1.25 dwinter 677: keys=self.barFromHash(hash,start=start)
1.7 dwinter 678:
679:
680: return keys
681:
682: def navElements(self,order):
683: """n-te Ordnung"""
684:
685: hash=self.createNavHash(order)
686: actual_url=self.REQUEST['URL']
687:
688: ult_temp=re.sub(self.absolute_url(),"",actual_url)
689: #print ult_temp
690:
691: splitted=ult_temp.split("/")
692:
693:
694: ## if splitted[len(splitted)-1]=="index_html":
695: ## start=[splitted[len(splitted)-2]]
696: ## else:
697: ## start=[splitted[len(splitted)-1]]
698:
1.28 dwinter 699: #start=splitted[2:order+1] #orig
1.29 dwinter 700: startNr= self.startOfHierarchy(splitted)
1.30 dwinter 701: #print startNr
702: start=splitted[startNr:order+startNr-1]
1.1 dwinter 703: #print start
1.5 dwinter 704:
1.1 dwinter 705: keys=self.barFromHash(hash,start=start)
706:
707:
708: return keys
709:
710:
711: def secondNavBar(self):
712: """Zweite Ordnung"""
713:
714: hash=self.createNavHash(2)
715: actual_url=self.REQUEST['URL']
716:
717: ult_temp=re.sub(self.absolute_url(),"",actual_url)
718: #print ult_temp
719:
720: splitted=ult_temp.split("/")
721:
722:
723: ## if splitted[len(splitted)-1]=="index_html":
724: ## start=[splitted[len(splitted)-2]]
725: ## else:
726: ## start=[splitted[len(splitted)-1]]
727:
728: start=[splitted[2]]
729: #print start
730:
731: keys=self.buttonsFromHash(hash,start=start,orientation="vertical")
732:
733:
734: return keys
735:
1.6 dwinter 736: def manage_addECHO_navigationForm(self):
1.1 dwinter 737: """Form for adding"""
1.6 dwinter 738: pt=PageTemplateFile('Products/ECHO_content/zpt/AddECHO_navigation.zpt').__of__(self)
1.1 dwinter 739: return pt()
740:
1.6 dwinter 741: def manage_addECHO_navigation(self,id,title,pathToHierarchy,RESPONSE=None):
1.1 dwinter 742: """Add an ECHO_root"""
743: self._setObject(id,ECHO_navigation(id,title,pathToHierarchy))
744:
745: if RESPONSE is not None:
746: RESPONSE.redirect('manage_main')
747:
748:
749: #helpers
750:
1.3 dwinter 751:
752:
753: def createPath(url1,url2):
754: temp1=url1.split("/")
755: temp2=url2.split("/")
756: for test in temp1:
757: if temp2[0]==test:
758: del temp2[0]
759:
1.28 dwinter 760: #print "CP:"+url1+"::"+url2+"::"+url1+"/"+string.join(temp2,"/")
1.3 dwinter 761: return url1+"/"+string.join(temp2,"/")
1.4 dwinter 762:
763: def sortWeight(x,y):
764: #print x[1],y[1]
765: return cmp(x[1],y[1])
1.1 dwinter 766:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>