Annotation of ImageArchive/ImageArchive.py, revision 1.22
1.1 dwinter 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:
1.6 dwinter 23: class ImageDigilib(Folder,Persistent,Implicit):
1.1 dwinter 24: """Anzeige object fuer digilib"""
25: meta_type="ImageDigilib"
26:
1.6 dwinter 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"""
1.18 dwinter 55: pt=PageTemplateFile('Products/ImageArchive/zpt/addMetaObject.zpt').__of__(self)
1.6 dwinter 56: return pt()
57:
58:
1.3 dwinter 59: def __init__(self,id,filename,meta=None):
1.1 dwinter 60: self.id=id
61: self.title=filename
62: self.filename=filename
1.3 dwinter 63: self.meta=meta
1.1 dwinter 64:
1.3 dwinter 65: def getMeta(self):
66: """ausgabe der metadaten"""
67: return self.meta
68:
1.1 dwinter 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()
1.22 ! dwinter 77: try:
! 78: os.chmod(filename,0644)
! 79: except:
! 80: """hack"""
1.7 dwinter 81: os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl %s /mpiwg/temp/online/scaled/small 100 &"% self.ImageViewerPath)
1.3 dwinter 82:
1.7 dwinter 83:
1.1 dwinter 84:
1.3 dwinter 85:
86:
1.1 dwinter 87: def download(self):
88: """download"""
1.21 dwinter 89: path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+self.filename+"&mo=rawfile,hires"
1.1 dwinter 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"""
1.3 dwinter 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)
1.1 dwinter 103:
1.8 dwinter 104: #DEVEL:take nausikaa for server solution
1.1 dwinter 105:
1.3 dwinter 106: path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+self.filename+"&dw=100&dh=100&mo=lores"
1.8 dwinter 107: #path="/mpiwg/online/"+self.ImageViewerPath+"/"+thumbname
1.14 dwinter 108: self.REQUEST.SESSION['string']="<img border=\"0\" src=\"%s\">"% path
1.18 dwinter 109: pt=PageTemplateFile('Products/ImageArchive/zpt/thumb.zpt').__of__(self)
1.1 dwinter 110: return pt()
111:
112: def index_html(self):
113: """show image"""
1.8 dwinter 114: #DEVELOP: take first one for server
115:
1.22 ! dwinter 116: path="http://content.mpiwg-berlin.mpg.de/zogilib_images?lv=2&fn="+self.ImageViewerPath+"/"+self.filename
1.8 dwinter 117:
118: #path="http://localhost:8080/mpiwg/online/"+self.ImageViewerPath+"/"+self.filename
1.1 dwinter 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"""
1.18 dwinter 126: pt=PageTemplateFile('Products/ImageArchive/zpt/AddImageDigilibForm.zpt').__of__(self)
1.1 dwinter 127: return pt()
128:
1.3 dwinter 129: def manage_AddImageDigilib(self,id,fileupload,meta=None,RESPONSE=None):
1.1 dwinter 130: """Add ImageCollection"""
131: #fileupload=self.REQUEST['fileupload']
1.3 dwinter 132: newObj=ImageDigilib(id,fileupload.filename,meta)
1.1 dwinter 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"
1.6 dwinter 144:
145: genericMetaDataType="leiden_meta"
146:
147: leiden_meta_fields=['image_id','date','country','place','people','description','photographer']
148:
1.3 dwinter 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
1.7 dwinter 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"
1.3 dwinter 156:
157: def __init__(self,id,title,ImageStoragePath,ImageViewerPath,defaultMetaString):
1.1 dwinter 158: self.id=id
159: self.title=title
160: self.ImageStoragePath=ImageStoragePath
161: self.ImageViewerPath=ImageViewerPath
1.3 dwinter 162: self.defaultMetaString=defaultMetaString
1.1 dwinter 163:
164: manage_options = Folder.manage_options+(
165: {'label':'Main Config','action':'ImageCollection_config'},
166: {'label':'Import','action':'ImportFiles'},
1.6 dwinter 167: {'label':'Recalculate Metadata','action':'recalculateMeta'},
168: {'label':'Import Metadata','action':'importMetaForm'},
1.7 dwinter 169: {'label':'Rescale thumbs','action':'scaleThumbs'},
1.6 dwinter 170: )
171:
172:
173: def importMetaForm(self):
174: """import metadata"""
1.18 dwinter 175: pt=PageTemplateFile('Products/ImageArchive/zpt/importMeta.zpt').__of__(self)
1.6 dwinter 176: return pt()
1.3 dwinter 177:
1.6 dwinter 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==""):
1.8 dwinter 192: #print image_id
1.6 dwinter 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:
1.1 dwinter 211:
1.7 dwinter 212: def nextImage(self,request,selected=None):
213: """show nextimage"""
1.13 dwinter 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:
1.7 dwinter 223: nr=0
224:
1.13 dwinter 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:
1.7 dwinter 233: return ""
1.13 dwinter 234:
1.7 dwinter 235: def prevImage(self,request,selected=None):
236: """show nextimage"""
237: #return self.getId()
1.13 dwinter 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:
1.7 dwinter 247: nr=0
1.3 dwinter 248:
1.13 dwinter 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:
1.7 dwinter 257: return ""
1.6 dwinter 258:
1.3 dwinter 259: def meta_default(self,filename):
260: """url der metadaten"""
261: return self.defaultMetaString % filename
262:
1.2 dwinter 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:
1.1 dwinter 276: def xmlinput(self,url):
277: """Anzeige von ausgewaehlten thumbs"""
278: #return url
1.5 dwinter 279:
280: url=urllib.unquote(url)
1.1 dwinter 281: xmldoc=urllib.urlopen(url).read()
1.5 dwinter 282: #print url
1.1 dwinter 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))
1.2 dwinter 291: rc.sort()
1.1 dwinter 292: self.REQUEST.SESSION['filenames']=rc
1.18 dwinter 293: pt=PageTemplateFile('Products/ImageArchive/zpt/overview_selected.zpt').__of__(self)
1.1 dwinter 294: return pt()
295:
1.3 dwinter 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"
1.1 dwinter 306:
307: def addImage(self):
308: """Add an Image"""
1.18 dwinter 309: pt=PageTemplateFile('Products/ImageArchive/zpt/addImage.zpt').__of__(self)
1.1 dwinter 310: return pt()
311:
1.7 dwinter 312: def addImage2(self,fileupload,meta,use_default=None,RESPONSE=None):
1.1 dwinter 313: """Add"""
314: #print "FU",fileupload
1.3 dwinter 315:
316: if use_default:
317: try:
318: meta=self.meta_default(fileupload.filename)
319: except:
320: meta=None
1.7 dwinter 321: else:
322: meta=None
1.3 dwinter 323:
324: manage_AddImageDigilib(self,fileupload.filename,fileupload,meta=meta)
1.1 dwinter 325: return RESPONSE.redirect(self.REQUEST['URL1']+'/'+fileupload.filename)
326: #return self.REQUEST['URL1']+'/'+fileupload.filename
1.3 dwinter 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
1.16 dwinter 348: os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl %s /mpiwg/temp/online/scaled/small 100 &"% self.ImageViewerPath)
1.3 dwinter 349: RESPONSE.redirect('manage_main')
1.1 dwinter 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:
1.2 dwinter 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
1.4 dwinter 366: try:
367: self._setObject(file,newObj)
368: except:
369: """nothing yet"""
1.1 dwinter 370: #print ret
1.3 dwinter 371: #pt=PageTemplateFile('Products/ImageArchive/out.zpt').__of__(self)
372: #print self.ImageStoragePath
1.16 dwinter 373: os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl %s /mpiwg/temp/online/scaled/small 100 &"% self.ImageViewerPath)
1.1 dwinter 374: RESPONSE.redirect('manage_main')
375:
376: def ImageCollection_config(self):
377: """Nothing yet"""
1.3 dwinter 378: if not hasattr(self,'defaultMetaString'):
379: self.defaultMetaString=""
380:
1.18 dwinter 381: pt=PageTemplateFile('Products/ImageArchive/zpt/ChangeImageCollectionForm.zpt').__of__(self)
1.1 dwinter 382: return pt()
383:
1.3 dwinter 384: def ChangeImageCollection(self,title,ImageStoragePath,ImageViewerPath,defaultMetaString,RESPONSE=None):
1.1 dwinter 385: """Change"""
386: self.title=title
387: self.ImageStoragePath=ImageStoragePath
388: self.ImageViewerPath=ImageViewerPath
1.3 dwinter 389: self.defaultMetaString=defaultMetaString
390:
1.1 dwinter 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)
1.2 dwinter 405:
1.1 dwinter 406: #print ids
1.2 dwinter 407: ids.sort()
1.1 dwinter 408: return ids
409:
1.8 dwinter 410: def firstSets(self,selected=None):
411: ids=self.show_thumbs()
1.13 dwinter 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>"
1.8 dwinter 417:
418: def lastSets(self,selected=None):
419: ids=self.show_thumbs()
1.13 dwinter 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>"
1.8 dwinter 435:
436:
437:
438: def nextSets(self,selected=None):
439: """show nextimage"""
440: ids=self.show_thumbs()
441: colRows=self.getColTimesRow()
1.13 dwinter 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:
1.8 dwinter 454: nr=0
455:
1.13 dwinter 456: if nr==len(ids)-1:
457: return ""
1.8 dwinter 458: else:
1.13 dwinter 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>"
1.8 dwinter 463:
464: def prevSets(self,selected=None):
465:
466: """show nextimage"""
467: #return self.getId()
468: ids=self.show_thumbs()
469: colRows=self.getColTimesRow()
1.13 dwinter 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
1.8 dwinter 482: try:
1.13 dwinter 483: num=ids.index(filename)
1.8 dwinter 484: except:
1.13 dwinter 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>"
1.8 dwinter 494: else:
495: return ""
496:
1.2 dwinter 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:
1.8 dwinter 505: def setColTimesRowForm(self):
506: """form for matrix setting"""
1.18 dwinter 507: pt=PageTemplateFile('Products/ImageArchive/zpt/selectColTimesRow.zpt').__of__(self)
1.8 dwinter 508: return pt()
509:
510: def setDone(self):
511: """done"""
512:
1.18 dwinter 513: pt=PageTemplateFile('Products/ImageArchive/zpt/changedColTimesRow.zpt').__of__(self)
1.8 dwinter 514: return pt()
515:
516: def setColTimesRow(self,cols,rows):
517: """set coltimes row"""
518: RESPONSE=self.REQUEST.RESPONSE
1.10 dwinter 519: if not rows:
1.12 dwinter 520: rows=None
1.11 dwinter 521: if rows=="":
1.12 dwinter 522: rows=None
523:
524: if rows:
525: RESPONSE.setCookie("ImageViewerRows",rows)
1.8 dwinter 526: RESPONSE.setCookie("ImageViewerCols",cols)
527:
528: RESPONSE.redirect(self.REQUEST['URL1']+"/setDone")
529:
530: def getColTimesRow(self):
1.12 dwinter 531: """coltimesrow"""
1.8 dwinter 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:
1.22 ! dwinter 540: rows=6
1.8 dwinter 541: else:
1.22 ! dwinter 542: rows=6
1.8 dwinter 543:
544: if REQUEST.cookies.has_key("ImageViewerCols"):
1.12 dwinter 545: #print "COLS",REQUEST.cookies["ImageViewerCols"]
1.8 dwinter 546: cols=int(REQUEST.cookies["ImageViewerCols"])
547: else:
1.22 ! dwinter 548: cols=2
1.12 dwinter 549:
550: idsnumber=len(self.show_thumbs())
551: if rows:
552: if cols*rows >idsnumber:
553: rows=int(idsnumber/cols)+1
1.8 dwinter 554: return (cols,rows)
555:
556:
557: def show_thumbs_rows(self,numberOfColumns,numberOfRows=None,startId=None):
1.2 dwinter 558: """Ausgabe anzahl"""
1.8 dwinter 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:
1.12 dwinter 575: try:
576: startPic=idsAll.index(startId)
577: endPic=startPic+numberOfColumns*numberOfRows
578: ids=idsAll[startPic:endPic]
579: except:
580: ids=idsAll
1.8 dwinter 581: else:
582: ids=idsAll
583:
584:
1.2 dwinter 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:]
1.8 dwinter 598:
1.2 dwinter 599: def thumblistSelected_old(self):
600: """main template collection"""
1.18 dwinter 601: pt=PageTemplateFile('Products/ImageArchive/zpt/thumbselected.zpt').__of__(self)
1.2 dwinter 602: return pt()
603:
1.1 dwinter 604: def thumblistSelected(self):
605: """main template collection"""
1.18 dwinter 606: pt=PageTemplateFile('Products/ImageArchive/zpt/thumbselected2.zpt').__of__(self)
1.2 dwinter 607: return pt()
608:
609: def thumblist_old(self):
610: """main template collection"""
1.18 dwinter 611: pt=PageTemplateFile('Products/ImageArchive/zpt/thumbs.zpt').__of__(self)
1.1 dwinter 612: return pt()
613:
614: def thumblist(self):
615: """main template collection"""
1.18 dwinter 616: pt=PageTemplateFile('Products/ImageArchive/zpt/thumb2.zpt').__of__(self)
1.1 dwinter 617: return pt()
618:
1.7 dwinter 619: def navig_selected_html(self):
620: """navigation"""
621: #self.REQUEST.SESSION['URL']=self.REQUEST['URL0']
1.18 dwinter 622: pt=PageTemplateFile('Products/ImageArchive/zpt/navigation_selected.zpt').__of__(self)
1.7 dwinter 623: return pt()
624:
1.1 dwinter 625: def navig_html(self):
626: """navigation"""
1.7 dwinter 627: #self.REQUEST.SESSION['URL']=self.REQUEST['URL0']
1.18 dwinter 628: pt=PageTemplateFile('Products/ImageArchive/zpt/navigation.zpt').__of__(self)
1.1 dwinter 629: return pt()
630:
631:
1.7 dwinter 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
1.18 dwinter 639: pt=PageTemplateFile('Products/ImageArchive/zpt/overview_selected2.zpt').__of__(self)
1.7 dwinter 640: return pt()
641:
1.1 dwinter 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
1.18 dwinter 649: pt=PageTemplateFile('Products/ImageArchive/zpt/overview.zpt').__of__(self)
1.1 dwinter 650: return pt()
651:
652: def manage_AddImageCollectionForm(self):
653: """Nothing yet"""
1.18 dwinter 654: pt=PageTemplateFile('Products/ImageArchive/zpt/AddImageCollectionForm.zpt').__of__(self)
1.1 dwinter 655: return pt()
656:
1.3 dwinter 657: def manage_AddImageCollection(self,id,title,ImageStoragePath,ImageViewerPath,defaultMetaString,RESPONSE=None):
1.1 dwinter 658: """Add ImageCollection"""
1.3 dwinter 659: newObj=ImageCollection(id,title,ImageStoragePath,ImageViewerPath,defaultMetaString)
1.19 dwinter 660: self._setObject(id,newObj)
661:
662: if RESPONSE is not None:
663: RESPONSE.redirect('manage_main')
664:
665:
666: class ImageCollectionIFrame(ImageCollection):
1.20 dwinter 667: """Class fuer Collection set als IFrame"""
1.19 dwinter 668:
669: meta_type="ImageCollectionIFrame"
670: label=ImageCollection.title
671:
1.20 dwinter 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)
1.19 dwinter 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)
1.1 dwinter 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>