Annotation of basket/basket.py, revision 1.3

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:      
                    160:         return self.REQUEST.cookies.get('vlp_basket',None)
                    161:   
                    162:     def index_html(self,mode='open'):
                    163:         """generische ansicht"""
                    164: 
                    165:         #check if user has right for other modi
                    166:         
                    167:         if hasattr(self,"BasketFolder_template"):
                    168:             obj=getattr(self,"BaskeFolder_template")
                    169:             return obj()
                    170:         else:
                    171:             pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','BasketFolder_template_standard.zpt')).__of__(self)
                    172:             pt.content_type="text/html"
                    173:             return pt(mode=mode)
                    174:   
                    175:     def __init__(self,id,title):
                    176:         """init basket folder"""
                    177:         
                    178:         self.id=id
                    179:         self.title=title
                    180:         
                    181:     def manageBasketFolder(self):
                    182:         """manage the basket"""
                    183:         
                    184:         if hasattr(self,"BasketFolder_manage_template"):
                    185:             obj=getattr(self,"BasketFolder_manage_template")
                    186:             return obj()
                    187:         else:
                    188:             pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','BasketFolder_manage_template_standard.zpt')).__of__(self)
                    189:             pt.content_type="text/html"
                    190:             return pt()
                    191:     
                    192:     def addBasket(self,title,RESPONSE=None):
                    193:         """add a new basket"""
                    194:         id=self.getNewId()
                    195:         username=self.getActualUserName()
1.3     ! dwinter   196:         publicationStatus="private"
1.2       dwinter   197:         manage_addBasket(self,str(id),title,"",username,publicationStatus,RESPONSE=None)
                    198:         newObj=getattr(self,str(id))
1.3     ! dwinter   199:         #create a groupfolder
        !           200:         
        !           201:         manage_addGroupFolder(newObj,'groupFolder')
        !           202:         
        !           203:         #add current user to admin group of the new set
        !           204:         
        !           205:         newObj.groupFolder.addUserToGroups(str(self.REQUEST['AUTHENTICATED_USER']),['admin'])
1.2       dwinter   206:         if RESPONSE:
                    207:             RESPONSE.redirect(newObj.absolute_url()+'/manageBasket')
                    208:         
                    209: 
                    210: def manage_addBasketFolderForm(self):
                    211:     """form for adding a basket"""
                    212:     pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addBasketFolder.zpt')).__of__(self)
                    213:     return pt()
                    214: 
                    215: def manage_addBasketFolder(self,id,title,RESPONSE=None):
                    216:     """add a basket folder object"""
                    217: 
                    218:   
                    219:     newObj=BasketFolder(id,title)
                    220:     
                    221:     self._setObject(id,newObj)
                    222:     
                    223:     if RESPONSE is not None:
                    224:         RESPONSE.redirect('manage_main')
                    225:      
                    226: class Basket(BasketBasis):
                    227:     """Basket class"""
                    228:     
                    229:     meta_type="basket"
                    230:     
                    231:     security=ClassSecurityInfo()
                    232:     
1.3     ! dwinter   233:     publicationStatusList=publicationStatusList
        !           234:     
1.2       dwinter   235:     manage_options=OrderedFolder.manage_options+(
                    236:         {'label':'manage main','action':'changeBasketForm'},
                    237:         )
                    238:     
1.3     ! dwinter   239:     def checkPermission(self,modus):
        !           240:         """check permission"""
        !           241:         if modus=='open':
        !           242:             return True
        !           243:         elif modus=='private':
        !           244:             return self.groupFolder.isMemberOf('admin')
        !           245:         elif modus=='admin':
        !           246:             return self.groupFolder.isMemberOf('admin')
        !           247:         elif modus=='edit':
        !           248:             return self.groupFolder.isMemberOf('edit')
        !           249:         elif modus=='publish':
        !           250:             return self.groupFolder.isMemberOf('publish')
        !           251:      
        !           252:     def manageUserRights_html(self):
        !           253:         """manage user rights"""
        !           254:         if hasattr(self,"Basket_manageUserRights_template"):
        !           255:             obj=getattr(self,"Basket_manageUserRights_template")
        !           256:             return obj()
        !           257:         else:
        !           258:             pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','BasketMain_Basket_manageUserRights_standard.zpt')).__of__(self)
        !           259:             pt.content_type="text/html"
        !           260:             return pt()
        !           261:     
        !           262:  
        !           263:     def getBasketObjects(self):
        !           264:         """get all basket objects"""
        !           265:         
        !           266:         objs=self.getObjects()
        !           267:         ret=[]
        !           268:         for x in objs:
        !           269:             if x.meta_type in basketMetatypes:
        !           270:                ret.append(x)
        !           271:         return ret
        !           272:     
