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