File:  [Repository] / ImageArchive / ImageArchive.py
Revision 1.22: download - view: text, annotated - select for diffs - revision graph
Fri Jun 25 12:49:01 2004 UTC (20 years ago) by dwinter
Branches: MAIN
CVS tags: HEAD
changed to zogilibCVS: ----------------------------------------------------------------------

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