1.2       dwinter   273:     def checkRef(self,xref):
                    274:         """check if XRef is already in Basket"""
                    275:         
                    276:         founds=self.ZopeFind(self,obj_metatypes=["BasketXRef"])
                    277:         for found in founds:
                    278:             if self.xref==xref:
                    279:                 return True
                    280:         return False
                    281:             
                    282:     def __init__(self,id,title,comment,owner,publicationStatus,shortDescription):
                    283:         '''
                    284:         init the basket
                    285:         @param id: id
                    286:         @param title: title of the basket
                    287:         @param comment: description of the basket
                    288:         @param shortDescription: short description of the basket for the overviewList
                    289:         @param owner: user object describing the owner
                    290:         @param publication_status: one of publicationStatus if restricted, optional parameter accessGroups has to be set
                    291:         '''
                    292:         
                    293:         self.id=id
                    294:         self.title=title
                    295:         self.comment=comment
                    296:         self.owner=owner
                    297:         self.publicationStatus=publicationStatus
                    298:         self.shortDescription=shortDescription
                    299:         
                    300:         
                    301:  
                    302:     def getTitle(self):
                    303:         """print name"""
                    304:         return self.title
                    305:         
                    306:     security.declareProtected('Manage','changeBasketForm')
1.1       dwinter   307:     def changeBasketForm(self):
                    308:         """form for changing the basket"""
                    309:         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','changeBasket.zpt')).__of__(self)
                    310:         return pt()
                    311: 
1.3     ! dwinter   312: 
1.1       dwinter   313:     def changeBasket(self,title,comment,shortDescription,publicationStatus=None,username=None,accessGroups=None,RESPONSE=None,target=None):
                    314:         '''
                    315:         init the basket
                    316:         @param title: title of the basket
                    317:         @param comment: description of the basket
                    318:         @param owner: user object describing the owner
                    319:         @param publication_status: one of publicationStatus if restricted, optional parameter accessGroups has to be set
                    320:         @param aaccessGroups: default value is none, contains list of groups which are allowed to access this basket
                    321:         '''
                    322:          #TODO:what happens in username does not exists
                    323:         #find username
                    324:         owner=username
                    325:     
                    326:         self.title=title
                    327:         self.comment=comment
                    328:         if owner:
                    329:             self.owner=owner
                    330:         if publicationStatus:
                    331:             self.publicationStatus=publicationStatus
                    332:         if accessGroups:
                    333:             self.accessGroups=accessGroups
                    334:         self.shortDescription=shortDescription
                    335:     
                    336:         
                    337:         if RESPONSE is not None:
                    338:             if target:
                    339:                 RESPONSE.redirect(target)
                    340:             else:
                    341:                 RESPONSE.redirect('manage_main')
                    342:                 
                    343:     def index_html(self):
                    344:         """generische ansicht"""
                    345: 
                    346:         if hasattr(self,"BasketMain_template"):
                    347:             obj=getattr(self,"BasketMain_template")
                    348:             return obj()
                    349:         else:
                    350:             pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','BasketMain_template_standard.zpt')).__of__(self)
                    351:             pt.content_type="text/html"
                    352:             return pt()
                    353:     
                    354:     def manageBasket(self):
                    355:         """manage the basket"""
                    356:         
                    357:         if hasattr(self,"BasketMain_manage_template"):
                    358:             obj=getattr(self,"BasketMain_manage_template")
                    359:             return obj()
                    360:         else:
                    361:             pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','BasketMain_manage_template_standard.zpt')).__of__(self)
                    362:             pt.content_type="text/html"
                    363:             return pt()
                    364:     
