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