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