1.2       dwinter   365:  
1.1       dwinter   366:     def changeBasketComments(self,REQUEST):
                    367:         """Change comment of basket elements"""
                    368:         form=REQUEST.form
                    369:         
                    370:         for key in form.keys():
                    371:             splitted=key.split("_")
                    372:             objects=self.ZopeFind(self,obj_ids=[splitted[0]])
                    373:             if len(objects)>0:
1.2       dwinter   374:                 setattr(objects[0][1],splitted[1],form[key])
                    375: 
1.1       dwinter   376:    
                    377:         if REQUEST:
                    378:             REQUEST.RESPONSE.redirect(self.absolute_url()+"/manageBasket")  
                    379:               
                    380: 
                    381:     def selectThisBasketAsCurrent(self,REQUEST=None):
                    382:         """select this basket for further work"""
                    383:         REQUEST.RESPONSE.setCookie('vlp_basket',self.getId(),path="/")
                    384:         
                    385:         if REQUEST:
                    386:             REQUEST.RESPONSE.redirect(self.absolute_url()+"/manageBasket")
                    387:         
1.2       dwinter   388:    
1.1       dwinter   389:     def generateNewObject(self,type,link,title='',comment='',REQUEST=None):
                    390:         """generate a new object in the basket"""
                    391:         
                    392:         if type=="xref":
                    393: 
                    394:             splitted=urllib.unquote(link).split("?")
                    395:             if len(splitted)>1:
                    396:                 #assumes references id is contained in the url as parameter id=
                    397:                 params=cgi.parse_qs(splitted[1])
                    398:                 xref=params.get('id',None)
                    399:                 return False
                    400:             else:
                    401:                 #addumes link contains only the reference id
                    402:                 xref=link
                    403: 
                    404:             id=self.getNewId()
                    405:             title=""
                    406: 
                    407:             if xref is None:
                    408:                 #no parameter id
                    409:                 return False
                    410:             manage_addBasketXRef(self,str(id),title,comment,xref)
                    411:         
                    412:         if REQUEST:
1.2       dwinter   413:             import random
                    414:             rd=random.random()
                    415:             REQUEST.RESPONSE.redirect(REQUEST['HTTP_REFERER']+'&-dummy='+str(rd))
1.1       dwinter   416:         else:
                    417:             return True
                    418: 
                    419: def manage_addBasketForm(self):
                    420:     """form for adding a basket"""
                    421:     pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addBasket.zpt')).__of__(self)
                    422:     return pt()
                    423: 
1.2       dwinter   424: def manage_addBasket(self,id,title,comment,username,publicationStatus,shortDescription="",accessGroups=None,RESPONSE=None):
1.1       dwinter   425:     """add a basket object"""
                    426:     #TODO:what happens in username does not exists
                    427:     #find username
                    428:     owner=username
1.2       dwinter   429:   
1.3     ! dwinter   430:     newObj=Basket(id,title,comment,owner,publicationStatus,shortDescription)
        !           431: 
1.1       dwinter   432:     self._setObject(id,newObj)
                    433:     
                    434:     if RESPONSE is not None:
                    435:         RESPONSE.redirect('manage_main')
                    436:      
                    437: class BasketBasis(SimpleItem):
                    438:     """basic class for baskets"""
                    439:     
