Annotation of ECHO_content/ECHO_Nav.py, revision 1.22

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

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