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