File:  [Repository] / basket / basket.py
Revision 1.4: download - view: text, annotated - select for diffs - revision graph
Mon Apr 3 11:05:03 2006 UTC (18 years, 2 months ago) by dwinter
Branches: MAIN
CVS tags: HEAD
mainor

    1: ###objects to store and manage objects in baskets
    2: 
    3: import os
    4: import os.path
    5: import urllib
    6: import cgi
    7: 
    8: 
    9: from OFS.OrderedFolder import OrderedFolder
   10: from OFS.SimpleItem import SimpleItem
   11: 
   12: from AccessControl import ClassSecurityInfo
   13: from AccessControl.User import UserFolder
   14: from Globals import InitializeClass
   15: from Globals import DTMLFile
   16: import Globals
   17: from Products.PageTemplates.PageTemplateFile import PageTemplateFile
   18: from Products.PageTemplates.PageTemplate import PageTemplate
   19: from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate
   20: from Globals import Persistent, package_home
   21: from Acquisition import Implicit
   22: from Products.ZCatalog.CatalogPathAwareness import CatalogAware
   23: 
   24: 
   25: from groups import manage_addGroupFolder
   26: 
   27: refBasis="http://vlp.mpiwg-berlin.mpg.de/references?id=%s" 
   28: 
   29: basketMetatypes=['BasketXRef','BasketInternalLink','BasketExternalLink','BasketText']
   30: 
   31: #basis url for references
   32: 
   33: publicationStatusList=['private','hidden','open_intern','open','group'] 
   34: # private only access for the owner, restricted only for users in accessGroup, open open for everyone, published occurs in basket list
   35: 
   36: class BasketBasis(OrderedFolder):
   37:     """Basis class for BasketFolder and Baskets"""
   38:     
   39:     security=ClassSecurityInfo()
   40:     def getNewId(self):
   41:         """createIds"""
   42:         last=getattr(self,'last',0)
   43:         last +=1
   44:         while len(self.ZopeFind(self,obj_ids=[str(last)]))>0:
   45:             last+=1
   46:     
   47:         return last
   48:     
   49:     def addBasketText(self,REQUEST=None):
   50:         """add a text"""
   51:         id=self.getNewId()
   52:         manage_addBasketText(self,str(id),'','',RESPONSE=None)
   53:         if REQUEST:
   54:             REQUEST.RESPONSE.redirect(self.absolute_url()+"/manageBasket")
   55:     
   56:     def addBasketExternalLink(self,REQUEST=None):
   57:         """add an external link"""
   58:         id=self.getNewId()
   59:         
   60:         manage_addBasketExternalLink(self,str(id),"","","","",RESPONSE=None)
   61:         if REQUEST:
   62:             REQUEST.RESPONSE.redirect(self.absolute_url()+"/manageBasket")
   63:         
   64:     def deleteObject(self,id,REQUEST=None):
   65:         """delete object"""
   66:         self.manage_delObjects([id])
   67:         if REQUEST:
   68:             REQUEST.RESPONSE.redirect(self.absolute_url()+"/manageBasket")
   69:     
   70:     def moveUp(self,id,REQUEST=None):
   71:         """move id one up"""
   72:         self.moveObjectsUp([id], 1)
   73:         if REQUEST:
   74:             REQUEST.RESPONSE.redirect(self.absolute_url()+"/manageBasket")
   75:     
   76:     def moveDown(self,id,REQUEST=None):
   77:         """move id one up"""
   78:         self.moveObjectsDown([id], 1)
   79:         if REQUEST:
   80:             REQUEST.RESPONSE.redirect(self.absolute_url()+"/manageBasket")
   81:             
   82:     def moveTop(self,id,REQUEST=None):
   83:         """move to top"""
   84:         self.moveObjectsToTop([id])
   85:         if REQUEST:
   86:             REQUEST.RESPONSE.redirect(self.absolute_url()+"/manageBasket")
   87:   
   88:     def moveBottom(self,id,REQUEST=None):
   89:         """move to top"""
   90:         self.moveObjectsToBottom([id])
   91:         if REQUEST:
   92:             REQUEST.RESPONSE.redirect(self.absolute_url()+"/manageBasket")
   93:     
   94:     security.declareProtected('View','getOwner')
   95:           
   96:     def getOwner(self):
   97:         """get Owner as string"""
   98:         return self.owner
   99:     
  100:     def isAuthorized(self,role="read"):
  101:         """check whether actual user is authorized"""
  102:         #TODO replace occurences with checkPermission
  103:         return True
  104:     
  105:     def getActualUserName(self):
  106:         """get username of actual user"""
  107:         return self.REQUEST['AUTHENTICATED_USER'].getUserName()
  108:         
  109:     def getObjects(self):
  110:         """"get objects"""
  111:         return [getattr(self,x['id']) for x in self._objects]
  112:    
  113:     def numberOfObjects(self):
  114:         """anzahl der elemente im basket"""
  115:         return len(self._objects)
  116:     
  117: class BasketFolder(BasketBasis):
  118:     """Folder for Baskets"""
  119:     
  120:     meta_type="Basket Folder"
  121:     
  122:     #security=ClassSecurityInfo()
  123:     
  124:     def getSets(self,mode='open'):
  125:         """get sets, depending on mode selected"""
  126:         ret=[]
  127:         
  128:         if mode=='open':
  129:            
  130:             for object in self.getObjects():
  131:            
  132:                 if object.publicationStatus=='open':
  133:                     ret.append(object)
  134:             return ret
  135:         elif mode=='open_intern':
  136:             print "open_intern"
  137:             if self.groupFolder.isMemberOf('user'):
  138:                 print "---public"
  139:                 for object in self.getObjects():
  140:                     print object.getId(),object.publicationStatus
  141:                     if object.publicationStatus=='open_intern':
  142:                         ret.append(object)
  143:                 return ret
  144:             else:
  145:                 return ret
  146:         elif mode=='private':
  147:             for object in self.getObjects():
  148:                 if object.groupFolder.isMemberOf('admin') or object.groupFolder.isMemberOf('editor'):
  149:                     ret.append(object)
  150:             return ret
  151:         elif mode=='groups':
  152:             for object in self.getObjects():
  153:                 if object.groupFolder.isMemberOf('reader') or object.groupFolder.isMemberOf('editor') or object.groupFolder.isMemberOf('admin'):
  154:                     ret.append(object)
  155:                 return ret
  156: 
  157:     def getCurrentBasket(self):
  158:         """select this basket for further work"""
  159:      
  160:         id=self.REQUEST.cookies.get('vlp_basket',None)
  161: 	if id:	
  162: 		return getattr(self,id,None)
  163:   	else:
  164: 		return ""
  165:     def index_html(self,mode='open'):
  166:         """generische ansicht"""
  167: 
  168:         #check if user has right for other modi
  169:         
  170:         if hasattr(self,"BasketFolder_template"):
  171:             obj=getattr(self,"BaskeFolder_template")
  172:             return obj()
  173:         else:
  174:             pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','BasketFolder_template_standard.zpt')).__of__(self)
  175:             pt.content_type="text/html"
  176:             return pt(mode=mode)
  177:   
  178:     def __init__(self,id,title):
  179:         """init basket folder"""
  180:         
  181:         self.id=id
  182:         self.title=title
  183:         
  184:     def manageBasketFolder(self):
  185:         """manage the basket"""
  186:         
  187:         if hasattr(self,"BasketFolder_manage_template"):
  188:             obj=getattr(self,"BasketFolder_manage_template")
  189:             return obj()
  190:         else:
  191:             pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','BasketFolder_manage_template_standard.zpt')).__of__(self)
  192:             pt.content_type="text/html"
  193:             return pt()
  194:     
  195:     def addBasket(self,title,RESPONSE=None):
  196:         """add a new basket"""
  197:         id=self.getNewId()
  198:         username=self.getActualUserName()
  199:         publicationStatus="private"
  200:         manage_addBasket(self,str(id),title,"",username,publicationStatus,RESPONSE=None)
  201:         newObj=getattr(self,str(id))
  202:         #create a groupfolder
  203:         
  204:         manage_addGroupFolder(newObj,'groupFolder')
  205:         
  206:         #add current user to admin group of the new set
  207:         
  208:         newObj.groupFolder.addUserToGroups(str(self.REQUEST['AUTHENTICATED_USER']),['admin'])
  209:         if RESPONSE:
  210:             RESPONSE.redirect(newObj.absolute_url()+'/manageBasket')
  211:         
  212: 
  213: def manage_addBasketFolderForm(self):
  214:     """form for adding a basket"""
  215:     pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addBasketFolder.zpt')).__of__(self)
  216:     return pt()
  217: 
  218: def manage_addBasketFolder(self,id,title,RESPONSE=None):
  219:     """add a basket folder object"""
  220: 
  221:   
  222:     newObj=BasketFolder(id,title)
  223:     
  224:     self._setObject(id,newObj)
  225:     
  226:     if RESPONSE is not None:
  227:         RESPONSE.redirect('manage_main')
  228:      
  229: class Basket(BasketBasis):
  230:     """Basket class"""
  231:     
  232:     meta_type="basket"
  233:     
  234:     security=ClassSecurityInfo()
  235:     
  236:     publicationStatusList=publicationStatusList
  237:     
  238:     manage_options=OrderedFolder.manage_options+(
  239:         {'label':'manage main','action':'changeBasketForm'},
  240:         )
  241:     
  242:     def checkPermission(self,modus):
  243:         """check permission"""
  244:         if modus=='open':
  245:             return True
  246:         elif modus=='private':
  247:             return self.groupFolder.isMemberOf('admin')
  248:         elif modus=='admin':
  249:             return self.groupFolder.isMemberOf('admin')
  250:         elif modus=='edit':
  251:             return self.groupFolder.isMemberOf('edit')
  252:         elif modus=='publish':
  253:             return self.groupFolder.isMemberOf('publish')
  254:      
  255:     def manageUserRights_html(self):
  256:         """manage user rights"""
  257:         if hasattr(self,"Basket_manageUserRights_template"):
  258:             obj=getattr(self,"Basket_manageUserRights_template")
  259:             return obj()
  260:         else:
  261:             pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','BasketMain_Basket_manageUserRights_standard.zpt')).__of__(self)
  262:             pt.content_type="text/html"
  263:             return pt()
  264:     
  265:  
  266:     def getBasketObjects(self):
  267:         """get all basket objects"""
  268:         
  269:         objs=self.getObjects()
  270:         ret=[]
  271:         for x in objs:
  272:             if x.meta_type in basketMetatypes:
  273:                ret.append(x)
  274:         return ret
  275:     
  276:     def checkRef(self,xref):
  277:         """check if XRef is already in Basket"""
  278:         
  279:         founds=self.ZopeFind(self,obj_metatypes=["BasketXRef"])
  280:         for found in founds:
  281:             if self.xref==xref:
  282:                 return True
  283:         return False
  284:             
  285:     def __init__(self,id,title,comment,owner,publicationStatus,shortDescription):
  286:         '''
  287:         init the basket
  288:         @param id: id
  289:         @param title: title of the basket
  290:         @param comment: description of the basket
  291:         @param shortDescription: short description of the basket for the overviewList
  292:         @param owner: user object describing the owner
  293:         @param publication_status: one of publicationStatus if restricted, optional parameter accessGroups has to be set
  294:         '''
  295:         
  296:         self.id=id
  297:         self.title=title
  298:         self.comment=comment
  299:         self.owner=owner
  300:         self.publicationStatus=publicationStatus
  301:         self.shortDescription=shortDescription
  302:         
  303:         
  304:  
  305:     def getTitle(self):
  306:         """print name"""
  307:         return self.title
  308:         
  309:     security.declareProtected('Manage','changeBasketForm')
  310:     def changeBasketForm(self):
  311:         """form for changing the basket"""
  312:         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','changeBasket.zpt')).__of__(self)
  313:         return pt()
  314: 
  315: 
  316:     def changeBasket(self,title,comment,shortDescription,publicationStatus=None,username=None,accessGroups=None,RESPONSE=None,target=None):
  317:         '''
  318:         init the basket
  319:         @param title: title of the basket
  320:         @param comment: description of the basket
  321:         @param owner: user object describing the owner
  322:         @param publication_status: one of publicationStatus if restricted, optional parameter accessGroups has to be set
  323:         @param aaccessGroups: default value is none, contains list of groups which are allowed to access this basket
  324:         '''
  325:          #TODO:what happens in username does not exists
  326:         #find username
  327:         owner=username
  328:     
  329:         self.title=title
  330:         self.comment=comment
  331:         if owner:
  332:             self.owner=owner
  333:         if publicationStatus:
  334:             self.publicationStatus=publicationStatus
  335:         if accessGroups:
  336:             self.accessGroups=accessGroups
  337:         self.shortDescription=shortDescription
  338:     
  339:         
  340:         if RESPONSE is not None:
  341:             if target:
  342:                 RESPONSE.redirect(target)
  343:             else:
  344:                 RESPONSE.redirect('manage_main')
  345:                 
  346:     def index_html(self):
  347:         """generische ansicht"""
  348: 
  349:         if hasattr(self,"BasketMain_template"):
  350:             obj=getattr(self,"BasketMain_template")
  351:             return obj()
  352:         else:
  353:             pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','BasketMain_template_standard.zpt')).__of__(self)
  354:             pt.content_type="text/html"
  355:             return pt()
  356:     
  357:     def manageBasket(self):
  358:         """manage the basket"""
  359:         
  360:         if hasattr(self,"BasketMain_manage_template"):
  361:             obj=getattr(self,"BasketMain_manage_template")
  362:             return obj()
  363:         else:
  364:             pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','BasketMain_manage_template_standard.zpt')).__of__(self)
  365:             pt.content_type="text/html"
  366:             return pt()
  367:     
  368:  
  369:     def changeBasketComments(self,REQUEST):
  370:         """Change comment of basket elements"""
  371:         form=REQUEST.form
  372:         
  373:         for key in form.keys():
  374:             splitted=key.split("_")
  375:             objects=self.ZopeFind(self,obj_ids=[splitted[0]])
  376:             if len(objects)>0:
  377:                 setattr(objects[0][1],splitted[1],form[key])
  378: 
  379:    
  380:         if REQUEST:
  381:             REQUEST.RESPONSE.redirect(self.absolute_url()+"/manageBasket")  
  382:               
  383: 
  384:     def selectThisBasketAsCurrent(self,REQUEST=None):
  385:         """select this basket for further work"""
  386:         REQUEST.RESPONSE.setCookie('vlp_basket',self.getId(),path="/")
  387:         
  388:         if REQUEST:
  389:             REQUEST.RESPONSE.redirect(self.absolute_url()+"/manageBasket")
  390:         
  391:    
  392:     def generateNewObject(self,type,link,title='',comment='',REQUEST=None):
  393:         """generate a new object in the basket"""
  394:         
  395:         if type=="xref":
  396: 
  397:             splitted=urllib.unquote(link).split("?")
  398:             if len(splitted)>1:
  399:                 #assumes references id is contained in the url as parameter id=
  400:                 params=cgi.parse_qs(splitted[1])
  401:                 xref=params.get('id',None)
  402:                 return False
  403:             else:
  404:                 #addumes link contains only the reference id
  405:                 xref=link
  406: 
  407:             id=self.getNewId()
  408:             title=""
  409: 
  410:             if xref is None:
  411:                 #no parameter id
  412:                 return False
  413:             manage_addBasketXRef(self,str(id),title,comment,xref)
  414:         
  415:         if REQUEST:
  416:             import random
  417:             rd=random.random()
  418:             REQUEST.RESPONSE.redirect(REQUEST['HTTP_REFERER']+'&-dummy='+str(rd))
  419:         else:
  420:             return True
  421: 
  422: def manage_addBasketForm(self):
  423:     """form for adding a basket"""
  424:     pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addBasket.zpt')).__of__(self)
  425:     return pt()
  426: 
  427: def manage_addBasket(self,id,title,comment,username,publicationStatus,shortDescription="",accessGroups=None,RESPONSE=None):
  428:     """add a basket object"""
  429:     #TODO:what happens in username does not exists
  430:     #find username
  431:     owner=username
  432:   
  433:     newObj=Basket(id,title,comment,owner,publicationStatus,shortDescription)
  434: 
  435:     self._setObject(id,newObj)
  436:     
  437:     if RESPONSE is not None:
  438:         RESPONSE.redirect('manage_main')
  439:      
  440: class BasketBasis(SimpleItem):
  441:     """basic class for baskets"""
  442:     
  443:     #security=ClassSecurityInfo()
  444:     
  445:     manage_options=SimpleItem.manage_options+(
  446:         {'label':'manage main','action':'changeBasketBasisForm'},
  447:         )
  448:     
  449:     def __init__(self,id,title,comment):
  450:         '''
  451:         init basket basis
  452:         @param id: id
  453:         @param title: title
  454:         @param comment commentar:
  455:         '''
  456:         self.id=id
  457:         self.title=title
  458:         self.comment=comment
  459:         
  460:     def changeBasketBasisForm(self):
  461:         """form for changing the basket"""
  462:         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','changeBasketBasis.zpt')).__of__(self)
  463:         return pt()
  464:     
  465:     def changeBasketBasis(self,title,comment,RESPONSE=None):
  466:         '''
  467:         init the basket
  468:         @param title: title of the basket
  469:         @param comment: description of the basket
  470:         '''
  471:         
  472:         self.title=title
  473:         self.comment=comment
  474:         
  475:         if RESPONSE is not None:
  476:             RESPONSE.redirect('manage')
  477:     
  478:     def linkToObject(self):
  479:         """generate url to open the resource, has to be implemented in the different objects, generic return None"""
  480:         return None
  481:     
  482:     def content_html(self,type):
  483:         """generische ausgabe des objectes als html"""
  484:         if hasattr(self,type+"_template"):
  485:             obj=getattr(self,type+"_template")
  486:             return obj()
  487:         else:
  488:             pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','%s_template_standard.zpt'%type)).__of__(self)
  489:             pt.content_type="text/html"
  490:             return pt()
  491:     
  492: class BasketXRef(BasketBasis):
  493:     """class for internal references based on xrefs"""
  494:     
  495:     #security=ClassSecurityInfo()
  496:     meta_type="BasketXRef"
  497: 
  498:     manage_options=BasketBasis.manage_options+(
  499:         {'label':'manage xref','action':'changeBasketXRefForm'},
  500:         )
  501:     
  502:     def changeBasketXRefForm(self):
  503:         """form for changing the basket"""
  504:         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','changeBasketXRef.zpt')).__of__(self)
  505:         return pt()
  506:     
  507:     def changeBasketXRef(self,xref,RESPONSE=None):
  508:         '''
  509:         change the basket
  510:         @param xref: reference
  511:         '''
  512:         
  513:         self.xref=xref
  514:         
  515:         if RESPONSE is not None:
  516:             RESPONSE.redirect('manage')
  517:       
  518:     def linkToObject(self):
  519:         """generate url to open the resource"""
  520:         return refBasis%self.xref
  521:     
  522:     def content_html(self):
  523:         """format object as html fragment"""
  524:         
  525:         type=self.xref[0:3]
  526:         return BasketBasis.content_html(self,"BasketXRef_%s"%type)
  527:     
  528: def manage_addBasketXRefForm(self):
  529:     """form for adding a basket"""
  530:     pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addBasketXRef.zpt')).__of__(self)
  531:     return pt()
  532: 
  533: def manage_addBasketXRef(self,id,title,comment,xref,RESPONSE=None):
  534:     """add a basketXRef object"""
  535:     
  536:     
  537:     newObj=BasketXRef(id,title,comment)
  538:     newObj.xref=xref
  539:     
  540:     self._setObject(id,newObj)
  541:     
  542:     if RESPONSE is not None:
  543:         RESPONSE.redirect('manage_main')
  544:        
  545: class BasketInternalLink(BasketBasis):
  546:     """class for internal referencens based on links"""
  547:     
  548:     #security=ClassSecurityInfo()
  549:     meta_type="BasketInternalLink"
  550:     
  551:     manage_options=BasketBasis.manage_options+(
  552:         {'label':'manage internal link','action':'changeBasketInternalLinkForm'},
  553:         )
  554:  
  555:     def changeBasketInternalLinkForm(self):
  556:         """form for changing the basket"""
  557:         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','changeBasketInternalLink.zpt')).__of__(self)
  558:         return pt()
  559:     
  560:     def changeBasketInternalLink(self,link,linkText,RESPONSE=None):
  561:         '''
  562:         change the Internallink
  563:         @param link: reference
  564:         @param linkText: reference
  565:         '''
  566:         
  567:         self.link=link
  568:         self.linkText=linkText
  569:         
  570:         if RESPONSE is not None:
  571:             RESPONSE.redirect('manage')
  572:     
  573:     def content_html(self):
  574:         """format object as html fragment"""
  575:         
  576:         return BasketBasis.content_html(self,"BasketInternalLink")
  577:     
  578:     def linkToObject(self):
  579:         """link to the object (internalLink)"""
  580:         return self.link
  581:     
  582: def manage_addBasketInternalLinkForm(self):
  583:     """form for adding a basket"""
  584:     pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addBasketInternalLink.zpt')).__of__(self)
  585:     return pt()
  586: 
  587: def manage_addBasketInternalLink(self,id,title,comment,link,linkText,RESPONSE=None):
  588:     """add a basketXRef object"""
  589:     
  590:     
  591:     newObj=BasketInternalLink(id,title,comment)
  592:     newObj.link=link
  593:     newObj.linkText=linkText
  594:     
  595:     self._setObject(id,newObj)
  596:     
  597:     if RESPONSE is not None:
  598:         RESPONSE.redirect('manage_main')
  599:        
  600:     
  601: class BasketExternalLink(BasketBasis):
  602:     """class for external links"""
  603:     
  604:     #security=ClassSecurityInfo()
  605:     meta_type="BasketExternalLink"
  606:     
  607:     manage_options=BasketBasis.manage_options+(
  608:         {'label':'manage internal link','action':'changeBasketExternalLinkForm'},
  609:         )
  610:  
  611:     def changeBasketExternalLinkForm(self):
  612:         """form for changing the basket"""
  613:         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','changeBasketExternalLink.zpt')).__of__(self)
  614:         return pt()
  615:     
  616:     def changeBasketExternalLink(self,link,linkText,RESPONSE=None):
  617:         '''
  618:         change the Externallink
  619:         @param link: reference
  620:         @param linkText: reference
  621:         '''
  622:         
  623:         self.link=link
  624:         self.linkText=linkText
  625:         
  626:         if RESPONSE is not None:
  627:             RESPONSE.redirect('manage')
  628:     
  629:     def content_html(self):
  630:         """format object as html fragment"""
  631:         
  632:         return BasketBasis.content_html(self,"BasketExternalLink")
  633:     
  634:     def linkToObject(self):
  635:         """link to the object (externalLink)"""
  636:         return self.link
  637: 
  638: def manage_addBasketExternalLinkForm(self):
  639:     """form for adding a basket"""
  640:     pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addBasketExternalLink.zpt')).__of__(self)
  641:     return pt()
  642: 
  643: def manage_addBasketExternalLink(self,id,title,comment,link,linkText,RESPONSE=None):
  644:     """add a basket external link object"""
  645:     
  646:     newObj=BasketExternalLink(id,title,comment)
  647:     newObj.link=link
  648:     newObj.linkText=linkText
  649:     
  650:     self._setObject(id,newObj)
  651:     
  652:     if RESPONSE is not None:
  653:         RESPONSE.redirect('manage_main')
  654:        
  655:     
  656: class BasketText(BasketBasis):
  657:     """class for text elements in baskets"""
  658:     
  659:     #security=ClassSecurityInfo()
  660:     meta_type="BasketText"
  661: 
  662:     def content_html(self):
  663:         """format object as html fragment"""
  664:         return "" # text has no content
  665:         #return BasketBasis.content_html(self,"BasketText")
  666:     
  667: def manage_addBasketTextForm(self):
  668:     """form for adding a basket"""
  669:     pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addBasketText.zpt')).__of__(self)
  670:     return pt()
  671: 
  672: def manage_addBasketText(self,id,title,comment,RESPONSE=None):
  673:     """add a basketXRef object"""
  674:     
  675:     
  676:     newObj=BasketText(id,title,comment)
  677:     
  678:     self._setObject(id,newObj)
  679:     
  680:     if RESPONSE is not None:
  681:         RESPONSE.redirect('manage_main')
  682:        
  683:     
  684:     
  685:      

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