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: if num/a+1>1:
519:
520: ret="<b>Show thumbnail group no:</b></br>"
521: for i in range(num/a+1):
522: k=i*a
523: if selected:
524: href=self.REQUEST['URL1']+"/selection?filename="+ids[k]
525: else:
526: href=self.REQUEST['URL1']+"?filename="+ids[k]
527:
528: ret+="""<a href="%s" target=_"top">%i</a> """%(href,i)
529:
530: else:
531: ret=""
532: ret+="""<a href="%s?showall=yes" target="_top">show all</a> """%self.REQUEST['URL1']
533: else:
534: ret="""<a href="%s?showall=no" target="_top">show groups</a> """%self.REQUEST['URL1']
535:
536: return ret
537:
538: def show_thumbs_selected_rows(self,numberOfColumns):
539: """Ausgabe anzahl"""
540: ids=self.show_selected_thumbs()
541: self.REQUEST.SESSION['ids']=ids
542: number=int(len(ids)/numberOfColumns)+1
543: self.REQUEST.SESSION['number']=range(number)
544: return range(number+1)
545:
546: def setColTimesRowForm(self):
547: """form for matrix setting"""
548: pt=PageTemplateFile('Products/ImageArchive/zpt/selectColTimesRow.zpt').__of__(self)
549: return pt()
550:
551: def setDone(self):
552: """done"""
553:
554: pt=PageTemplateFile('Products/ImageArchive/zpt/changedColTimesRow.zpt').__of__(self)
555: return pt()
556:
557: def setColTimesRow(self,cols,rows):
558: """set coltimes row"""
559: RESPONSE=self.REQUEST.RESPONSE
560: if not rows:
561: rows=None
562: if rows=="":
563: rows=None
564:
565: if rows:
566: RESPONSE.setCookie("ImageViewerRows",rows)
567: RESPONSE.setCookie("ImageViewerCols",cols)
568:
569: RESPONSE.redirect(self.REQUEST['URL1']+"/setDone")
570:
571: def getColTimesRow(self,showall='No'):
572: """coltimesrow"""
573:
574: REQUEST=self.REQUEST
575: """matrix"""
576: if REQUEST.cookies.has_key("ImageViewerRows"):
577:
578: try:
579: rows=int(REQUEST.cookies["ImageViewerRows"])
580: except:
581: rows=6
582: else:
583: rows=6
584:
585: if REQUEST.cookies.has_key("ImageViewerCols"):
586: #print "COLS",REQUEST.cookies["ImageViewerCols"]
587: cols=int(REQUEST.cookies["ImageViewerCols"])
588: else:
589: cols=2
590:
591: idsnumber=len(self.show_thumbs())
592: if rows:
593: if cols*rows >idsnumber:
594: rows=int(idsnumber/cols)+1
595:
596: #print cols,rows
597: if showall=='yes':
598: rows=int(idsnumber/cols)+1
599:
600: return (cols,rows)
601:
602:
603: def show_thumbs_rows(self,numberOfColumns,numberOfRows=None,startId=None):
604: """Ausgabe anzahl"""
605:
606: idsAll=self.show_thumbs()
607:
608: if self.REQUEST.SESSION.has_key("filename"):
609: filename=self.REQUEST.SESSION["filename"]
610:
611:
612: try:
613: startId=filename
614: if startId=="":
615: startId=idsAll[0][0:]
616: except:
617: startId=idsAll[0][0:]
618: else:
619: startId=idsAll[0][0:]
620:
621:
622:
623:
624: if numberOfRows:
625:
626: startPic=idsAll.index(startId)
627: try:
628:
629: startPic=idsAll.index(startId)
630: endPic=startPic+numberOfColumns*numberOfRows
631: ids=idsAll[startPic:endPic]
632: except:
633: ids=idsAll
634: else:
635:
636: ids=idsAll
637:
638:
639: self.REQUEST.SESSION['ids']=ids
640: number=int(len(ids)/numberOfColumns)+1
641:
642: return range(number+1)
643:
644: def show_thumbs_columns(self,row,numberOfColumns):
645: """Ausgabe einer Liste der Reihe"""
646: ids=self.REQUEST.SESSION['ids']
647: max=len(ids)
648: if (row*numberOfColumns)<max:
649: return ids[(row-1)*numberOfColumns:row*numberOfColumns]
650: else:
651: return ids[(row-1)*numberOfColumns:]
652:
653: def thumblistSelected_old(self):
654: """main template collection"""
655: pt=PageTemplateFile('Products/ImageArchive/zpt/thumbselected.zpt').__of__(self)
656: return pt()
657:
658: def thumblistSelected(self):
659: """main template collection"""
660: pt=PageTemplateFile('Products/ImageArchive/zpt/thumbselected2.zpt').__of__(self)
661: return pt()
662:
663: def thumblist_old(self):
664: """main template collection"""
665: pt=PageTemplateFile('Products/ImageArchive/zpt/thumbs.zpt').__of__(self)
666: return pt()
667:
668: def thumblist(self):
669: """main template collection"""
670: pt=PageTemplateFile('Products/ImageArchive/zpt/thumb2.zpt').__of__(self)
671: return pt()
672:
673: def thumblistNewWindow(self):
674: """Thumbs mit clik neues Fenster oeffnen"""
675: pt=PageTemplateFile('Products/ImageArchive/zpt/thumbNewWindow.zpt').__of__(self)
676: return pt()
677:
678:
679: def navig_selected_html(self):
680: """navigation"""
681: #self.REQUEST.SESSION['URL']=self.REQUEST['URL0']
682: pt=PageTemplateFile('Products/ImageArchive/zpt/navigation_selected.zpt').__of__(self)
683: return pt()
684:
685: def navig_html(self):
686: """navigation"""
687: #self.REQUEST.SESSION['URL']=self.REQUEST['URL0']
688: pt=PageTemplateFile('Products/ImageArchive/zpt/navigation.zpt').__of__(self)
689: return pt()
690:
691:
692: def selection(self):
693: """show only selected"""
694: if self.REQUEST.has_key('filename'):
695: filen=self.REQUEST['filename']
696: else:
697: filen=""
698: self.REQUEST.SESSION['filename']=filen
699: pt=PageTemplateFile('Products/ImageArchive/zpt/overview_selected2.zpt').__of__(self)
700: return pt()
701:
702: def index_html(self):
703: """main template collection"""
704: if self.REQUEST.has_key('filename'):
705: filen=self.REQUEST['filename']
706: else:
707: filen=""
708:
709: self.REQUEST.SESSION['filename']=filen
710:
711: if self.REQUEST.has_key('showall'):
712:
713: self.REQUEST.SESSION['showall']=self.REQUEST.get('showall')
714: else:
715: self.REQUEST.SESSION['showall']=self.REQUEST.SESSION.get('showall','no')
716:
717:
718: pt=PageTemplateFile('Products/ImageArchive/zpt/overview.zpt').__of__(self)
719: return pt()
720:
721: def manage_AddImageCollectionForm(self):
722: """Nothing yet"""
723: pt=PageTemplateFile('Products/ImageArchive/zpt/AddImageCollectionForm.zpt').__of__(self)
724: return pt()
725:
726: def manage_AddImageCollection(self,id,title,ImageStoragePath,ImageViewerPath,defaultMetaString,RESPONSE=None):
727: """Add ImageCollection"""
728: newObj=ImageCollection(id,title,ImageStoragePath,ImageViewerPath,defaultMetaString)
729: self._setObject(id,newObj)
730:
731: if RESPONSE is not None:
732: RESPONSE.redirect('manage_main')
733:
734:
735: class ImageCollectionIFrame(ImageCollection):
736: """Class fuer Collection set als IFrame"""
737:
738: meta_type="ImageCollectionIFrame"
739: label=ImageCollection.title
740:
741: def getImageTag(self):
742: """ hack : method needed by echo_content"""
743: return ""
744:
745: def rotate(self,angle,url,RESPONSE):
746: """rotate"""
747:
748: RESPONSE.redirect("javascript:document.domain='mpg.de';parent.iframe.right.rotation(%i)"%int(angle))
749: RESPONSE.redirect(url)
750: def request(self):
751: """request"""
752: return self.REQUEST
753:
754: def index_html(self):
755: """index"""
756: if self.REQUEST.has_key('filename'):
757: filen=self.REQUEST['filename']
758: else:
759: filen=""
760: self.REQUEST.SESSION['filename']=filen
761:
762:
763: pt=PageTemplateFile('Products/ImageArchive/zpt/IFrameMain.zpt').__of__(self)
764: return pt()
765:
766: def iframe_html(self):
767: """iframe"""
768: if self.REQUEST.has_key('filename'):
769: filen=self.REQUEST['filename']
770: else:
771: filen=""
772: self.REQUEST.response.setCookie('filename',filen)
773: pt=PageTemplateFile('Products/ImageArchive/zpt/IFrameOverview.zpt').__of__(self)
774: return pt()
775:
776:
777: def manage_AddImageCollectionIFrameForm(self):
778: """Nothing yet"""
779: pt=PageTemplateFile('Products/ImageArchive/zpt/AddImageCollectionIFrameForm.zpt').__of__(self)
780: return pt()
781:
782: def manage_AddImageCollectionIFrame(self,id,title,ImageStoragePath,ImageViewerPath,defaultMetaString,RESPONSE=None):
783: """Add ImageCollection"""
784: newObj=ImageCollectionIFrame(id,title,ImageStoragePath,ImageViewerPath,defaultMetaString)
785: self._setObject(id,newObj)
786:
787: if RESPONSE is not None:
788: RESPONSE.redirect('manage_main')
789:
790:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>