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