1.2       dwinter   440:     #security=ClassSecurityInfo()
1.1       dwinter   441:     
                    442:     manage_options=SimpleItem.manage_options+(
                    443:         {'label':'manage main','action':'changeBasketBasisForm'},
                    444:         )
                    445:     
                    446:     def __init__(self,id,title,comment):
                    447:         '''
                    448:         init basket basis
                    449:         @param id: id
                    450:         @param title: title
                    451:         @param comment commentar:
                    452:         '''
                    453:         self.id=id
                    454:         self.title=title
                    455:         self.comment=comment
                    456:         
                    457:     def changeBasketBasisForm(self):
                    458:         """form for changing the basket"""
                    459:         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','changeBasketBasis.zpt')).__of__(self)
                    460:         return pt()
                    461:     
                    462:     def changeBasketBasis(self,title,comment,RESPONSE=None):
                    463:         '''
                    464:         init the basket
                    465:         @param title: title of the basket
                    466:         @param comment: description of the basket
                    467:         '''
                    468:         
                    469:         self.title=title
                    470:         self.comment=comment
                    471:         
                    472:         if RESPONSE is not None:
                    473:             RESPONSE.redirect('manage')
                    474:     
                    475:     def linkToObject(self):
                    476:         """generate url to open the resource, has to be implemented in the different objects, generic return None"""
                    477:         return None
                    478:     
                    479:     def content_html(self,type):
                    480:         """generische ausgabe des objectes als html"""
                    481:         if hasattr(self,type+"_template"):
                    482:             obj=getattr(self,type+"_template")
                    483:             return obj()
                    484:         else:
                    485:             pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','%s_template_standard.zpt'%type)).__of__(self)
                    486:             pt.content_type="text/html"
                    487:             return pt()
                    488:     
                    489: class BasketXRef(BasketBasis):
                    490:     """class for internal references based on xrefs"""
                    491:     
1.2       dwinter   492:     #security=ClassSecurityInfo()
1.1       dwinter   493:     meta_type="BasketXRef"
                    494: 
                    495:     manage_options=BasketBasis.manage_options+(
                    496:         {'label':'manage xref','action':'changeBasketXRefForm'},
                    497:         )
                    498:     
                    499:     def changeBasketXRefForm(self):
                    500:         """form for changing the basket"""
                    501:         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','changeBasketXRef.zpt')).__of__(self)
                    502:         return pt()
                    503:     
                    504:     def changeBasketXRef(self,xref,RESPONSE=None):
                    505:         '''
                    506:         change the basket
                    507:         @param xref: reference
                    508:         '''
                    509:         
                    510:         self.xref=xref
                    511:         
                    512:         if RESPONSE is not None:
                    513:             RESPONSE.redirect('manage')
                    514:       
                    515:     def linkToObject(self):
                    516:         """generate url to open the resource"""
                    517:         return refBasis%self.xref
                    518:     
                    519:     def content_html(self):
                    520:         """format object as html fragment"""
                    521:         
                    522:         type=self.xref[0:3]
                    523:         return BasketBasis.content_html(self,"BasketXRef_%s"%type)
                    524:     
                    525: def manage_addBasketXRefForm(self):
                    526:     """form for adding a basket"""
                    527:     pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addBasketXRef.zpt')).__of__(self)
                    528:     return pt()
                    529: 
                    530: def manage_addBasketXRef(self,id,title,comment,xref,RESPONSE=None):
                    531:     """add a basketXRef object"""
                    532:     
                    533:     
                    534:     newObj=BasketXRef(id,title,comment)
                    535:     newObj.xref=xref
                    536:     
                    537:     self._setObject(id,newObj)
                    538:     
                    539:     if RESPONSE is not None:
                    540:         RESPONSE.redirect('manage_main')
                    541:        
                    542: class BasketInternalLink(BasketBasis):
                    543:     """class for internal referencens based on links"""
                    544:     
1.2       dwinter   545:     #security=ClassSecurityInfo()
1.1       dwinter   546:     meta_type="BasketInternalLink"
                    547:     
                    548:     manage_options=BasketBasis.manage_options+(
                    549:         {'label':'manage internal link','action':'changeBasketInternalLinkForm'},
                    550:         )
                    551:  
                    552:     def changeBasketInternalLinkForm(self):
                    553:         """form for changing the basket"""
                    554:         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','changeBasketInternalLink.zpt')).__of__(self)
                    555:         return pt()
                    556:     
                    557:     def changeBasketInternalLink(self,link,linkText,RESPONSE=None):
                    558:         '''
                    559:         change the Internallink
                    560:         @param link: reference
                    561:         @param linkText: reference
                    562:         '''
                    563:         
                    564:         self.link=link
                    565:         self.linkText=linkText
                    566:         
                    567:         if RESPONSE is not None:
                    568:             RESPONSE.redirect('manage')
                    569:     
                    570:     def content_html(self):
                    571:         """format object as html fragment"""
                    572:         
                    573:         return BasketBasis.content_html(self,"BasketInternalLink")
                    574:     
                    575:     def linkToObject(self):
                    576:         """link to the object (internalLink)"""
                    577:         return self.link
                    578:     
                    579: def manage_addBasketInternalLinkForm(self):
                    580:     """form for adding a basket"""
                    581:     pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addBasketInternalLink.zpt')).__of__(self)
                    582:     return pt()
                    583: 
                    584: def manage_addBasketInternalLink(self,id,title,comment,link,linkText,RESPONSE=None):
                    585:     """add a basketXRef object"""
                    586:     
                    587:     
                    588:     newObj=BasketInternalLink(id,title,comment)
                    589:     newObj.link=link
                    590:     newObj.linkText=linkText
                    591:     
                    592:     self._setObject(id,newObj)
                    593:     
                    594:     if RESPONSE is not None:
                    595:         RESPONSE.redirect('manage_main')
                    596:        
                    597:     
                    598: class BasketExternalLink(BasketBasis):
                    599:     """class for external links"""
                    600:     
