File:  [Repository] / ImageArchive / ImageArchive.py
Revision 1.21: download - view: text, annotated - select for diffs - revision graph
Wed Mar 31 19:14:17 2004 UTC (20 years, 2 months ago) by dwinter
Branches: MAIN
CVS tags: HEAD
port in nausikaa changes lv3CVS: ----------------------------------------------------------------------

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

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>