File:  [Repository] / ECHO_content / ECHO_Nav.py
Revision 1.35: download - view: text, annotated - select for diffs - revision graph
Fri Jun 25 11:02:16 2004 UTC (19 years, 11 months ago) by dwinter
Branches: MAIN
CVS tags: HEAD
added ZCatalogElemenr

    1: # Objekte zur Erzeugung von Navigationselementen
    2: 
    3: from Globals import DTMLFile
    4: from OFS.Image import Image,cookId
    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
   15: from ECHO_helpers import displayTypes,checkOnlyOneInGroup
   16: from ECHO_collection import content_html
   17: 
   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: 
  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: 
  189: 
  190: class ECHO_sqlElement(SimpleItem):
  191:     """Erzeuge navigation aus sql-abfrage"""
  192:     meta_type="ECHO_sqlElement"
  193:     baseUrl=""
  194:     
  195:     def __init__(self,id,title,query,field,searchField,baseUrl,weight,contentType):
  196:         """init"""
  197:         self.id=id
  198:         self.title=title
  199:         self.query=query
  200:         self.field=field
  201:         if searchField=="":
  202:             self.searchField=field
  203:         else:
  204:             self.searchField=searchField
  205:         self.baseUrl=baseUrl
  206:         self.weight=weight
  207:         self.content=contentType
  208: 
  209:     manage_options= SimpleItem.manage_options+(
  210:         {'label':'Main Config','action':'changeECHO_sqlElementForm'},
  211:         )
  212: 
  213:     def getSearchField(self):
  214:         try:
  215:             return self.searchField
  216:         except:
  217:             return self.field
  218:         
  219:     def getWeight(self):
  220:         """get weight"""
  221:         if hasattr(self,'weight'):
  222:             return self.weight
  223:         else:
  224:             return 0
  225:         
  226:     def getcontentType(self):
  227:         """get weight"""
  228:         
  229:         if hasattr(self,'contentType'):
  230:             return self.contentType
  231:         else:
  232:             return 0
  233:         
  234: 
  235:     def changeECHO_sqlElementForm(self):
  236:         """change"""
  237:         
  238:         pt=PageTemplateFile('Products/ECHO_content/zpt/changeECHO_sqlElement.zpt').__of__(self)
  239:         return pt()
  240: 
  241:     def changeECHO_sqlElement(self,title,query,field,searchField,baseUrl,weight,contentType,RESPONSE=None):
  242:         """change"""
  243:         self.title=title
  244:         self.query=query
  245:         self.field=field
  246:         self.searchField=searchField
  247:         self.baseUrl=baseUrl
  248:         self.weight=weight
  249:         self.contentType=contentType
  250:         
  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:
  265:                 try:
  266:                     ret.append((getattr(record,self.field),self.baseUrl+urllib.quote(str(getattr(record,self.getSearchField())))))
  267:                 except:
  268:                     """notrhing"""
  269:                     
  270:             return ret
  271:     
  272: 
  273: def manage_addECHO_sqlElementForm(self):
  274:     """Form for adding"""
  275:     pt=PageTemplateFile('Products/ECHO_content/zpt/AddECHO_sqlElement.zpt').__of__(self)
  276:     return pt()
  277: 
  278: def manage_addECHO_sqlElement(self,id,title,query,field,searchField,baseUrl,weight,contentType,RESPONSE=None):
  279:     """Add an ECHO_sqlelement"""
  280:     self._setObject(id,ECHO_sqlElement(id,title,query,field,searchField,baseUrl,weight,contentType))
  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()),
  291:                                        'html/ECHO_pageTemplateDefault.html')
  292: 
  293:     manage_options=ZopePageTemplate.manage_options+(
  294:         {'label':'Main Config','action':'changeECHO_pageTemplateWeightForm'},
  295:         )
  296: 
  297:     def content_html(self):
  298: 	"""content_html"""
  299: 	return content_html(self,'pageTemplate')
  300: 
  301:     def changeECHO_pageTemplateWeightForm(self):
  302:         """change"""
  303:         pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_pageTemplateWeight.zpt').__of__(self)
  304:         return pt()
  305: 
  306:     def changeECHO_pageTemplateWeight(self,weight,contentType,label,RESPONSE=None):
  307:         """change"""
  308:         self.weight=weight
  309:         self.contentType=contentType
  310:         self.label=label
  311:         
  312:         if RESPONSE is not None:
  313:             RESPONSE.redirect('manage_main')
  314: 
  315:     def getLabel(self):
  316:         if hasattr(self,'label'):
  317:             return self.label.encode('utf-8')
  318:         else:
  319:             return 0
  320:         
  321:     def getWeight(self):
  322:         """get weight"""
  323:         if hasattr(self,'weight'):
  324:             return self.weight
  325:         else:
  326:             return 0
  327:         
  328:     def getcontentType(self):
  329:         """get contentType"""
  330:         if hasattr(self,'contentType'):
  331:             return self.contentType
  332:         else:
  333:             return 0
  334: 
  335: 
  336: 
  337: 
  338:     ## def __init__(self, id, text=None, contentType=None):
  339: ##         self.id = str(id)
  340: ##         self.ZBindings_edit(self._default_bindings)
  341: ##         if text is None:
  342: ##             text = open(self._default_cont).read()
  343: ##         self.pt_edit(text, contentType)
  344: 
  345: def manage_addECHO_pageTemplateForm(self):
  346:     """Form for adding"""
  347:     pt=PageTemplateFile('Products/ECHO_content/zpt/AddECHO_pageTemplate.zpt').__of__(self)
  348:     return pt()
  349: 
  350: from urllib import quote
  351: 
  352: 
  353: def manage_addECHO_pageTemplate(self, id, label, weight= 0,contentType=0,title=None, text=None,
  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)
  362:         setattr(ob,'weight',weight)
  363:         setattr(ob,'label',label)
  364:         setattr(ob,'contentType',contentType)
  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:
  374:             zpt = ECHO_pageTemplate(id, file, headers.get('contentType'))
  375: 
  376:         self._setObject(id, zpt)
  377:         ob = getattr(self, id)
  378:         setattr(ob,'weight',weight)
  379:         setattr(ob,'label',label)
  380:         if title:
  381:             ob.pt_setTitle(title)
  382:         
  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: 
  398:     displayedMetaTypes=displayTypes
  399: 
  400:     def getImageViewers(self):
  401:         """images"""
  402:         viewers=self.ZopeFind(self.standardImageViewer,obj_metatypes=['OSAS_ViewerObject'])
  403:         return viewers
  404:     
  405:     def getR(self):
  406: 	"""re"""
  407: 	return self.REQUEST
  408: 
  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"""
  421:         pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_navigation.zpt').__of__(self)
  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: 
  433:     def getColls(self,obj,depth,checkOnly="no"):
  434:         nav={}
  435:         #print "HERE",obj.
  436:         for x_objs in obj.ZopeFind(obj,obj_metatypes=self.displayedMetaTypes):
  437:             x=x_objs[1]
  438:             if checkOnly=="yes":
  439:                 x = checkOnlyOneInGroup(x)
  440:             if depth>1:
  441:                 nav[x.getId()]=(self.getColls(x,depth-1),x)
  442:             else:
  443:                 nav[x.getId()]=(None,x)
  444:         return nav
  445:     
  446:     def createNavHash(self,depth,checkOnly="no"):
  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"):
  460: 
  461:                 if x.meta_type in self.displayedMetaTypes:
  462:                    
  463:                     if depth>1:
  464:                         nav[x.getId()]=(self.getColls(x,int(depth)-1,checkOnly),x)
  465:                     else:
  466:                         nav[x.getId()]=(None,x)
  467:                     
  468: 
  469:         #print nav
  470:         return nav
  471: 
  472:     def barFromHash(self,hash,start=None,sortField=None,location=None):
  473:         """Erzeuge Navigations Element"""
  474:         #print "hash",hash
  475:         listNav=[]
  476:         if not start:
  477:             temp=hash
  478:             sortField="weight"
  479:         else: # list mit pfad zum hash
  480:             temp=hash
  481:             #print "HI",sortField
  482:             if not sortField:
  483:                 tempObj=self.pathToHierarchy[0:]
  484:                 tempObj=re.sub("/",".",tempObj)
  485:                 tempObj="self.aq_parent"+tempObj
  486: 		#print tempObj
  487:                 objtemp=eval(tempObj)
  488: 
  489:                 obj=objtemp
  490: 
  491:                 for x in start:
  492:                     #print "OBJ",start,obj,obj.getId(),x
  493: 
  494:                     obj=getattr(obj,x)
  495: 
  496:                 if hasattr(obj,'sortfield'):
  497:                     sortField=obj.sortfield
  498:                 else:
  499:                     sortField='weight'
  500:             #print "START",start
  501:             for x in start:
  502:                 #print "N2",x,temp[x]
  503:                 try:
  504:                     temp=temp[x][0]
  505:                 except:
  506:                     """nothing"""
  507:                     return []
  508:             #print "TEMP",temp,self.tempSorted(temp, field=sortField)
  509: 
  510:         for x in self.tempSorted(temp, field=sortField):
  511:             if not temp[x][1].title == "":
  512:                 
  513:                 if (temp[x][1].meta_type=="ECHO_sqlElement") or (temp[x][1].meta_type=="ECHO_ZCatalogElement"):
  514:                 
  515:                     for z in temp[x][1].getNavList():
  516:                         listNav.append((z[0],z[1],None))
  517:                         
  518:                 else:
  519:                     # add label falls existiert und nicht leer
  520:                     if hasattr(temp[x][1],'label'):
  521:                         if not temp[x][1].label=='':
  522:                             label=temp[x][1].label.decode('utf-8','ignore')
  523:                             
  524:                         else:
  525:                             label=temp[x][1].title.encode('utf-8')
  526:                     else:
  527:                         label=temp[x][1].title.encode('utf-8')                            
  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]))
  535:         #print self.getId(),start
  536:         #print listNav
  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: 
  545:     def tempSorted(self,hash,field="weight"):
  546:         ls=[]
  547: 
  548:         for x in hash.keys():
  549:             #print hash[x][1]
  550:             if hasattr(hash[x][1],field):
  551:                 weight=getattr(hash[x][1],field)
  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:             
  565:     def isSelectedPath(self,item):
  566:         """test is path is already selected"""
  567:         found=re.search("\?(.*)/",item[1])
  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: 
  574:         if re.search(item[1]+"/",self.REQUEST['URL']):
  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:         
  603:         for key in self.tempSorted(temp):
  604:             
  605:             description=temp[x][1].title
  606:          
  607:             url=createPath(self.absolute_url(),temp[key][1].absolute_url())
  608: 
  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=""
  622: 
  623:         try:
  624:             keys=self.buttonsFromHash(self.createNavHash(0))
  625:         except:
  626:             keys=""
  627:             
  628:         return keys
  629: 
  630:     def mainNavElements(self,location=None):
  631:         """print main navigation bar"""
  632:         keys=""
  633:         #print "NAVELEMENT",self.getId()
  634:         #try:
  635:         
  636:         keys=self.barFromHash(self.createNavHash(0),location=location)
  637:         
  638:         #except:
  639:         #    keys=""
  640:             
  641:         return keys
  642: 
  643:     def numberOfMainNavElements(self):
  644: 	"""number of main elements"""
  645: 
  646: 	return len(self.barFromHash(self.createNavHash(0))) 
  647: 
  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:     
  658:     def secondNavElements(self):
  659:         """Zweite Ordnung"""
  660:         
  661:         hash=self.createNavHash(2,checkOnly="no")
  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:         
  669: 	#print "AU",self.absolute_url(),splitted
  670: 	#start=[splitted[2]] #orig
  671:         startNr= self.startOfHierarchy(splitted)
  672:         
  673: 	start=[splitted[startNr]]
  674: 	
  675:         #print start
  676:        
  677:         keys=self.barFromHash(hash,start=start)
  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: 
  699:         #start=splitted[2:order+1] #orig
  700:         startNr= self.startOfHierarchy(splitted)
  701:         #print startNr
  702: 	start=splitted[startNr:order+startNr-1] 
  703:         #print start
  704:        
  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: 
  736: def manage_addECHO_navigationForm(self):
  737:     """Form for adding"""
  738:     pt=PageTemplateFile('Products/ECHO_content/zpt/AddECHO_navigation.zpt').__of__(self)
  739:     return pt()
  740: 
  741: def manage_addECHO_navigation(self,id,title,pathToHierarchy,RESPONSE=None):
  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: 
  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: 
  760:     #print "CP:"+url1+"::"+url2+"::"+url1+"/"+string.join(temp2,"/")
  761:     return url1+"/"+string.join(temp2,"/")
  762: 
  763: def sortWeight(x,y):
  764:     #print x[1],y[1]
  765:     return cmp(x[1],y[1])
  766:     

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>