1.2       dwinter   601:     #security=ClassSecurityInfo()
1.1       dwinter   602:     meta_type="BasketExternalLink"
                    603:     
                    604:     manage_options=BasketBasis.manage_options+(
                    605:         {'label':'manage internal link','action':'changeBasketExternalLinkForm'},
                    606:         )
                    607:  
                    608:     def changeBasketExternalLinkForm(self):
                    609:         """form for changing the basket"""
                    610:         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','changeBasketExternalLink.zpt')).__of__(self)
                    611:         return pt()
                    612:     
                    613:     def changeBasketExternalLink(self,link,linkText,RESPONSE=None):
                    614:         '''
                    615:         change the Externallink
                    616:         @param link: reference
                    617:         @param linkText: reference
                    618:         '''
                    619:         
                    620:         self.link=link
                    621:         self.linkText=linkText
                    622:         
                    623:         if RESPONSE is not None:
                    624:             RESPONSE.redirect('manage')
                    625:     
                    626:     def content_html(self):
                    627:         """format object as html fragment"""
                    628:         
                    629:         return BasketBasis.content_html(self,"BasketExternalLink")
                    630:     
                    631:     def linkToObject(self):
                    632:         """link to the object (externalLink)"""
                    633:         return self.link
                    634: 
                    635: def manage_addBasketExternalLinkForm(self):
                    636:     """form for adding a basket"""
                    637:     pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addBasketExternalLink.zpt')).__of__(self)
                    638:     return pt()
                    639: 
                    640: def manage_addBasketExternalLink(self,id,title,comment,link,linkText,RESPONSE=None):
                    641:     """add a basket external link object"""
                    642:     
                    643:     newObj=BasketExternalLink(id,title,comment)
                    644:     newObj.link=link
                    645:     newObj.linkText=linkText
                    646:     
                    647:     self._setObject(id,newObj)
                    648:     
                    649:     if RESPONSE is not None:
                    650:         RESPONSE.redirect('manage_main')
                    651:        
                    652:     
                    653: class BasketText(BasketBasis):
                    654:     """class for text elements in baskets"""
                    655:     
1.2       dwinter   656:     #security=ClassSecurityInfo()
1.1       dwinter   657:     meta_type="BasketText"
                    658: 
                    659:     def content_html(self):
                    660:         """format object as html fragment"""
                    661:         return "" # text has no content
                    662:         #return BasketBasis.content_html(self,"BasketText")
                    663:     
                    664: def manage_addBasketTextForm(self):
                    665:     """form for adding a basket"""
                    666:     pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addBasketText.zpt')).__of__(self)
                    667:     return pt()
                    668: 
                    669: def manage_addBasketText(self,id,title,comment,RESPONSE=None):
                    670:     """add a basketXRef object"""
                    671:     
                    672:     
                    673:     newObj=BasketText(id,title,comment)
                    674:     
                    675:     self._setObject(id,newObj)
                    676:     
                    677:     if RESPONSE is not None:
                    678:         RESPONSE.redirect('manage_main')
                    679:        
                    680:     
                    681:     
                    682:      

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