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:
42: self._setObject(id,objectCreate)
43:
44: objectCreate.propertysheets.meta.manage_editProperties(request)
45:
46: if RESPONSE is not None:
47: RESPONSE.redirect('manage_main')
48:
49:
50:
51:
52: def addMetaObjectForm(self):
53: """Add Form"""
54: pt=PageTemplateFile('Products/ImageArchive/zpt/addMetaObject.zpt').__of__(self)
55: return pt()
56:
57:
58: def __init__(self,id,filename,meta=None):
59: self.id=id
60: self.title=filename
61: self.filename=filename
62: self.meta=meta
63:
64: def getMeta(self):
65: """ausgabe der metadaten"""
66: return self.meta
67:
68: def uploadImage(self,fileupload,path_name):
69: """upload an Image from an Requast"""
70: #path_name=self.ImageStoragePath
71: filename=path_name+"/"+fileupload.filename
72: filedata=fileupload.read()
73: f=open(filename,"w")
74: f.write(filedata)
75: f.close()
76: try:
77: os.chmod(filename,0644)
78: except:
79: """hack"""
80:
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: {'label':'Weight (ECHO)','action':'weightForm'},
171: )
172:
173: def weightForm(self):
174: """Weight"""
175: pt=PageTemplateFile('Products/ImageArchive/zpt/changeWeight.zpt').__of__(self)
176: return pt()
177:
178: def changeWeight(self,weight,RESPONSE=None):
179: """Change weight"""
180: self.weight=weight
181:
182: if RESPONSE is not None:
183: RESPONSE.redirect('manage_main')
184:
185:
186: def importMetaForm(self):
187: """import metadata"""
188: pt=PageTemplateFile('Products/ImageArchive/zpt/importMeta.zpt').__of__(self)
189: return pt()
190:
191: def importMeta(self,fileupload,tag):
192: """import"""
193: filedata=fileupload.read()
194: dom=xml.dom.minidom.parseString(filedata)
195: rows=dom.getElementsByTagName(tag)
196: #print "ROWS",rows
197: request=self.REQUEST
198: for row in rows:
199:
200: for a in self.leiden_meta_fields:
201: self.REQUEST[a]=getText(row.getElementsByTagName(a)[0].childNodes)
202:
203: image_id=self.REQUEST['image_id']
204: if (not hasattr(self,image_id)) & (not image_id==""):
205: #print image_id
206: newObj=ImageCollection(str(image_id),image_id,'','','')
207: self._setObject(str(image_id),newObj)
208:
209: id="leiden_meta_data_file"
210: self.REQUEST['id']=id
211: #objectType=getattr(self.Control_Panel.Products.ImageMetaData,self.genericMetaDataType)
212: #objectCreate=objectType.createInObjectManager(id,request)
213: #href="http://localhost:8080/tests/testcollection/manage_addProduct/ImageMetaData/leiden_meta_factory/"
214: try:
215: addID=getattr(self,image_id)
216: objectCreate=addID.manage_addProduct['ImageMetaData'].leiden_meta_add(id)
217: #getattr(self,image_id)._setObject(id,objectCreate)
218: obj=getattr(addID,id)
219: obj.propertysheets.meta.manage_editProperties(request)
220: except:
221: """nothing"""
222: return "OK"
223:
224:
225: def nextImage(self,request,selected=None):
226: """show nextimage"""
227: try:
228: ids=self.show_thumbs()
229: if request.SESSION.has_key("filename"):
230: filename=request.SESSION["filename"]
231: try:
232: nr=ids.index(filename)
233: except:
234: nr=0
235: else:
236: nr=0
237:
238: if nr==len(ids)-1:
239: return ""
240: else:
241: if selected:
242: return "<a href=\""+self.REQUEST['URL1']+"/selection?filename="+ids[nr+1]+"\" target=\"_top\">next image</a>"
243: else:
244: return "<a href=\""+self.REQUEST['URL1']+"?filename="+ids[nr+1]+"\" target=\"_top\">next image</a>"
245: except:
246: return ""
247:
248: def prevImage(self,request,selected=None):
249: """show nextimage"""
250: #return self.getId()
251: try:
252: ids=self.show_thumbs()
253: if request.SESSION.has_key("filename"):
254: filename=request.SESSION["filename"]
255: try:
256: nr=ids.index(filename)
257: except:
258: nr=0
259: else:
260: nr=0
261:
262: if nr==0:
263: return ""
264: else:
265: if selected:
266: return "<a href=\""+self.REQUEST['URL1']+"/selection?filename="+ids[nr-1]+"\" target=\"_top\">previous image</a>"
267: else:
268: return "<a href=\""+self.REQUEST['URL1']+"?filename="+ids[nr-1]+"\" target=\"_top\">previous image</a>"
269: except:
270: return ""
271:
272: def meta_default(self,filename):
273: """url der metadaten"""
274: return self.defaultMetaString % filename
275:
276: def getThumbAttribute(self,id,attr):
277: if hasattr(self,id):
278: return getattr(getattr(self,id),attr)
279: else:
280: if attr=='title':
281: return "<b>Missing Image:%s</b>" % id
282:
283: def getThumbFunction(self,id,attr):
284: #return "DUMP"
285: if hasattr(self,id):
286: return getattr(getattr(self,id),attr)()
287:
288:
289: def xmlinput(self,url):
290: """Anzeige von ausgewaehlten thumbs"""
291: #return url
292:
293: url=urllib.unquote(url)
294: xmldoc=urllib.urlopen(url).read()
295: #print url
296: dom=xml.dom.minidom.parseString(xmldoc)
297:
298: images=dom.getElementsByTagName('imagename')
299: rc=[]
300: for image in images:
301: text=getText(image.childNodes)
302: if not text=="":
303: rc.append(str(text))
304: rc.sort()
305: self.REQUEST.SESSION['filenames']=rc
306: pt=PageTemplateFile('Products/ImageArchive/zpt/overview_selected.zpt').__of__(self)
307: return pt()
308:
309: def recalculateMeta(self):
310: """recalculate the metadata"""
311:
312: for entryid in self.__dict__:
313: entry=getattr(self,entryid)
314: if hasattr(entry,'meta_type'):
315:
316: if entry.meta_type=="ImageDigilib":
317: entry.meta=entry.meta_default(entry.getId())
318: return "OK"
319:
320: def addImage(self):
321: """Add an Image"""
322: pt=PageTemplateFile('Products/ImageArchive/zpt/addImage.zpt').__of__(self)
323: return pt()
324:
325: def addImage2(self,fileupload,meta,use_default=None,RESPONSE=None):
326: """Add"""
327: #print "FU",fileupload
328:
329: if use_default:
330: try:
331: meta=self.meta_default(fileupload.filename)
332: except:
333: meta=None
334: else:
335: meta=None
336:
337: manage_AddImageDigilib(self,fileupload.filename,fileupload,meta=meta)
338: return RESPONSE.redirect(self.REQUEST['URL1']+'/'+fileupload.filename)
339: #return self.REQUEST['URL1']+'/'+fileupload.filename
340:
341: def ImportFiles2(self,RESPONSE=None):
342: """Import the existing files of a folder"""
343: files=os.listdir(self.ImageStoragePath)
344: ret=""
345: #print self.__dict__
346: for file in files:
347: if not file[0]==".":
348: if self.__dict__.has_key(file):
349:
350: ret=ret+"<br>"+file+" already exists!"
351: else:
352: ret=ret+"<br>"+file+" created!"
353: meta=self.meta_default(file)
354: newObj=ImageDigilib(file,file,meta)
355: #print newObj,file
356: #print newObj
357: self._setObject(file,newObj)
358: #print ret
359: #pt=PageTemplateFile('Products/ImageArchive/out.zpt').__of__(self)
360: #print self.ImageStoragePath
361: os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl %s /mpiwg/temp/online/scaled/small 100 &"% self.ImageViewerPath)
362: RESPONSE.redirect('manage_main')
363:
364: def ImportFiles(self,RESPONSE=None):
365: """Import the existing files of a folder"""
366: files=os.listdir(self.ImageStoragePath)
367: ret=""
368: #print self.__dict__
369: for file in files:
370: if not file[0]==".":
371: if self.__dict__.has_key(file):
372:
373: ret=ret+"<br>"+file+" already exists!"
374: else:
375: ret=ret+"<br>"+file+" created!"
376: newObj=ImageDigilib(file,file)
377: #print newObj,file
378: #print newObj
379: try:
380: self._setObject(file,newObj)
381: except:
382: """nothing yet"""
383: #print ret
384: #pt=PageTemplateFile('Products/ImageArchive/out.zpt').__of__(self)
385: #print self.ImageStoragePath
386: os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl %s /mpiwg/temp/online/scaled/small 100 &"% self.ImageViewerPath)
387: RESPONSE.redirect('manage_main')
388:
389: def ImageCollection_config(self):
390: """Nothing yet"""
391: if not hasattr(self,'defaultMetaString'):
392: self.defaultMetaString=""
393:
394: pt=PageTemplateFile('Products/ImageArchive/zpt/ChangeImageCollectionForm.zpt').__of__(self)
395: return pt()
396:
397: def ChangeImageCollection(self,title,ImageStoragePath,ImageViewerPath,defaultMetaString,RESPONSE=None):
398: """Change"""
399: self.title=title
400: self.ImageStoragePath=ImageStoragePath
401: self.ImageViewerPath=ImageViewerPath
402: self.defaultMetaString=defaultMetaString
403:
404: if RESPONSE is not None:
405: RESPONSE.redirect('manage_main')
406:
407: def show_selected_thumbs(self):
408: #ids=[]
409:
410: return self.REQUEST.SESSION['filenames']
411:
412: def show_thumbs(self):
413: ids=[]
414: for entry in self.__dict__:
415: #print entry
416: if hasattr(getattr(self,entry),'thumb'):
417: ids.append(entry)
418:
419: #print ids
420: ids.sort()
421: return ids
422:
423: def firstSets(self,selected=None):
424: ids=self.show_thumbs()
425: if ids:
426: if selected:
427: return "<a href=\""+self.REQUEST['URL1']+"/selection?filename="+ids[0]+"\" target=\"_top\">first sets</a>"
428: else:
429: return "<a href=\""+self.REQUEST['URL1']+"?filename="+ids[0]+"\" target=\"_top\">first sets</a>"
430:
431: def lastSets(self,selected=None):
432: ids=self.show_thumbs()
433: if ids:
434: colRows=self.getColTimesRow()
435:
436: if colRows[1]:
437: nr=len(ids)-colRows[0]*colRows[1]
438: else:
439: nr=0
440:
441: if nr<0:
442: nr=0
443:
444: if selected:
445: return "<a href=\""+self.REQUEST['URL1']+"/selection?filename="+ids[nr]+"\" target=\"_top\">last set</a>"
446: else:
447: return "<a href=\""+self.REQUEST['URL1']+"?filename="+ids[nr]+"\" target=\"_top\">last sets</a>"
448:
449:
450:
451: def nextSets(self,selected=None):
452: """show nextimage"""
453: ids=self.show_thumbs()
454: colRows=self.getColTimesRow()
455: if ids:
456: if colRows[1]:
457:
458: if self.REQUEST.SESSION.has_key("filename"):
459: filename=self.REQUEST.SESSION["filename"]
460: try:
461: nr=ids.index(filename)+colRows[0]*colRows[1]
462: if nr>=len(ids):
463: nr=len(ids)-1
464: except:
465: nr=0
466: else:
467: nr=0
468:
469: if nr==len(ids)-1:
470: return ""
471: else:
472: if selected:
473: return "<a href=\""+self.REQUEST['URL1']+"/selection?filename="+ids[nr]+"\" target=\"_top\">next set</a>"
474: else:
475: return "<a href=\""+self.REQUEST['URL1']+"?filename="+ids[nr]+"\" target=\"_top\">next set</a>"
476:
477: def prevSets(self,selected=None):
478:
479: """show nextimage"""
480: #return self.getId()
481: ids=self.show_thumbs()
482: colRows=self.getColTimesRow()
483: if ids:
484: if colRows[1]:
485: if self.REQUEST.SESSION.has_key("filename"):
486: filename=self.REQUEST.SESSION["filename"]
487: try:
488: nr=ids.index(filename)-colRows[0]*colRows[1]
489: if nr<0:
490: nr=0
491: except:
492: nr=0
493: else:
494: nr=0
495: try:
496: num=ids.index(filename)
497: except:
498: num=0
499:
500: if num==0:
501: return ""
502: else:
503: if selected:
504: return "<a href=\""+self.REQUEST['URL1']+"/selection?filename="+ids[nr]+"\" target=\"_top\">previous sets</a>"
505: else:
506: return "<a href=\""+self.REQUEST['URL1']+"?filename="+ids[nr]+"\" target=\"_top\">previous sets</a>"
507: else:
508: return ""
509:
510: def showRuler(self,selected=None):
511: """show ruler"""
512: showall =self.REQUEST.SESSION.get('showall','no')
513: if showall=='no':
514: ids=self.show_thumbs()
515: colRows=self.getColTimesRow()
516: num=int(len(ids)/(colRows[0]*colRows[1]))
517: a=colRows[0]*colRows[1]
518: #print num,num+1
519: if num+1>1:
520:
521: ret="<b>Show thumbnail group no:</b></br>"
522: for i in range(num+1):
523: k=i*a
524: if selected:
525: href=self.REQUEST['URL1']+"/selection?filename="+ids[k]
526: else:
527: href=self.REQUEST['URL1']+"?filename="+ids[k]
528:
529: ret+="""<a href="%s" target="_top">%i</a> """%(href,i)
530:
531: else:
532: ret=""
533: ret+="""<a href="%s?showall=yes" target="_top">show all</a> """%self.REQUEST['URL1']
534: else:
535: ret="""<a href="%s?showall=no" target="_top">show groups</a> """%self.REQUEST['URL1']
536:
537: return ret
538:
539: def show_thumbs_selected_rows(self,numberOfColumns):
540: """Ausgabe anzahl"""
541: ids=self.show_selected_thumbs()
542: self.REQUEST.SESSION['ids']=ids
543: number=int(len(ids)/numberOfColumns)+1
544: self.REQUEST.SESSION['number']=range(number)
545: return range(number+1)
546:
547: def setColTimesRowForm(self):
548: """form for matrix setting"""
549: pt=PageTemplateFile('Products/ImageArchive/zpt/selectColTimesRow.zpt').__of__(self)
550: return pt()
551:
552: def setDone(self):
553: """done"""
554:
555: pt=PageTemplateFile('Products/ImageArchive/zpt/changedColTimesRow.zpt').__of__(self)
556: return pt()
557:
558: def setColTimesRow(self,cols,rows):
559: """set coltimes row"""
560: RESPONSE=self.REQUEST.RESPONSE
561: if not rows:
562: rows=None
563: if rows=="":
564: rows=None
565:
566: if rows:
567: RESPONSE.setCookie("ImageViewerRows",rows)
568: RESPONSE.setCookie("ImageViewerCols",cols)
569:
570: RESPONSE.redirect(self.REQUEST['URL1']+"/setDone")
571:
572: def getColTimesRow(self,showall='No'):
573: """coltimesrow"""
574:
575: REQUEST=self.REQUEST
576: """matrix"""
577: if REQUEST.cookies.has_key("ImageViewerRows"):
578:
579: try:
580: rows=int(REQUEST.cookies["ImageViewerRows"])
581: except:
582: rows=6
583: else:
584: rows=6
585:
586: if REQUEST.cookies.has_key("ImageViewerCols"):
587: #print "COLS",REQUEST.cookies["ImageViewerCols"]
588: cols=int(REQUEST.cookies["ImageViewerCols"])
589: else:
590: cols=2
591:
592: idsnumber=len(self.show_thumbs())
593: if rows:
594: if cols*rows >idsnumber:
595: rows=int(idsnumber/cols)+1
596:
597: #print cols,rows
598: if showall=='yes':
599: rows=int(idsnumber/cols)+1
600:
601: return (cols,rows)
602:
603:
604: def show_thumbs_rows(self,numberOfColumns,numberOfRows=None,startId=None):
605: """Ausgabe anzahl"""
606:
607: idsAll=self.show_thumbs()
608:
609: if self.REQUEST.SESSION.has_key("filename"):
610: filename=self.REQUEST.SESSION["filename"]
611:
612:
613: try:
614: startId=filename
615: if startId=="":
616: startId=idsAll[0][0:]
617: except:
618: startId=idsAll[0][0:]
619: else:
620: startId=idsAll[0][0:]
621:
622:
623:
624:
625: if numberOfRows:
626:
627: startPic=idsAll.index(startId)
628: try:
629:
630: startPic=idsAll.index(startId)
631: endPic=startPic+numberOfColumns*numberOfRows
632: ids=idsAll[startPic:endPic]
633: except:
634: ids=idsAll
635: else:
636:
637: ids=idsAll
638:
639:
640: self.REQUEST.SESSION['ids']=ids
641: number=int(len(ids)/numberOfColumns)+1
642:
643: return range(number+1)
644:
645: def show_thumbs_columns(self,row,numberOfColumns):
646: """Ausgabe einer Liste der Reihe"""
647: ids=self.REQUEST.SESSION['ids']
648: max=len(ids)
649: if (row*numberOfColumns)<max:
650: return ids[(row-1)*numberOfColumns:row*numberOfColumns]
651: else:
652: return ids[(row-1)*numberOfColumns:]
653:
654: def thumblistSelected_old(self):
655: """main template collection"""
656: pt=PageTemplateFile('Products/ImageArchive/zpt/thumbselected.zpt').__of__(self)
657: return pt()
658:
659: def thumblistSelected(self):
660: """main template collection"""
661: pt=PageTemplateFile('Products/ImageArchive/zpt/thumbselected2.zpt').__of__(self)
662: return pt()
663:
664: def thumblist_old(self):
665: """main template collection"""
666: pt=PageTemplateFile('Products/ImageArchive/zpt/thumbs.zpt').__of__(self)
667: return pt()
668:
669: def thumblist(self):
670: """main template collection"""
671: pt=PageTemplateFile('Products/ImageArchive/zpt/thumb2.zpt').__of__(self)
672: return pt()
673:
674: def thumblistNewWindow(self):
675: """Thumbs mit clik neues Fenster oeffnen"""
676: pt=PageTemplateFile('Products/ImageArchive/zpt/thumbNewWindow.zpt').__of__(self)
677: return pt()
678:
679:
680: def navig_selected_html(self):
681: """navigation"""
682: #self.REQUEST.SESSION['URL']=self.REQUEST['URL0']
683: pt=PageTemplateFile('Products/ImageArchive/zpt/navigation_selected.zpt').__of__(self)
684: return pt()
685:
686: def navig_html(self):
687: """navigation"""
688: #self.REQUEST.SESSION['URL']=self.REQUEST['URL0']
689: pt=PageTemplateFile('Products/ImageArchive/zpt/navigation.zpt').__of__(self)
690: return pt()
691:
692:
693: def selection(self):
694: """show only selected"""
695: if self.REQUEST.has_key('filename'):
696: filen=self.REQUEST['filename']
697: else:
698: filen=""
699: self.REQUEST.SESSION['filename']=filen
700: pt=PageTemplateFile('Products/ImageArchive/zpt/overview_selected2.zpt').__of__(self)
701: return pt()
702:
703: def index_html(self):
704: """main template collection"""
705: if self.REQUEST.has_key('filename'):
706: filen=self.REQUEST['filename']
707: else:
708: filen=""
709:
710: self.REQUEST.SESSION['filename']=filen
711:
712: if self.REQUEST.has_key('showall'):
713:
714: self.REQUEST.SESSION['showall']=self.REQUEST.get('showall')
715: else:
716: self.REQUEST.SESSION['showall']=self.REQUEST.SESSION.get('showall','no')
717:
718:
719: pt=PageTemplateFile('Products/ImageArchive/zpt/overview.zpt').__of__(self)
720: return pt()
721:
722: def manage_AddImageCollectionForm(self):
723: """Nothing yet"""
724: pt=PageTemplateFile('Products/ImageArchive/zpt/AddImageCollectionForm.zpt').__of__(self)
725: return pt()
726:
727: def manage_AddImageCollection(self,id,title,ImageStoragePath,ImageViewerPath,defaultMetaString,RESPONSE=None):
728: """Add ImageCollection"""
729: newObj=ImageCollection(id,title,ImageStoragePath,ImageViewerPath,defaultMetaString)
730: self._setObject(id,newObj)
731:
732: if RESPONSE is not None:
733: RESPONSE.redirect('manage_main')
734:
735:
736: class ImageCollectionIFrame(ImageCollection):
737: """Class fuer Collection set als IFrame"""
738:
739: meta_type="ImageCollectionIFrame"
740: label=ImageCollection.title
741:
742: def getImageTag(self):
743: """ hack : method needed by echo_content"""
744: return ""
745:
746: def rotate(self,angle,url,RESPONSE):
747: """rotate"""
748:
749: RESPONSE.redirect("javascript:document.domain='mpg.de';parent.iframe.right.rotation(%i)"%int(angle))
750: RESPONSE.redirect(url)
751: def request(self):
752: """request"""
753: return self.REQUEST
754:
755: def index_html(self):
756: """index"""
757: if self.REQUEST.has_key('filename'):
758: filen=self.REQUEST['filename']
759: else:
760: filen=""
761: self.REQUEST.SESSION['filename']=filen
762:
763:
764: pt=PageTemplateFile('Products/ImageArchive/zpt/IFrameMain.zpt').__of__(self)
765: return pt()
766:
767: def iframe_html(self):
768: """iframe"""
769: if self.REQUEST.has_key('filename'):
770: filen=self.REQUEST['filename']
771: else:
772: filen=""
773: self.REQUEST.response.setCookie('filename',filen)
774: pt=PageTemplateFile('Products/ImageArchive/zpt/IFrameOverview.zpt').__of__(self)
775: return pt()
776:
777:
778: def manage_AddImageCollectionIFrameForm(self):
779: """Nothing yet"""
780: pt=PageTemplateFile('Products/ImageArchive/zpt/AddImageCollectionIFrameForm.zpt').__of__(self)
781: return pt()
782:
783: def manage_AddImageCollectionIFrame(self,id,title,ImageStoragePath,ImageViewerPath,defaultMetaString,RESPONSE=None):
784: """Add ImageCollection"""
785: newObj=ImageCollectionIFrame(id,title,ImageStoragePath,ImageViewerPath,defaultMetaString)
786: self._setObject(id,newObj)
787:
788: if RESPONSE is not None:
789: RESPONSE.redirect('manage_main')
790:
791:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>