Annotation of basket/basket.py, revision 1.4

1.1       dwinter     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: 
1.3       dwinter    24: 
                     25: from groups import manage_addGroupFolder
                     26: 
1.1       dwinter    27: refBasis="http://vlp.mpiwg-berlin.mpg.de/references?id=%s1.3       dwinter    28: 
                     29: basketMetatypes=['BasketXRef','BasketInternalLink','BasketExternalLink','BasketText']
                     30: 
1.1       dwinter    31: #basis url for references
                     32: 
1.2       dwinter    33: publicationStatusList=['private','hidden','open_intern','open','group'] 
1.1       dwinter    34: # private only access for the owner, restricted only for users in accessGroup, open open for everyone, published occurs in basket list
                     35: 
1.2       dwinter    36: class BasketBasis(OrderedFolder):
                     37:     """Basis class for BasketFolder and Baskets"""
1.1       dwinter    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
1.2       dwinter    46:     
1.1       dwinter    47:         return last
1.2       dwinter    48:     
1.1       dwinter    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:     
1.2       dwinter    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:         
1.1       dwinter    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")
1.2       dwinter    93:     
                     94:     security.declareProtected('View','getOwner')
1.1       dwinter    95:           
                     96:     def getOwner(self):
                     97:         """get Owner as string"""
                     98:         return self.owner
                     99:     
1.2       dwinter   100:     def isAuthorized(self,role="read"):
                    101:         """check whether actual user is authorized"""
1.3       dwinter   102:         #TODO replace occurences with checkPermission
1.2       dwinter   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:      
1.4     ! dwinter   160:         id=self.REQUEST.cookies.get('vlp_basket',None)
        !           161:    if id:  
        !           162:        return getattr(self,id,None)
        !           163:    else:
        !           164:        return ""
1.2       dwinter   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()
1.3       dwinter   199:         publicationStatus="private"
1.2       dwinter   200:         manage_addBasket(self,str(id),title,"",username,publicationStatus,RESPONSE=None)
                    201:         newObj=getattr(self,str(id))
1.3       dwinter   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'])
1.2       dwinter   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:     
1.3       dwinter   236:     publicationStatusList=publicationStatusList
                    237:     
1.2       dwinter   238:     manage_options=OrderedFolder.manage_options+(
                    239:         {'label':'manage main','action':'changeBasketForm'},
                    240:         )
                    241:     
1.3       dwinter   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:     
1.2       dwinter   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')
1.1       dwinter   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: 
1.3       dwinter   315: 
1.1       dwinter   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:     
1.2       dwinter   368:  
1.1       dwinter   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:
1.2       dwinter   377:                 setattr(objects[0][1],splitted[1],form[key])
                    378: 
1.1       dwinter   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:         
1.2       dwinter   391:    
1.1       dwinter   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:
1.2       dwinter   416:             import random
                    417:             rd=random.random()
                    418:             REQUEST.RESPONSE.redirect(REQUEST['HTTP_REFERER']+'&-dummy='+str(rd))
1.1       dwinter   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: 
1.2       dwinter   427: def manage_addBasket(self,id,title,comment,username,publicationStatus,shortDescription="",accessGroups=None,RESPONSE=None):
1.1       dwinter   428:     """add a basket object"""
                    429:     #TODO:what happens in username does not exists
                    430:     #find username
                    431:     owner=username
1.2       dwinter   432:   
1.3       dwinter   433:     newObj=Basket(id,title,comment,owner,publicationStatus,shortDescription)
                    434: 
1.1       dwinter   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:     
1.2       dwinter   443:     #security=ClassSecurityInfo()
1.1       dwinter   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:     
1.2       dwinter   495:     #security=ClassSecurityInfo()
1.1       dwinter   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:     
1.2       dwinter   548:     #security=ClassSecurityInfo()
1.1       dwinter   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:     
1.2       dwinter   604:     #security=ClassSecurityInfo()
1.1       dwinter   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:     
1.2       dwinter   659:     #security=ClassSecurityInfo()
1.1       dwinter   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>