File:  [Repository] / ImageArchive / ImageArchive.py
Revision 1.25: download - view: text, annotated - select for diffs - revision graph
Tue Jul 27 13:36:36 2004 UTC (19 years, 10 months ago) by dwinter
Branches: MAIN
CVS tags: HEAD
bug in show all fixed

    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: 
   42:         self._setObject(id,objectCreate)
   43:         
   44:         objectCreate.propertysheets.meta.manage_editProperties(request)
   45: 
   46:         if RESPONSE is not None:
   47:             RESPONSE.redirect('manage_main')
   48: 
   49:         
   50: 
   51: 
   52:     def addMetaObjectForm(self):
   53:         """Add Form"""
   54:         pt=PageTemplateFile('Products/ImageArchive/zpt/addMetaObject.zpt').__of__(self)
   55:         return pt()        
   56: 
   57: 
   58:     def __init__(self,id,filename,meta=None):
   59:         self.id=id
   60:         self.title=filename
   61:         self.filename=filename
   62:         self.meta=meta
   63: 
   64:     def getMeta(self):
   65:         """ausgabe der metadaten"""
   66:         return self.meta
   67:     
   68:     def uploadImage(self,fileupload,path_name):
   69:         """upload an Image from an Requast"""
   70:         #path_name=self.ImageStoragePath
   71:         filename=path_name+"/"+fileupload.filename
   72:         filedata=fileupload.read()
   73:         f=open(filename,"w")
   74:         f.write(filedata)
   75:         f.close()
   76:         try:
   77:             os.chmod(filename,0644)
   78:         except:
   79:             """hack"""
   80: 
   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:         {'label':'Weight (ECHO)','action':'weightForm'},
  171:         )
  172: 
  173:     def weightForm(self):
  174:         """Weight"""
  175:         pt=PageTemplateFile('Products/ImageArchive/zpt/changeWeight.zpt').__of__(self)
  176:         return pt()
  177: 
  178:     def changeWeight(self,weight,RESPONSE=None):
  179:         """Change weight"""
  180:         self.weight=weight
  181:         
  182:         if RESPONSE is not None:
  183:             RESPONSE.redirect('manage_main')
  184: 
  185:         
  186:     def importMetaForm(self):
  187:         """import metadata"""
  188:         pt=PageTemplateFile('Products/ImageArchive/zpt/importMeta.zpt').__of__(self)
  189:         return pt()
  190: 
  191:     def importMeta(self,fileupload,tag):
  192:         """import"""
  193:         filedata=fileupload.read()
  194:         dom=xml.dom.minidom.parseString(filedata)
  195:         rows=dom.getElementsByTagName(tag)
  196:         #print "ROWS",rows
  197:         request=self.REQUEST
  198:         for row in rows:
  199:             
  200:             for a in self.leiden_meta_fields:
  201:                 self.REQUEST[a]=getText(row.getElementsByTagName(a)[0].childNodes)
  202: 
  203:             image_id=self.REQUEST['image_id']
  204:             if (not hasattr(self,image_id)) & (not image_id==""):
  205:                 #print image_id
  206:                 newObj=ImageCollection(str(image_id),image_id,'','','')
  207:                 self._setObject(str(image_id),newObj)
  208: 
  209:             id="leiden_meta_data_file"
  210:             self.REQUEST['id']=id
  211:             #objectType=getattr(self.Control_Panel.Products.ImageMetaData,self.genericMetaDataType)
  212:             #objectCreate=objectType.createInObjectManager(id,request)
  213:             #href="http://localhost:8080/tests/testcollection/manage_addProduct/ImageMetaData/leiden_meta_factory/"
  214:             try:
  215:                 addID=getattr(self,image_id)
  216:                 objectCreate=addID.manage_addProduct['ImageMetaData'].leiden_meta_add(id)
  217:                 #getattr(self,image_id)._setObject(id,objectCreate)
  218:                 obj=getattr(addID,id)
  219:                 obj.propertysheets.meta.manage_editProperties(request)
  220:             except:
  221:                 """nothing"""
  222:         return "OK"
  223:     
  224: 
  225:     def nextImage(self,request,selected=None):
  226:         """show nextimage"""
  227:         try:
  228:             ids=self.show_thumbs()
  229:             if request.SESSION.has_key("filename"):
  230:                 filename=request.SESSION["filename"]
  231:                 try:
  232:                     nr=ids.index(filename)
  233:                 except:
  234:                     nr=0
  235:             else:
  236:                 nr=0
  237: 
  238:             if nr==len(ids)-1:
  239:                 return ""
  240:             else:
  241:                 if selected:
  242:                     return "<a href=\""+self.REQUEST['URL1']+"/selection?filename="+ids[nr+1]+"\" target=\"_top\">next image</a>"
  243:                 else:
  244:                     return "<a href=\""+self.REQUEST['URL1']+"?filename="+ids[nr+1]+"\" target=\"_top\">next image</a>"
  245:         except:
  246:             return ""
  247:         
  248:     def prevImage(self,request,selected=None):
  249:         """show nextimage"""
  250:         #return self.getId()
  251:         try:
  252:             ids=self.show_thumbs()
  253:             if request.SESSION.has_key("filename"):
  254:                 filename=request.SESSION["filename"]
  255:                 try:
  256:                     nr=ids.index(filename)
  257:                 except:
  258:                     nr=0
  259:             else:
  260:                 nr=0
  261: 
  262:             if nr==0:
  263:                 return ""
  264:             else:
  265:                 if selected:
  266:                     return "<a href=\""+self.REQUEST['URL1']+"/selection?filename="+ids[nr-1]+"\" target=\"_top\">previous image</a>"
  267:                 else:
  268:                     return "<a href=\""+self.REQUEST['URL1']+"?filename="+ids[nr-1]+"\" target=\"_top\">previous image</a>"
  269:         except:
  270:             return ""
  271:         
  272:     def meta_default(self,filename):
  273:         """url der metadaten"""
  274:         return self.defaultMetaString % filename
  275:                      
  276:     def getThumbAttribute(self,id,attr):
  277:         if hasattr(self,id):
  278:             return getattr(getattr(self,id),attr)
  279:         else:
  280:             if attr=='title':
  281:                 return "<b>Missing Image:%s</b>" % id
  282: 
  283:     def getThumbFunction(self,id,attr):
  284:         #return "DUMP"
  285:         if hasattr(self,id):
  286:             return getattr(getattr(self,id),attr)()
  287:         
  288:             
  289:     def xmlinput(self,url):
  290:         """Anzeige von ausgewaehlten thumbs"""
  291:         #return url
  292:         
  293:         url=urllib.unquote(url)
  294:         xmldoc=urllib.urlopen(url).read()
  295:         #print url
  296:         dom=xml.dom.minidom.parseString(xmldoc)
  297:         
  298:         images=dom.getElementsByTagName('imagename')
  299:         rc=[]
  300:         for image in images:
  301:             text=getText(image.childNodes)
  302:             if not text=="":
  303:                 rc.append(str(text))
  304:         rc.sort()
  305:         self.REQUEST.SESSION['filenames']=rc
  306:         pt=PageTemplateFile('Products/ImageArchive/zpt/overview_selected.zpt').__of__(self)
  307:         return pt()        
  308: 
  309:     def recalculateMeta(self):
  310:         """recalculate the metadata"""
  311:         
  312:         for entryid in self.__dict__:
  313:             entry=getattr(self,entryid)
  314:             if hasattr(entry,'meta_type'):
  315:                 
  316:                 if entry.meta_type=="ImageDigilib":
  317:                     entry.meta=entry.meta_default(entry.getId())
  318:         return "OK"
  319:     
  320:     def addImage(self):
  321:         """Add an Image"""
  322:         pt=PageTemplateFile('Products/ImageArchive/zpt/addImage.zpt').__of__(self)
  323:         return pt()
  324:     
  325:     def addImage2(self,fileupload,meta,use_default=None,RESPONSE=None):
  326:         """Add"""
  327:         #print "FU",fileupload
  328: 
  329:         if use_default:
  330:             try:
  331:                 meta=self.meta_default(fileupload.filename)
  332:             except:
  333:                 meta=None
  334:         else:
  335:             meta=None
  336:                 
  337:         manage_AddImageDigilib(self,fileupload.filename,fileupload,meta=meta)
  338:         return RESPONSE.redirect(self.REQUEST['URL1']+'/'+fileupload.filename)
  339:         #return  self.REQUEST['URL1']+'/'+fileupload.filename
  340: 
  341:     def ImportFiles2(self,RESPONSE=None):
  342:         """Import the existing files of a folder"""
  343:         files=os.listdir(self.ImageStoragePath)
  344:         ret=""
  345:         #print self.__dict__
  346:         for file in files:
  347:             if not file[0]==".":
  348:                 if self.__dict__.has_key(file):
  349: 
  350:                     ret=ret+"<br>"+file+" already exists!"
  351:                 else:
  352:                     ret=ret+"<br>"+file+" created!"
  353:                     meta=self.meta_default(file)
  354:                     newObj=ImageDigilib(file,file,meta)
  355:                     #print newObj,file
  356:                     #print newObj
  357:                     self._setObject(file,newObj)
  358:         #print ret
  359:         #pt=PageTemplateFile('Products/ImageArchive/out.zpt').__of__(self)
  360:         #print self.ImageStoragePath
  361:         os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl %s /mpiwg/temp/online/scaled/small 100 &"% self.ImageViewerPath)
  362:         RESPONSE.redirect('manage_main')
  363:     
  364:     def ImportFiles(self,RESPONSE=None):
  365:         """Import the existing files of a folder"""
  366:         files=os.listdir(self.ImageStoragePath)
  367:         ret=""
  368:         #print self.__dict__
  369:         for file in files:
  370:             if not file[0]==".":
  371:                 if self.__dict__.has_key(file):
  372: 
  373:                     ret=ret+"<br>"+file+" already exists!"
  374:                 else:
  375:                     ret=ret+"<br>"+file+" created!"
  376:                     newObj=ImageDigilib(file,file)
  377:                     #print newObj,file
  378:                     #print newObj
  379:                     try:
  380:                         self._setObject(file,newObj)
  381:                     except:
  382:                         """nothing yet"""
  383:         #print ret
  384:         #pt=PageTemplateFile('Products/ImageArchive/out.zpt').__of__(self)
  385:         #print self.ImageStoragePath
  386:         os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl %s /mpiwg/temp/online/scaled/small 100 &"% self.ImageViewerPath)
  387:         RESPONSE.redirect('manage_main')
  388:         
  389:     def ImageCollection_config(self):
  390:         """Nothing yet"""
  391:         if not hasattr(self,'defaultMetaString'):
  392:             self.defaultMetaString=""
  393:             
  394:         pt=PageTemplateFile('Products/ImageArchive/zpt/ChangeImageCollectionForm.zpt').__of__(self)
  395:         return pt()
  396: 
  397:     def ChangeImageCollection(self,title,ImageStoragePath,ImageViewerPath,defaultMetaString,RESPONSE=None):
  398:         """Change"""
  399:         self.title=title
  400:         self.ImageStoragePath=ImageStoragePath
  401:         self.ImageViewerPath=ImageViewerPath
  402:         self.defaultMetaString=defaultMetaString
  403:         
  404:         if RESPONSE is not None:
  405:             RESPONSE.redirect('manage_main')
  406: 
  407:     def show_selected_thumbs(self):
  408:         #ids=[]
  409:         
  410:         return self.REQUEST.SESSION['filenames']
  411: 
  412:     def show_thumbs(self):
  413:         ids=[]
  414:         for entry in self.__dict__:
  415:             #print entry
  416:             if hasattr(getattr(self,entry),'thumb'):
  417:                 ids.append(entry)
  418:                 
  419:         #print ids
  420:         ids.sort()
  421:         return ids
  422: 
  423:     def firstSets(self,selected=None):
  424:         ids=self.show_thumbs()
  425:         if ids:
  426:             if selected:
  427:                 return "<a href=\""+self.REQUEST['URL1']+"/selection?filename="+ids[0]+"\" target=\"_top\">first sets</a>"
  428:             else:
  429:                 return "<a href=\""+self.REQUEST['URL1']+"?filename="+ids[0]+"\" target=\"_top\">first sets</a>"
  430: 
  431:     def lastSets(self,selected=None):
  432:         ids=self.show_thumbs()
  433:         if ids:
  434:             colRows=self.getColTimesRow()
  435: 
  436:             if colRows[1]:
  437:                 nr=len(ids)-colRows[0]*colRows[1]
  438:             else:
  439:                 nr=0
  440: 
  441:             if nr<0:
  442:                 nr=0
  443: 
  444:             if selected:
  445:                 return "<a href=\""+self.REQUEST['URL1']+"/selection?filename="+ids[nr]+"\" target=\"_top\">last set</a>"
  446:             else:
  447:                 return "<a href=\""+self.REQUEST['URL1']+"?filename="+ids[nr]+"\" target=\"_top\">last sets</a>"
  448: 
  449:         
  450:                 
  451:     def nextSets(self,selected=None):
  452:         """show nextimage"""
  453:         ids=self.show_thumbs()
  454:         colRows=self.getColTimesRow()
  455:         if ids:
  456:             if colRows[1]:
  457: 
  458:                 if self.REQUEST.SESSION.has_key("filename"):
  459:                     filename=self.REQUEST.SESSION["filename"]
  460:                     try:
  461:                         nr=ids.index(filename)+colRows[0]*colRows[1]
  462:                         if nr>=len(ids):
  463:                             nr=len(ids)-1
  464:                     except:
  465:                         nr=0
  466:                 else:
  467:                     nr=0
  468: 
  469:                 if nr==len(ids)-1:
  470:                     return ""
  471:                 else:
  472:                     if selected:
  473:                         return "<a href=\""+self.REQUEST['URL1']+"/selection?filename="+ids[nr]+"\" target=\"_top\">next set</a>"
  474:                     else:
  475:                         return "<a href=\""+self.REQUEST['URL1']+"?filename="+ids[nr]+"\" target=\"_top\">next set</a>"
  476: 
  477:     def prevSets(self,selected=None):
  478:         
  479:         """show nextimage"""
  480:         #return self.getId()
  481:         ids=self.show_thumbs()
  482:         colRows=self.getColTimesRow()
  483:         if ids:
  484:             if colRows[1]:
  485:                 if self.REQUEST.SESSION.has_key("filename"):
  486:                     filename=self.REQUEST.SESSION["filename"]
  487:                     try:
  488:                         nr=ids.index(filename)-colRows[0]*colRows[1]
  489:                         if nr<0:
  490:                             nr=0
  491:                     except:
  492:                         nr=0
  493:                 else:
  494:                     nr=0
  495:                 try:
  496:                     num=ids.index(filename)
  497:                 except:
  498:                     num=0
  499: 
  500:                 if num==0:
  501:                     return ""
  502:                 else:
  503:                     if selected:
  504:                         return "<a href=\""+self.REQUEST['URL1']+"/selection?filename="+ids[nr]+"\" target=\"_top\">previous sets</a>"
  505:                     else:
  506:                         return "<a href=\""+self.REQUEST['URL1']+"?filename="+ids[nr]+"\" target=\"_top\">previous sets</a>"
  507:             else:
  508:                 return ""
  509: 
  510:     def showRuler(self,selected=None):
  511:         """show ruler"""
  512:         showall =self.REQUEST.SESSION.get('showall','no')
  513:         if showall=='no':
  514:             ids=self.show_thumbs()
  515:             colRows=self.getColTimesRow()
  516:             num=int(len(ids)/(colRows[0]*colRows[1]))
  517:             a=colRows[0]*colRows[1]
  518:             if num/a+1>1:
  519: 
  520:                 ret="<b>Show thumbnail group no:</b></br>"
  521:                 for i in range(num/a+1):
  522:                     k=i*a
  523:                     if selected:                
  524:                         href=self.REQUEST['URL1']+"/selection?filename="+ids[k]
  525:                     else:
  526:                         href=self.REQUEST['URL1']+"?filename="+ids[k]
  527: 
  528:                     ret+="""<a href="%s" target=_"top">%i</a>&nbsp;&nbsp;"""%(href,i)
  529: 
  530:             else:
  531:                 ret=""
  532:             ret+="""<a href="%s?showall=yes" target="_top">show all</a> """%self.REQUEST['URL1']
  533:         else:
  534:             ret="""<a href="%s?showall=no" target="_top">show groups</a> """%self.REQUEST['URL1']
  535: 
  536:         return ret
  537:     
  538:     def show_thumbs_selected_rows(self,numberOfColumns):
  539:         """Ausgabe anzahl"""
  540:         ids=self.show_selected_thumbs()
  541:         self.REQUEST.SESSION['ids']=ids
  542:         number=int(len(ids)/numberOfColumns)+1
  543:         self.REQUEST.SESSION['number']=range(number)
  544:         return range(number+1)
  545: 
  546:     def setColTimesRowForm(self):
  547:         """form for matrix setting"""
  548:         pt=PageTemplateFile('Products/ImageArchive/zpt/selectColTimesRow.zpt').__of__(self)
  549:         return pt()
  550: 
  551:     def setDone(self):
  552:         """done"""
  553:         
  554:         pt=PageTemplateFile('Products/ImageArchive/zpt/changedColTimesRow.zpt').__of__(self)
  555:         return pt()
  556: 
  557:     def setColTimesRow(self,cols,rows):
  558:         """set coltimes row"""
  559:         RESPONSE=self.REQUEST.RESPONSE
  560:         if not rows:
  561:             rows=None
  562:         if rows=="":
  563:             rows=None
  564: 
  565:         if rows:
  566:             RESPONSE.setCookie("ImageViewerRows",rows)
  567:         RESPONSE.setCookie("ImageViewerCols",cols)
  568: 
  569:         RESPONSE.redirect(self.REQUEST['URL1']+"/setDone")
  570:         
  571:     def getColTimesRow(self,showall='No'):
  572:         """coltimesrow"""
  573:         
  574:         REQUEST=self.REQUEST
  575:         """matrix"""
  576:         if REQUEST.cookies.has_key("ImageViewerRows"):
  577:             
  578:             try:
  579:                 rows=int(REQUEST.cookies["ImageViewerRows"])
  580:             except:
  581:                 rows=6
  582:         else:
  583:             rows=6
  584:             
  585:         if REQUEST.cookies.has_key("ImageViewerCols"):
  586:             #print "COLS",REQUEST.cookies["ImageViewerCols"]
  587:             cols=int(REQUEST.cookies["ImageViewerCols"])
  588:         else:
  589:             cols=2
  590: 
  591:         idsnumber=len(self.show_thumbs())
  592:         if rows:
  593:             if cols*rows >idsnumber:
  594:                 rows=int(idsnumber/cols)+1
  595: 
  596:         #print cols,rows
  597:         if showall=='yes':
  598:             rows=int(idsnumber/cols)+1
  599:             
  600:         return (cols,rows)
  601:                 
  602:         
  603:     def show_thumbs_rows(self,numberOfColumns,numberOfRows=None,startId=None):
  604:         """Ausgabe anzahl"""
  605: 
  606:         idsAll=self.show_thumbs()
  607:         
  608:         if self.REQUEST.SESSION.has_key("filename"):
  609:             filename=self.REQUEST.SESSION["filename"]
  610:             
  611:                 
  612:             try:
  613:                 startId=filename
  614:                 if startId=="":
  615:                     startId=idsAll[0][0:]    
  616:             except:
  617:                 startId=idsAll[0][0:]    
  618:         else:
  619:             startId=idsAll[0][0:]
  620:             
  621: 
  622:         
  623: 
  624:         if numberOfRows:
  625:            
  626:             startPic=idsAll.index(startId)
  627:             try:
  628:                 
  629:                 startPic=idsAll.index(startId)
  630:                 endPic=startPic+numberOfColumns*numberOfRows
  631:                 ids=idsAll[startPic:endPic]
  632:             except:
  633:                 ids=idsAll
  634:         else:
  635: 
  636:             ids=idsAll
  637: 
  638:           
  639:         self.REQUEST.SESSION['ids']=ids
  640:         number=int(len(ids)/numberOfColumns)+1
  641:     
  642:         return range(number+1)
  643: 
  644:     def show_thumbs_columns(self,row,numberOfColumns):
  645:         """Ausgabe einer Liste der Reihe"""
  646:         ids=self.REQUEST.SESSION['ids']
  647:         max=len(ids)
  648:         if (row*numberOfColumns)<max:
  649:             return ids[(row-1)*numberOfColumns:row*numberOfColumns]
  650:         else:
  651:             return ids[(row-1)*numberOfColumns:]
  652:         
  653:     def thumblistSelected_old(self):
  654:         """main template collection"""
  655:         pt=PageTemplateFile('Products/ImageArchive/zpt/thumbselected.zpt').__of__(self)
  656:         return pt()
  657: 
  658:     def thumblistSelected(self):
  659:         """main template collection"""
  660:         pt=PageTemplateFile('Products/ImageArchive/zpt/thumbselected2.zpt').__of__(self)
  661:         return pt()
  662:     
  663:     def thumblist_old(self):
  664:         """main template collection"""
  665:         pt=PageTemplateFile('Products/ImageArchive/zpt/thumbs.zpt').__of__(self)
  666:         return pt()
  667: 
  668:     def thumblist(self):
  669:         """main template collection"""
  670:         pt=PageTemplateFile('Products/ImageArchive/zpt/thumb2.zpt').__of__(self)
  671:         return pt()
  672: 
  673:     def thumblistNewWindow(self):
  674:         """Thumbs mit clik neues Fenster oeffnen"""
  675:         pt=PageTemplateFile('Products/ImageArchive/zpt/thumbNewWindow.zpt').__of__(self)
  676:         return pt()
  677:         
  678: 
  679:     def navig_selected_html(self):
  680:         """navigation"""
  681:         #self.REQUEST.SESSION['URL']=self.REQUEST['URL0']
  682:         pt=PageTemplateFile('Products/ImageArchive/zpt/navigation_selected.zpt').__of__(self)
  683:         return pt()
  684: 
  685:     def navig_html(self):
  686:         """navigation"""
  687:         #self.REQUEST.SESSION['URL']=self.REQUEST['URL0']
  688:         pt=PageTemplateFile('Products/ImageArchive/zpt/navigation.zpt').__of__(self)
  689:         return pt()
  690: 
  691: 
  692:     def selection(self):
  693:         """show only selected"""
  694:         if self.REQUEST.has_key('filename'):
  695:             filen=self.REQUEST['filename']
  696:         else:
  697:             filen=""
  698:         self.REQUEST.SESSION['filename']=filen
  699:         pt=PageTemplateFile('Products/ImageArchive/zpt/overview_selected2.zpt').__of__(self)
  700:         return pt()  
  701:         
  702:     def index_html(self):
  703:         """main template collection"""
  704:         if self.REQUEST.has_key('filename'):
  705:             filen=self.REQUEST['filename']
  706:         else:
  707:             filen=""
  708: 
  709:         self.REQUEST.SESSION['filename']=filen
  710:         
  711:         if self.REQUEST.has_key('showall'):
  712: 
  713:             self.REQUEST.SESSION['showall']=self.REQUEST.get('showall')
  714:         else:
  715:             self.REQUEST.SESSION['showall']=self.REQUEST.SESSION.get('showall','no')
  716:             
  717:         
  718:         pt=PageTemplateFile('Products/ImageArchive/zpt/overview.zpt').__of__(self)
  719:         return pt()
  720:     
  721: def manage_AddImageCollectionForm(self):
  722:     """Nothing yet"""
  723:     pt=PageTemplateFile('Products/ImageArchive/zpt/AddImageCollectionForm.zpt').__of__(self)
  724:     return pt()
  725:     
  726: def manage_AddImageCollection(self,id,title,ImageStoragePath,ImageViewerPath,defaultMetaString,RESPONSE=None):
  727:     """Add ImageCollection"""
  728:     newObj=ImageCollection(id,title,ImageStoragePath,ImageViewerPath,defaultMetaString)
  729:     self._setObject(id,newObj)
  730:     
  731:     if RESPONSE is not None:
  732:         RESPONSE.redirect('manage_main')
  733: 
  734: 
  735: class ImageCollectionIFrame(ImageCollection):
  736:     """Class fuer Collection set als IFrame"""
  737: 
  738:     meta_type="ImageCollectionIFrame"
  739:     label=ImageCollection.title
  740: 
  741:     def getImageTag(self):
  742:         """ hack : method needed by echo_content"""
  743:         return ""
  744:     
  745:     def rotate(self,angle,url,RESPONSE):
  746: 	"""rotate"""
  747: 	
  748: 	RESPONSE.redirect("javascript:document.domain='mpg.de';parent.iframe.right.rotation(%i)"%int(angle))
  749: 	RESPONSE.redirect(url)
  750:     def request(self):
  751:         """request"""
  752:         return self.REQUEST
  753:         
  754:     def index_html(self):
  755:         """index"""
  756:         if self.REQUEST.has_key('filename'):
  757:             filen=self.REQUEST['filename']
  758:         else:
  759:             filen=""
  760:         self.REQUEST.SESSION['filename']=filen
  761:         
  762:     
  763:         pt=PageTemplateFile('Products/ImageArchive/zpt/IFrameMain.zpt').__of__(self)
  764:         return pt()
  765: 
  766:     def iframe_html(self):
  767:         """iframe"""
  768:         if self.REQUEST.has_key('filename'):
  769:             filen=self.REQUEST['filename']
  770:         else:
  771:             filen=""
  772:         self.REQUEST.response.setCookie('filename',filen)
  773:         pt=PageTemplateFile('Products/ImageArchive/zpt/IFrameOverview.zpt').__of__(self)
  774:         return pt()
  775: 
  776: 
  777: def manage_AddImageCollectionIFrameForm(self):
  778:     """Nothing yet"""
  779:     pt=PageTemplateFile('Products/ImageArchive/zpt/AddImageCollectionIFrameForm.zpt').__of__(self)
  780:     return pt()
  781:     
  782: def manage_AddImageCollectionIFrame(self,id,title,ImageStoragePath,ImageViewerPath,defaultMetaString,RESPONSE=None):
  783:     """Add ImageCollection"""
  784:     newObj=ImageCollectionIFrame(id,title,ImageStoragePath,ImageViewerPath,defaultMetaString)
  785:     self._setObject(id,newObj)
  786:     
  787:     if RESPONSE is not None:
  788:         RESPONSE.redirect('manage_main')
  789: 
  790: 

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