Annotation of ECHO_content/ECHO_Nav.py, revision 1.15

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

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