1: from OFS.Folder import Folder
2: from OFS.SimpleItem import SimpleItem
3: from Globals import Persistent
4: from Acquisition import Implicit
5: from Products.PageTemplates.PageTemplateFile import PageTemplateFile
6: from Products.PageTemplates.PageTemplate import PageTemplate
7: import re
8: import os
9: import os.path
10: import urllib
11: import xml.dom.minidom
12:
13: def getText(nodelist):
14:
15: rc = ""
16: for node in nodelist:
17:
18: if node.nodeType == node.TEXT_NODE:
19: rc = rc + node.data
20: return rc
21:
22:
23: class ImageDigilib(Folder,Persistent,Implicit):
24: """Anzeige object fuer digilib"""
25: meta_type="ImageDigilib"
26:
27: leiden_meta_fields=['image_id','date','country','place','people','description','photographer']
28:
29: manage_options = Folder.manage_options+(
30:
31: {'label':'Add Metadata','action':'addMetaObjectForm'},
32:
33: )
34:
35: def addMetaObject(self,id,RESPONSE=None):
36: """Add an MetaObject"""
37: objectType=getattr(self.Control_Panel.Products.ImageMetaData,self.genericMetaDataType)
38:
39: request=self.REQUEST
40: objectCreate=objectType.createObjectManager(id,request)
41: #for field in self.leiden_meta_fields:
42: # self.REQUEST[field]=argv[field]
43: self._setObject(id,objectCreate)
44:
45: objectCreate.propertysheets.meta.manage_editProperties(request)
46:
47: if RESPONSE is not None:
48: RESPONSE.redirect('manage_main')
49:
50:
51:
52:
53: def addMetaObjectForm(self):
54: """Add Form"""
55: pt=PageTemplateFile('Products/ImageArchive/zpt/addMetaObject.zpt').__of__(self)
56: return pt()
57:
58:
59: def __init__(self,id,filename,meta=None):
60: self.id=id
61: self.title=filename
62: self.filename=filename
63: self.meta=meta
64:
65: def getMeta(self):
66: """ausgabe der metadaten"""
67: return self.meta
68:
69: def uploadImage(self,fileupload,path_name):
70: """upload an Image from an Requast"""
71: #path_name=self.ImageStoragePath
72: filename=path_name+"/"+fileupload.filename
73: filedata=fileupload.read()
74: f=open(filename,"w")
75: f.write(filedata)
76: f.close()
77: try:
78: os.chmod(filename,0644)
79: except:
80: """hack"""
81: os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl %s /mpiwg/temp/online/scaled/small 100 &"% self.ImageViewerPath)
82:
83:
84:
85:
86:
87: def download(self):
88: """download"""
89: path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+self.filename+"&mo=rawfile,hires"
90: #self.REQUEST.SESSION['string']="<img src=\"%s\">"% path
91: #pt=PageTemplateFile('Products/ImageArchive/thumb.zpt').__of__(self)
92: return self.REQUEST.RESPONSE.redirect(path)
93:
94: def thumb(self):
95: """show thumb"""
96: thumbname=os.path.splitext(self.filename)[0]+".jpg"
97: ## if not os.path.exists("/mpiwg/temp/online/scaled/small/"+self.ImageViewerPath+"/"+thumbname):
98: ## image=urllib.urlopen("http://nausikaa2.rz-berlin.mpg.de:18080/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+self.filename+"&dw=150&mo=lores").read()
99: ## f=open("/mpiwg/temp/online/scaled/small/"+self.ImageViewerPath+"/"+thumbname,"w")
100: ## f.write(image)
101: ## f.close()
102: ## os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl %s /mpiwg/temp/online/scaled/small 150 &"% self.ImageViewerPath)
103:
104: #DEVEL:take nausikaa for server solution
105:
106: path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+self.filename+"&dw=100&dh=100&mo=lores"
107: #path="/mpiwg/online/"+self.ImageViewerPath+"/"+thumbname
108: self.REQUEST.SESSION['string']="<img border=\"0\" src=\"%s\">"% path
109: pt=PageTemplateFile('Products/ImageArchive/zpt/thumb.zpt').__of__(self)
110: return pt()
111:
112: def index_html(self):
113: """show image"""
114: #DEVELOP: take first one for server
115:
116: path="http://content.mpiwg-berlin.mpg.de/zogilib_images?lv=2&fn="+self.ImageViewerPath+"/"+self.filename
117:
118: #path="http://localhost:8080/mpiwg/online/"+self.ImageViewerPath+"/"+self.filename
119: #self.REQUEST.SESSION['string']="<img src=\"%s\">"% path
120: #pt=PageTemplateFile('Products/ImageArchive/thumb.zpt').__of__(self)
121: return self.REQUEST.RESPONSE.redirect(path)
122:
123:
124: def manage_AddImageDigilibForm(self):
125: """Nothing yet"""
126: pt=PageTemplateFile('Products/ImageArchive/zpt/AddImageDigilibForm.zpt').__of__(self)
127: return pt()
128:
129: def manage_AddImageDigilib(self,id,fileupload,meta=None,RESPONSE=None):
130: """Add ImageCollection"""
131: #fileupload=self.REQUEST['fileupload']
132: newObj=ImageDigilib(id,fileupload.filename,meta)
133:
134: self._setObject(id,newObj)
135: getattr(self,id).uploadImage(fileupload,self.ImageStoragePath)
136:
137: if RESPONSE is not None:
138: RESPONSE.redirect('manage_main')
139:
140:
141: class ImageCollection(Folder, Persistent, Implicit):
142: """Sammelordner für Bilder"""
143: meta_type="ImageCollection"
144:
145: genericMetaDataType="leiden_meta"
146:
147: leiden_meta_fields=['image_id','date','country','place','people','description','photographer']
148:
149:
150: defaultMetaString="http://fm-web.mpiwg-berlin.mpg.de:8050/FMRes/FMPJS?-db=Wissenschaftlerportraits.fp5&-layID=69&-token=25&-max=1&-format=formvwcss.htm&-mode=browse&images::filename=%s&-find" ## TEST FUER IMAGEDATENBANK WP
151:
152: def scaleThumbs(self):
153: """scale thumbs"""
154: os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl %s /mpiwg/temp/online/scaled/small 100 &"% self.ImageViewerPath)
155: return "RESCALING STARTED"
156:
157: def __init__(self,id,title,ImageStoragePath,ImageViewerPath,defaultMetaString):
158: self.id=id
159: self.title=title
160: self.ImageStoragePath=ImageStoragePath
161: self.ImageViewerPath=ImageViewerPath
162: self.defaultMetaString=defaultMetaString
163:
164: manage_options = Folder.manage_options+(
165: {'label':'Main Config','action':'ImageCollection_config'},
166: {'label':'Import','action':'ImportFiles'},
167: {'label':'Recalculate Metadata','action':'recalculateMeta'},
168: {'label':'Import Metadata','action':'importMetaForm'},
169: {'label':'Rescale thumbs','action':'scaleThumbs'},
170: )
171:
172:
173: def importMetaForm(self):
174: """import metadata"""
175: pt=PageTemplateFile('Products/ImageArchive/zpt/importMeta.zpt').__of__(self)
176: return pt()
177:
178: def importMeta(self,fileupload,tag):
179: """import"""
180: filedata=fileupload.read()
181: dom=xml.dom.minidom.parseString(filedata)
182: rows=dom.getElementsByTagName(tag)
183: #print "ROWS",rows
184: request=self.REQUEST
185: for row in rows:
186:
187: for a in self.leiden_meta_fields:
188: self.REQUEST[a]=getText(row.getElementsByTagName(a)[0].childNodes)
189:
190: image_id=self.REQUEST['image_id']
191: if (not hasattr(self,image_id)) & (not image_id==""):
192: #print image_id
193: newObj=ImageCollection(str(image_id),image_id,'','','')
194: self._setObject(str(image_id),newObj)
195:
196: id="leiden_meta_data_file"
197: self.REQUEST['id']=id
198: #objectType=getattr(self.Control_Panel.Products.ImageMetaData,self.genericMetaDataType)
199: #objectCreate=objectType.createInObjectManager(id,request)
200: #href="http://localhost:8080/tests/testcollection/manage_addProduct/ImageMetaData/leiden_meta_factory/"
201: try:
202: addID=getattr(self,image_id)
203: objectCreate=addID.manage_addProduct['ImageMetaData'].leiden_meta_add(id)
204: #getattr(self,image_id)._setObject(id,objectCreate)
205: obj=getattr(addID,id)
206: obj.propertysheets.meta.manage_editProperties(request)
207: except:
208: """nothing"""
209: return "OK"
210:
211:
212: def nextImage(self,request,selected=None):
213: """show nextimage"""
214: try:
215: ids=self.show_thumbs()
216: if request.SESSION.has_key("filename"):
217: filename=request.SESSION["filename"]
218: try:
219: nr=ids.index(filename)
220: except:
221: nr=0
222: else:
223: nr=0
224:
225: if nr==len(ids)-1:
226: return ""
227: else:
228: if selected:
229: return "<a href=\""+self.REQUEST['URL1']+"/selection?filename="+ids[nr+1]+"\" target=\"_top\">next image</a>"
230: else:
231: return "<a href=\""+self.REQUEST['URL1']+"?filename="+ids[nr+1]+"\" target=\"_top\">next image</a>"
232: except:
233: return ""
234:
235: def prevImage(self,request,selected=None):
236: """show nextimage"""
237: #return self.getId()
238: try:
239: ids=self.show_thumbs()
240: if request.SESSION.has_key("filename"):
241: filename=request.SESSION["filename"]
242: try:
243: nr=ids.index(filename)
244: except:
245: nr=0
246: else:
247: nr=0
248:
249: if nr==0:
250: return ""
251: else:
252: if selected:
253: return "<a href=\""+self.REQUEST['URL1']+"/selection?filename="+ids[nr-1]+"\" target=\"_top\">previous image</a>"
254: else:
255: return "<a href=\""+self.REQUEST['URL1']+"?filename="+ids[nr-1]+"\" target=\"_top\">previous image</a>"
256: except:
257: return ""
258:
259: def meta_default(self,filename):
260: """url der metadaten"""
261: return self.defaultMetaString % filename
262:
263: def getThumbAttribute(self,id,attr):
264: if hasattr(self,id):
265: return getattr(getattr(self,id),attr)
266: else:
267: if attr=='title':
268: return "<b>Missing Image:%s</b>" % id
269:
270: def getThumbFunction(self,id,attr):
271: #return "DUMP"
272: if hasattr(self,id):
273: return getattr(getattr(self,id),attr)()
274:
275:
276: def xmlinput(self,url):
277: """Anzeige von ausgewaehlten thumbs"""
278: #return url
279:
280: url=urllib.unquote(url)
281: xmldoc=urllib.urlopen(url).read()
282: #print url
283: dom=xml.dom.minidom.parseString(xmldoc)
284:
285: images=dom.getElementsByTagName('imagename')
286: rc=[]
287: for image in images:
288: text=getText(image.childNodes)
289: if not text=="":
290: rc.append(str(text))
291: rc.sort()
292: self.REQUEST.SESSION['filenames']=rc
293: pt=PageTemplateFile('Products/ImageArchive/zpt/overview_selected.zpt').__of__(self)
294: return pt()
295:
296: def recalculateMeta(self):
297: """recalculate the metadata"""
298:
299: for entryid in self.__dict__:
300: entry=getattr(self,entryid)
301: if hasattr(entry,'meta_type'):
302:
303: if entry.meta_type=="ImageDigilib":
304: entry.meta=entry.meta_default(entry.getId())
305: return "OK"
306:
307: def addImage(self):
308: """Add an Image"""
309: pt=PageTemplateFile('Products/ImageArchive/zpt/addImage.zpt').__of__(self)
310: return pt()
311:
312: def addImage2(self,fileupload,meta,use_default=None,RESPONSE=None):
313: """Add"""
314: #print "FU",fileupload
315:
316: if use_default:
317: try:
318: meta=self.meta_default(fileupload.filename)
319: except:
320: meta=None
321: else:
322: meta=None
323:
324: manage_AddImageDigilib(self,fileupload.filename,fileupload,meta=meta)
325: return RESPONSE.redirect(self.REQUEST['URL1']+'/'+fileupload.filename)
326: #return self.REQUEST['URL1']+'/'+fileupload.filename
327:
328: def ImportFiles2(self,RESPONSE=None):
329: """Import the existing files of a folder"""
330: files=os.listdir(self.ImageStoragePath)
331: ret=""
332: #print self.__dict__
333: for file in files:
334: if not file[0]==".":
335: if self.__dict__.has_key(file):
336:
337: ret=ret+"<br>"+file+" already exists!"
338: else:
339: ret=ret+"<br>"+file+" created!"
340: meta=self.meta_default(file)
341: newObj=ImageDigilib(file,file,meta)
342: #print newObj,file
343: #print newObj
344: self._setObject(file,newObj)
345: #print ret
346: #pt=PageTemplateFile('Products/ImageArchive/out.zpt').__of__(self)
347: #print self.ImageStoragePath
348: os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl %s /mpiwg/temp/online/scaled/small 100 &"% self.ImageViewerPath)
349: RESPONSE.redirect('manage_main')
350:
351: def ImportFiles(self,RESPONSE=None):
352: """Import the existing files of a folder"""
353: files=os.listdir(self.ImageStoragePath)
354: ret=""
355: #print self.__dict__
356: for file in files:
357: if not file[0]==".":
358: if self.__dict__.has_key(file):
359:
360: ret=ret+"<br>"+file+" already exists!"
361: else:
362: ret=ret+"<br>"+file+" created!"
363: newObj=ImageDigilib(file,file)
364: #print newObj,file
365: #print newObj
366: try:
367: self._setObject(file,newObj)
368: except:
369: """nothing yet"""
370: #print ret
371: #pt=PageTemplateFile('Products/ImageArchive/out.zpt').__of__(self)
372: #print self.ImageStoragePath
373: os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl %s /mpiwg/temp/online/scaled/small 100 &"% self.ImageViewerPath)
374: RESPONSE.redirect('manage_main')
375:
376: def ImageCollection_config(self):
377: """Nothing yet"""
378: if not hasattr(self,'defaultMetaString'):
379: self.defaultMetaString=""
380:
381: pt=PageTemplateFile('Products/ImageArchive/zpt/ChangeImageCollectionForm.zpt').__of__(self)
382: return pt()
383:
384: def ChangeImageCollection(self,title,ImageStoragePath,ImageViewerPath,defaultMetaString,RESPONSE=None):
385: """Change"""
386: self.title=title
387: self.ImageStoragePath=ImageStoragePath
388: self.ImageViewerPath=ImageViewerPath
389: self.defaultMetaString=defaultMetaString
390:
391: if RESPONSE is not None:
392: RESPONSE.redirect('manage_main')
393:
394: def show_selected_thumbs(self):
395: #ids=[]
396:
397: return self.REQUEST.SESSION['filenames']
398:
399: def show_thumbs(self):
400: ids=[]
401: for entry in self.__dict__:
402: #print entry
403: if hasattr(getattr(self,entry),'thumb'):
404: ids.append(entry)
405:
406: #print ids
407: ids.sort()
408: return ids
409:
410: def firstSets(self,selected=None):
411: ids=self.show_thumbs()
412: if ids:
413: if selected:
414: return "<a href=\""+self.REQUEST['URL1']+"/selection?filename="+ids[0]+"\" target=\"_top\">first sets</a>"
415: else:
416: return "<a href=\""+self.REQUEST['URL1']+"?filename="+ids[0]+"\" target=\"_top\">first sets</a>"
417:
418: def lastSets(self,selected=None):
419: ids=self.show_thumbs()
420: if ids:
421: colRows=self.getColTimesRow()
422:
423: if colRows[1]:
424: nr=len(ids)-colRows[0]*colRows[1]
425: else:
426: nr=0
427:
428: if nr<0:
429: nr=0
430:
431: if selected:
432: return "<a href=\""+self.REQUEST['URL1']+"/selection?filename="+ids[nr]+"\" target=\"_top\">last set</a>"
433: else:
434: return "<a href=\""+self.REQUEST['URL1']+"?filename="+ids[nr]+"\" target=\"_top\">last sets</a>"
435:
436:
437:
438: def nextSets(self,selected=None):
439: """show nextimage"""
440: ids=self.show_thumbs()
441: colRows=self.getColTimesRow()
442: if ids:
443: if colRows[1]:
444:
445: if self.REQUEST.SESSION.has_key("filename"):
446: filename=self.REQUEST.SESSION["filename"]
447: try:
448: nr=ids.index(filename)+colRows[0]*colRows[1]
449: if nr>=len(ids):
450: nr=len(ids)-1
451: except:
452: nr=0
453: else:
454: nr=0
455:
456: if nr==len(ids)-1:
457: return ""
458: else:
459: if selected:
460: return "<a href=\""+self.REQUEST['URL1']+"/selection?filename="+ids[nr]+"\" target=\"_top\">next set</a>"
461: else:
462: return "<a href=\""+self.REQUEST['URL1']+"?filename="+ids[nr]+"\" target=\"_top\">next set</a>"
463:
464: def prevSets(self,selected=None):
465:
466: """show nextimage"""
467: #return self.getId()
468: ids=self.show_thumbs()
469: colRows=self.getColTimesRow()
470: if ids:
471: if colRows[1]:
472: if self.REQUEST.SESSION.has_key("filename"):
473: filename=self.REQUEST.SESSION["filename"]
474: try:
475: nr=ids.index(filename)-colRows[0]*colRows[1]
476: if nr<0:
477: nr=0
478: except:
479: nr=0
480: else:
481: nr=0
482: try:
483: num=ids.index(filename)
484: except:
485: num=0
486:
487: if num==0:
488: return ""
489: else:
490: if selected:
491: return "<a href=\""+self.REQUEST['URL1']+"/selection?filename="+ids[nr]+"\" target=\"_top\">previous sets</a>"
492: else:
493: return "<a href=\""+self.REQUEST['URL1']+"?filename="+ids[nr]+"\" target=\"_top\">previous sets</a>"
494: else:
495: return ""
496:
497: def show_thumbs_selected_rows(self,numberOfColumns):
498: """Ausgabe anzahl"""
499: ids=self.show_selected_thumbs()
500: self.REQUEST.SESSION['ids']=ids
501: number=int(len(ids)/numberOfColumns)+1
502: self.REQUEST.SESSION['number']=range(number)
503: return range(number+1)
504:
505: def setColTimesRowForm(self):
506: """form for matrix setting"""
507: pt=PageTemplateFile('Products/ImageArchive/zpt/selectColTimesRow.zpt').__of__(self)
508: return pt()
509:
510: def setDone(self):
511: """done"""
512:
513: pt=PageTemplateFile('Products/ImageArchive/zpt/changedColTimesRow.zpt').__of__(self)
514: return pt()
515:
516: def setColTimesRow(self,cols,rows):
517: """set coltimes row"""
518: RESPONSE=self.REQUEST.RESPONSE
519: if not rows:
520: rows=None
521: if rows=="":
522: rows=None
523:
524: if rows:
525: RESPONSE.setCookie("ImageViewerRows",rows)
526: RESPONSE.setCookie("ImageViewerCols",cols)
527:
528: RESPONSE.redirect(self.REQUEST['URL1']+"/setDone")
529:
530: def getColTimesRow(self):
531: """coltimesrow"""
532:
533: REQUEST=self.REQUEST
534: """matrix"""
535: if REQUEST.cookies.has_key("ImageViewerRows"):
536:
537: try:
538: rows=int(REQUEST.cookies["ImageViewerRows"])
539: except:
540: rows=6
541: else:
542: rows=6
543:
544: if REQUEST.cookies.has_key("ImageViewerCols"):
545: #print "COLS",REQUEST.cookies["ImageViewerCols"]
546: cols=int(REQUEST.cookies["ImageViewerCols"])
547: else:
548: cols=2
549:
550: idsnumber=len(self.show_thumbs())
551: if rows:
552: if cols*rows >idsnumber:
553: rows=int(idsnumber/cols)+1
554: return (cols,rows)
555:
556:
557: def show_thumbs_rows(self,numberOfColumns,numberOfRows=None,startId=None):
558: """Ausgabe anzahl"""
559:
560: idsAll=self.show_thumbs()
561:
562: if self.REQUEST.SESSION.has_key("filename"):
563: filename=self.REQUEST.SESSION["filename"]
564: try:
565: startId=filename
566: except:
567: startId=idsAll[0]
568: else:
569: startId=idsAll[0]
570:
571:
572: print "NOR:",numberOfRows
573:
574: if numberOfRows:
575: try:
576: startPic=idsAll.index(startId)
577: endPic=startPic+numberOfColumns*numberOfRows
578: ids=idsAll[startPic:endPic]
579: except:
580: ids=idsAll
581: else:
582: ids=idsAll
583:
584:
585: self.REQUEST.SESSION['ids']=ids
586: number=int(len(ids)/numberOfColumns)+1
587:
588: return range(number+1)
589:
590: def show_thumbs_columns(self,row,numberOfColumns):
591: """Ausgabe einer Liste der Reihe"""
592: ids=self.REQUEST.SESSION['ids']
593: max=len(ids)
594: if (row*numberOfColumns)<max:
595: return ids[(row-1)*numberOfColumns:row*numberOfColumns]
596: else:
597: return ids[(row-1)*numberOfColumns:]
598:
599: def thumblistSelected_old(self):
600: """main template collection"""
601: pt=PageTemplateFile('Products/ImageArchive/zpt/thumbselected.zpt').__of__(self)
602: return pt()
603:
604: def thumblistSelected(self):
605: """main template collection"""
606: pt=PageTemplateFile('Products/ImageArchive/zpt/thumbselected2.zpt').__of__(self)
607: return pt()
608:
609: def thumblist_old(self):
610: """main template collection"""
611: pt=PageTemplateFile('Products/ImageArchive/zpt/thumbs.zpt').__of__(self)
612: return pt()
613:
614: def thumblist(self):
615: """main template collection"""
616: pt=PageTemplateFile('Products/ImageArchive/zpt/thumb2.zpt').__of__(self)
617: return pt()
618:
619: def navig_selected_html(self):
620: """navigation"""
621: #self.REQUEST.SESSION['URL']=self.REQUEST['URL0']
622: pt=PageTemplateFile('Products/ImageArchive/zpt/navigation_selected.zpt').__of__(self)
623: return pt()
624:
625: def navig_html(self):
626: """navigation"""
627: #self.REQUEST.SESSION['URL']=self.REQUEST['URL0']
628: pt=PageTemplateFile('Products/ImageArchive/zpt/navigation.zpt').__of__(self)
629: return pt()
630:
631:
632: def selection(self):
633: """show only selected"""
634: if self.REQUEST.has_key('filename'):
635: filen=self.REQUEST['filename']
636: else:
637: filen=""
638: self.REQUEST.SESSION['filename']=filen
639: pt=PageTemplateFile('Products/ImageArchive/zpt/overview_selected2.zpt').__of__(self)
640: return pt()
641:
642: def index_html(self):
643: """main template collection"""
644: if self.REQUEST.has_key('filename'):
645: filen=self.REQUEST['filename']
646: else:
647: filen=""
648: self.REQUEST.SESSION['filename']=filen
649: pt=PageTemplateFile('Products/ImageArchive/zpt/overview.zpt').__of__(self)
650: return pt()
651:
652: def manage_AddImageCollectionForm(self):
653: """Nothing yet"""
654: pt=PageTemplateFile('Products/ImageArchive/zpt/AddImageCollectionForm.zpt').__of__(self)
655: return pt()
656:
657: def manage_AddImageCollection(self,id,title,ImageStoragePath,ImageViewerPath,defaultMetaString,RESPONSE=None):
658: """Add ImageCollection"""
659: newObj=ImageCollection(id,title,ImageStoragePath,ImageViewerPath,defaultMetaString)
660: self._setObject(id,newObj)
661:
662: if RESPONSE is not None:
663: RESPONSE.redirect('manage_main')
664:
665:
666: class ImageCollectionIFrame(ImageCollection):
667: """Class fuer Collection set als IFrame"""
668:
669: meta_type="ImageCollectionIFrame"
670: label=ImageCollection.title
671:
672: def rotate(self,angle,url,RESPONSE):
673: """rotate"""
674:
675: RESPONSE.redirect("javascript:document.domain='mpg.de';parent.iframe.right.rotation(%i)"%int(angle))
676: RESPONSE.redirect(url)
677: def request(self):
678: """request"""
679: return self.REQUEST
680:
681: def index_html(self):
682: """index"""
683: if self.REQUEST.has_key('filename'):
684: filen=self.REQUEST['filename']
685: else:
686: filen=""
687: self.REQUEST.SESSION['filename']=filen
688:
689:
690: pt=PageTemplateFile('Products/ImageArchive/zpt/IFrameMain.zpt').__of__(self)
691: return pt()
692:
693: def iframe_html(self):
694: """iframe"""
695: if self.REQUEST.has_key('filename'):
696: filen=self.REQUEST['filename']
697: else:
698: filen=""
699: self.REQUEST.response.setCookie('filename',filen)
700: pt=PageTemplateFile('Products/ImageArchive/zpt/IFrameOverview.zpt').__of__(self)
701: return pt()
702:
703:
704: def manage_AddImageCollectionIFrameForm(self):
705: """Nothing yet"""
706: pt=PageTemplateFile('Products/ImageArchive/zpt/AddImageCollectionIFrameForm.zpt').__of__(self)
707: return pt()
708:
709: def manage_AddImageCollectionIFrame(self,id,title,ImageStoragePath,ImageViewerPath,defaultMetaString,RESPONSE=None):
710: """Add ImageCollection"""
711: newObj=ImageCollectionIFrame(id,title,ImageStoragePath,ImageViewerPath,defaultMetaString)
712: self._setObject(id,newObj)
713:
714: if RESPONSE is not None:
715: RESPONSE.redirect('manage_main')
716:
717:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>