File:  [Repository] / ImageArchive / ImageArchive.py
Revision 1.17: download - view: text, annotated - select for diffs - revision graph
Fri Mar 5 11:56:50 2004 UTC (20 years, 4 months ago) by dwinter
Branches: MAIN
CVS tags: HEAD
bug fixed in thumbnail display

    1: from OFS.Folder import Folder
    2: from OFS.SimpleItem import SimpleItem
    3: from Globals import Persistent
    4: from Acquisition import Implicit
    5: from Products.PageTemplates.PageTemplateFile import PageTemplateFile
    6: from Products.PageTemplates.PageTemplate import PageTemplate
    7: import re
    8: import os
    9: import os.path
   10: import urllib
   11: import xml.dom.minidom
   12: 
   13: def getText(nodelist):
   14:     
   15:     rc = ""
   16:     for node in nodelist:
   17:     
   18:     	if node.nodeType == node.TEXT_NODE:
   19:            rc = rc + node.data
   20:     return rc
   21: 
   22: 
   23: class ImageDigilib(Folder,Persistent,Implicit):
   24:     """Anzeige object fuer digilib"""
   25:     meta_type="ImageDigilib"
   26: 
   27:     leiden_meta_fields=['image_id','date','country','place','people','description','photographer']
   28: 
   29:     manage_options = Folder.manage_options+(
   30:         
   31:         {'label':'Add Metadata','action':'addMetaObjectForm'},
   32:         
   33:         )
   34: 
   35:     def addMetaObject(self,id,RESPONSE=None):
   36:         """Add an MetaObject"""
   37:         objectType=getattr(self.Control_Panel.Products.ImageMetaData,self.genericMetaDataType)
   38: 
   39:         request=self.REQUEST
   40:         objectCreate=objectType.createObjectManager(id,request)
   41:         #for field in self.leiden_meta_fields:
   42:         #    self.REQUEST[field]=argv[field]
   43:         self._setObject(id,objectCreate)
   44:         
   45:         objectCreate.propertysheets.meta.manage_editProperties(request)
   46: 
   47:         if RESPONSE is not None:
   48:             RESPONSE.redirect('manage_main')
   49: 
   50:         
   51: 
   52: 
   53:     def addMetaObjectForm(self):
   54:         """Add Form"""
   55:         pt=PageTemplateFile('Products/ImageArchive/addMetaObject.zpt').__of__(self)
   56:         return pt()        
   57: 
   58: 
   59:     def __init__(self,id,filename,meta=None):
   60:         self.id=id
   61:         self.title=filename
   62:         self.filename=filename
   63:         self.meta=meta
   64: 
   65:             
   66:     
   67:     def getMeta(self):
   68:         """ausgabe der metadaten"""
   69:         return self.meta
   70:     
   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)
   80:         os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl %s /mpiwg/temp/online/scaled/small 100 &"% self.ImageViewerPath)
   81: 
   82:     
   83: 
   84:     
   85:         
   86:     def download(self):
   87:         """download"""
   88:         path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+self.filename+"&mo=rawfile,highres"
   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"""
   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)
  102:             
  103:         #DEVEL:take nausikaa for server solution
  104:         
  105:         path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+self.filename+"&dw=100&dh=100&mo=lores"
  106:         #path="/mpiwg/online/"+self.ImageViewerPath+"/"+thumbname
  107:         self.REQUEST.SESSION['string']="<img border=\"0\" src=\"%s\">"% path
  108:         pt=PageTemplateFile('Products/ImageArchive/thumb.zpt').__of__(self)
  109:         return pt()
  110:     
  111:     def index_html(self):
  112:         """show image"""
  113:         #DEVELOP: take first one for server
  114:         
  115:         path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/digilib.jsp?fn="+self.ImageViewerPath+"/"+self.filename
  116: 
  117:         #path="http://localhost:8080/mpiwg/online/"+self.ImageViewerPath+"/"+self.filename
  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:     
  128: def manage_AddImageDigilib(self,id,fileupload,meta=None,RESPONSE=None):
  129:     """Add ImageCollection"""
  130:     #fileupload=self.REQUEST['fileupload']
  131:     newObj=ImageDigilib(id,fileupload.filename,meta)
  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"
  143: 
  144:     genericMetaDataType="leiden_meta"
  145: 
  146:     leiden_meta_fields=['image_id','date','country','place','people','description','photographer']
  147: 
  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
  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"
  155:     
  156:     def __init__(self,id,title,ImageStoragePath,ImageViewerPath,defaultMetaString):
  157:         self.id=id
  158:         self.title=title
  159:         self.ImageStoragePath=ImageStoragePath
  160:         self.ImageViewerPath=ImageViewerPath
  161:         self.defaultMetaString=defaultMetaString
  162: 
  163:     manage_options = Folder.manage_options+(
  164:         {'label':'Main Config','action':'ImageCollection_config'},
  165:         {'label':'Import','action':'ImportFiles'},
  166:         {'label':'Recalculate Metadata','action':'recalculateMeta'},
  167:         {'label':'Import Metadata','action':'importMetaForm'},
  168:         {'label':'Rescale thumbs','action':'scaleThumbs'},
  169:         )
  170: 
  171: 
  172:     def importMetaForm(self):
  173:         """import metadata"""
  174:         pt=PageTemplateFile('Products/ImageArchive/importMeta.zpt').__of__(self)
  175:         return pt()
  176: 
  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==""):
  191:                 #print image_id
  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:     
  210: 
  211:     def nextImage(self,request,selected=None):
  212:         """show nextimage"""
  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:
  222:                 nr=0
  223: 
  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:
  232:             return ""
  233:         
  234:     def prevImage(self,request,selected=None):
  235:         """show nextimage"""
  236:         #return self.getId()
  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:
  246:                 nr=0
  247: 
  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:
  256:             return ""
  257:         
  258:     def meta_default(self,filename):
  259:         """url der metadaten"""
  260:         return self.defaultMetaString % filename
  261:                      
  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:             
  275:     def xmlinput(self,url):
  276:         """Anzeige von ausgewaehlten thumbs"""
  277:         #return url
  278:         
  279:         url=urllib.unquote(url)
  280:         xmldoc=urllib.urlopen(url).read()
  281:         #print url
  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))
  290:         rc.sort()
  291:         self.REQUEST.SESSION['filenames']=rc
  292:         pt=PageTemplateFile('Products/ImageArchive/overview_selected.zpt').__of__(self)
  293:         return pt()        
  294: 
  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"
  305:     
  306:     def addImage(self):
  307:         """Add an Image"""
  308:         pt=PageTemplateFile('Products/ImageArchive/addImage.zpt').__of__(self)
  309:         return pt()
  310:     
  311:     def addImage2(self,fileupload,meta,use_default=None,RESPONSE=None):
  312:         """Add"""
  313:         #print "FU",fileupload
  314: 
  315:         if use_default:
  316:             try:
  317:                 meta=self.meta_default(fileupload.filename)
  318:             except:
  319:                 meta=None
  320:         else:
  321:             meta=None
  322:                 
  323:         manage_AddImageDigilib(self,fileupload.filename,fileupload,meta=meta)
  324:         return RESPONSE.redirect(self.REQUEST['URL1']+'/'+fileupload.filename)
  325:         #return  self.REQUEST['URL1']+'/'+fileupload.filename
  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
  347:         os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl %s /mpiwg/temp/online/scaled/small 100 &"% self.ImageViewerPath)
  348:         RESPONSE.redirect('manage_main')
  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:
  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
  365:                     try:
  366:                         self._setObject(file,newObj)
  367:                     except:
  368:                         """nothing yet"""
  369:         #print ret
  370:         #pt=PageTemplateFile('Products/ImageArchive/out.zpt').__of__(self)
  371:         #print self.ImageStoragePath
  372:         os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl %s /mpiwg/temp/online/scaled/small 100 &"% self.ImageViewerPath)
  373:         RESPONSE.redirect('manage_main')
  374:         
  375:     def ImageCollection_config(self):
  376:         """Nothing yet"""
  377:         if not hasattr(self,'defaultMetaString'):
  378:             self.defaultMetaString=""
  379:             
  380:         pt=PageTemplateFile('Products/ImageArchive/ChangeImageCollectionForm.zpt').__of__(self)
  381:         return pt()
  382: 
  383:     def ChangeImageCollection(self,title,ImageStoragePath,ImageViewerPath,defaultMetaString,RESPONSE=None):
  384:         """Change"""
  385:         self.title=title
  386:         self.ImageStoragePath=ImageStoragePath
  387:         self.ImageViewerPath=ImageViewerPath
  388:         self.defaultMetaString=defaultMetaString
  389:         
  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)
  404:                 
  405:         #print ids
  406:         ids.sort()
  407:         return ids
  408: 
  409:     def firstSets(self,selected=None):
  410:         ids=self.show_thumbs()
  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>"
  416: 
  417:     def lastSets(self,selected=None):
  418:         ids=self.show_thumbs()
  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>"
  434: 
  435:         
  436:                 
  437:     def nextSets(self,selected=None):
  438:         """show nextimage"""
  439:         ids=self.show_thumbs()
  440:         colRows=self.getColTimesRow()
  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:
  453:                     nr=0
  454: 
  455:                 if nr==len(ids)-1:
  456:                     return ""
  457:                 else:
  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>"
  462: 
  463:     def prevSets(self,selected=None):
  464:         
  465:         """show nextimage"""
  466:         #return self.getId()
  467:         ids=self.show_thumbs()
  468:         colRows=self.getColTimesRow()
  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
  481:                 try:
  482:                     num=ids.index(filename)
  483:                 except:
  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>"
  493:             else:
  494:                 return ""
  495:             
  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: 
  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
  518:         if not rows:
  519:             rows=None
  520:         if rows=="":
  521:             rows=None
  522: 
  523:         if rows=="all":
  524:             rows=None
  525:         
  526: 
  527:         if rows:
  528:             RESPONSE.setCookie("ImageViewerRows",rows)
  529:         else:
  530:             RESPONSE.expireCookie("ImageViewerRows")
  531:         RESPONSE.setCookie("ImageViewerCols",cols)
  532: 
  533:         RESPONSE.redirect(self.REQUEST['URL1']+"/setDone")
  534:         
  535:     def getColTimesRow(self):
  536:         """coltimesrow"""
  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:
  545:                 rows=None
  546:         else:
  547:             rows=None
  548:             
  549:         if REQUEST.cookies.has_key("ImageViewerCols"):
  550:             #print "COLS",REQUEST.cookies["ImageViewerCols"]
  551:             cols=int(REQUEST.cookies["ImageViewerCols"])
  552:         else:
  553:             cols=3
  554: 
  555:         idsnumber=len(self.show_thumbs())
  556:         if rows:
  557:             if cols*rows >idsnumber:
  558:                 rows=int(idsnumber/cols)+1
  559:         return (cols,rows)
  560:                 
  561:         
  562:     def show_thumbs_rows(self,numberOfColumns,numberOfRows=None,startId=None):
  563:         """Ausgabe anzahl"""
  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:
  580:             try:
  581:                 startPic=idsAll.index(startId)
  582:                 endPic=startPic+numberOfColumns*numberOfRows
  583:                 ids=idsAll[startPic:endPic]
  584:             except:
  585:                 ids=idsAll
  586:         else:
  587:             ids=idsAll
  588: 
  589:             
  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:]
  603:         
  604:     def thumblistSelected_old(self):
  605:         """main template collection"""
  606:         pt=PageTemplateFile('Products/ImageArchive/thumbselected.zpt').__of__(self)
  607:         return pt()
  608: 
  609:     def thumblistSelected(self):
  610:         """main template collection"""
  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)
  617:         return pt()
  618: 
  619:     def thumblist(self):
  620:         """main template collection"""
  621:         pt=PageTemplateFile('Products/ImageArchive/thumb2.zpt').__of__(self)
  622:         return pt()
  623: 
  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: 
  630:     def navig_html(self):
  631:         """navigation"""
  632:         #self.REQUEST.SESSION['URL']=self.REQUEST['URL0']
  633:         pt=PageTemplateFile('Products/ImageArchive/navigation.zpt').__of__(self)
  634:         return pt()
  635: 
  636: 
  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:         
  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:     
  662: def manage_AddImageCollection(self,id,title,ImageStoragePath,ImageViewerPath,defaultMetaString,RESPONSE=None):
  663:     """Add ImageCollection"""
  664:     newObj=ImageCollection(id,title,ImageStoragePath,ImageViewerPath,defaultMetaString)
  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>