File:  [Repository] / ImageArchive / ImageArchive.py
Revision 1.26: download - view: text, annotated - select for diffs - revision graph
Tue Aug 3 13:36:30 2004 UTC (19 years, 10 months ago) by dwinter
Branches: MAIN
CVS tags: HEAD
bugs in showruler 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:             #print num,num+1
  519:             if num+1>1:
  520: 
  521:                 ret="<b>Show thumbnail group no:</b></br>"
  522:                 for i in range(num+1):
  523:                     k=i*a
  524:                     if selected:                
  525:                         href=self.REQUEST['URL1']+"/selection?filename="+ids[k]
  526:                     else:
  527:                         href=self.REQUEST['URL1']+"?filename="+ids[k]
  528: 
  529:                     ret+="""<a href="%s" target="_top">%i</a>&nbsp;&nbsp;"""%(href,i)
  530: 
  531:             else:
  532:                 ret=""
  533:             ret+="""<a href="%s?showall=yes" target="_top">show all</a> """%self.REQUEST['URL1']
  534:         else:
  535:             ret="""<a href="%s?showall=no" target="_top">show groups</a> """%self.REQUEST['URL1']
  536: 
  537:         return ret
  538:     
  539:     def show_thumbs_selected_rows(self,numberOfColumns):
  540:         """Ausgabe anzahl"""
  541:         ids=self.show_selected_thumbs()
  542:         self.REQUEST.SESSION['ids']=ids
  543:         number=int(len(ids)/numberOfColumns)+1
  544:         self.REQUEST.SESSION['number']=range(number)
  545:         return range(number+1)
  546: 
  547:     def setColTimesRowForm(self):
  548:         """form for matrix setting"""
  549:         pt=PageTemplateFile('Products/ImageArchive/zpt/selectColTimesRow.zpt').__of__(self)
  550:         return pt()
  551: 
  552:     def setDone(self):
  553:         """done"""
  554:         
  555:         pt=PageTemplateFile('Products/ImageArchive/zpt/changedColTimesRow.zpt').__of__(self)
  556:         return pt()
  557: 
  558:     def setColTimesRow(self,cols,rows):
  559:         """set coltimes row"""
  560:         RESPONSE=self.REQUEST.RESPONSE
  561:         if not rows:
  562:             rows=None
  563:         if rows=="":
  564:             rows=None
  565: 
  566:         if rows:
  567:             RESPONSE.setCookie("ImageViewerRows",rows)
  568:         RESPONSE.setCookie("ImageViewerCols",cols)
  569: 
  570:         RESPONSE.redirect(self.REQUEST['URL1']+"/setDone")
  571:         
  572:     def getColTimesRow(self,showall='No'):
  573:         """coltimesrow"""
  574:         
  575:         REQUEST=self.REQUEST
  576:         """matrix"""
  577:         if REQUEST.cookies.has_key("ImageViewerRows"):
  578:             
  579:             try:
  580:                 rows=int(REQUEST.cookies["ImageViewerRows"])
  581:             except:
  582:                 rows=6
  583:         else:
  584:             rows=6
  585:             
  586:         if REQUEST.cookies.has_key("ImageViewerCols"):
  587:             #print "COLS",REQUEST.cookies["ImageViewerCols"]
  588:             cols=int(REQUEST.cookies["ImageViewerCols"])
  589:         else:
  590:             cols=2
  591: 
  592:         idsnumber=len(self.show_thumbs())
  593:         if rows:
  594:             if cols*rows >idsnumber:
  595:                 rows=int(idsnumber/cols)+1
  596: 
  597:         #print cols,rows
  598:         if showall=='yes':
  599:             rows=int(idsnumber/cols)+1
  600:             
  601:         return (cols,rows)
  602:                 
  603:         
  604:     def show_thumbs_rows(self,numberOfColumns,numberOfRows=None,startId=None):
  605:         """Ausgabe anzahl"""
  606: 
  607:         idsAll=self.show_thumbs()
  608:         
  609:         if self.REQUEST.SESSION.has_key("filename"):
  610:             filename=self.REQUEST.SESSION["filename"]
  611:             
  612:                 
  613:             try:
  614:                 startId=filename
  615:                 if startId=="":
  616:                     startId=idsAll[0][0:]    
  617:             except:
  618:                 startId=idsAll[0][0:]    
  619:         else:
  620:             startId=idsAll[0][0:]
  621:             
  622: 
  623:         
  624: 
  625:         if numberOfRows:
  626:            
  627:             startPic=idsAll.index(startId)
  628:             try:
  629:                 
  630:                 startPic=idsAll.index(startId)
  631:                 endPic=startPic+numberOfColumns*numberOfRows
  632:                 ids=idsAll[startPic:endPic]
  633:             except:
  634:                 ids=idsAll
  635:         else:
  636: 
  637:             ids=idsAll
  638: 
  639:           
  640:         self.REQUEST.SESSION['ids']=ids
  641:         number=int(len(ids)/numberOfColumns)+1
  642:     
  643:         return range(number+1)
  644: 
  645:     def show_thumbs_columns(self,row,numberOfColumns):
  646:         """Ausgabe einer Liste der Reihe"""
  647:         ids=self.REQUEST.SESSION['ids']
  648:         max=len(ids)
  649:         if (row*numberOfColumns)<max:
  650:             return ids[(row-1)*numberOfColumns:row*numberOfColumns]
  651:         else:
  652:             return ids[(row-1)*numberOfColumns:]
  653:         
  654:     def thumblistSelected_old(self):
  655:         """main template collection"""
  656:         pt=PageTemplateFile('Products/ImageArchive/zpt/thumbselected.zpt').__of__(self)
  657:         return pt()
  658: 
  659:     def thumblistSelected(self):
  660:         """main template collection"""
  661:         pt=PageTemplateFile('Products/ImageArchive/zpt/thumbselected2.zpt').__of__(self)
  662:         return pt()
  663:     
  664:     def thumblist_old(self):
  665:         """main template collection"""
  666:         pt=PageTemplateFile('Products/ImageArchive/zpt/thumbs.zpt').__of__(self)
  667:         return pt()
  668: 
  669:     def thumblist(self):
  670:         """main template collection"""
  671:         pt=PageTemplateFile('Products/ImageArchive/zpt/thumb2.zpt').__of__(self)
  672:         return pt()
  673: 
  674:     def thumblistNewWindow(self):
  675:         """Thumbs mit clik neues Fenster oeffnen"""
  676:         pt=PageTemplateFile('Products/ImageArchive/zpt/thumbNewWindow.zpt').__of__(self)
  677:         return pt()
  678:         
  679: 
  680:     def navig_selected_html(self):
  681:         """navigation"""
  682:         #self.REQUEST.SESSION['URL']=self.REQUEST['URL0']
  683:         pt=PageTemplateFile('Products/ImageArchive/zpt/navigation_selected.zpt').__of__(self)
  684:         return pt()
  685: 
  686:     def navig_html(self):
  687:         """navigation"""
  688:         #self.REQUEST.SESSION['URL']=self.REQUEST['URL0']
  689:         pt=PageTemplateFile('Products/ImageArchive/zpt/navigation.zpt').__of__(self)
  690:         return pt()
  691: 
  692: 
  693:     def selection(self):
  694:         """show only selected"""
  695:         if self.REQUEST.has_key('filename'):
  696:             filen=self.REQUEST['filename']
  697:         else:
  698:             filen=""
  699:         self.REQUEST.SESSION['filename']=filen
  700:         pt=PageTemplateFile('Products/ImageArchive/zpt/overview_selected2.zpt').__of__(self)
  701:         return pt()  
  702:         
  703:     def index_html(self):
  704:         """main template collection"""
  705:         if self.REQUEST.has_key('filename'):
  706:             filen=self.REQUEST['filename']
  707:         else:
  708:             filen=""
  709: 
  710:         self.REQUEST.SESSION['filename']=filen
  711:         
  712:         if self.REQUEST.has_key('showall'):
  713: 
  714:             self.REQUEST.SESSION['showall']=self.REQUEST.get('showall')
  715:         else:
  716:             self.REQUEST.SESSION['showall']=self.REQUEST.SESSION.get('showall','no')
  717:             
  718:         
  719:         pt=PageTemplateFile('Products/ImageArchive/zpt/overview.zpt').__of__(self)
  720:         return pt()
  721:     
  722: def manage_AddImageCollectionForm(self):
  723:     """Nothing yet"""
  724:     pt=PageTemplateFile('Products/ImageArchive/zpt/AddImageCollectionForm.zpt').__of__(self)
  725:     return pt()
  726:     
  727: def manage_AddImageCollection(self,id,title,ImageStoragePath,ImageViewerPath,defaultMetaString,RESPONSE=None):
  728:     """Add ImageCollection"""
  729:     newObj=ImageCollection(id,title,ImageStoragePath,ImageViewerPath,defaultMetaString)
  730:     self._setObject(id,newObj)
  731:     
  732:     if RESPONSE is not None:
  733:         RESPONSE.redirect('manage_main')
  734: 
  735: 
  736: class ImageCollectionIFrame(ImageCollection):
  737:     """Class fuer Collection set als IFrame"""
  738: 
  739:     meta_type="ImageCollectionIFrame"
  740:     label=ImageCollection.title
  741: 
  742:     def getImageTag(self):
  743:         """ hack : method needed by echo_content"""
  744:         return ""
  745:     
  746:     def rotate(self,angle,url,RESPONSE):
  747: 	"""rotate"""
  748: 	
  749: 	RESPONSE.redirect("javascript:document.domain='mpg.de';parent.iframe.right.rotation(%i)"%int(angle))
  750: 	RESPONSE.redirect(url)
  751:     def request(self):
  752:         """request"""
  753:         return self.REQUEST
  754:         
  755:     def index_html(self):
  756:         """index"""
  757:         if self.REQUEST.has_key('filename'):
  758:             filen=self.REQUEST['filename']
  759:         else:
  760:             filen=""
  761:         self.REQUEST.SESSION['filename']=filen
  762:         
  763:     
  764:         pt=PageTemplateFile('Products/ImageArchive/zpt/IFrameMain.zpt').__of__(self)
  765:         return pt()
  766: 
  767:     def iframe_html(self):
  768:         """iframe"""
  769:         if self.REQUEST.has_key('filename'):
  770:             filen=self.REQUEST['filename']
  771:         else:
  772:             filen=""
  773:         self.REQUEST.response.setCookie('filename',filen)
  774:         pt=PageTemplateFile('Products/ImageArchive/zpt/IFrameOverview.zpt').__of__(self)
  775:         return pt()
  776: 
  777: 
  778: def manage_AddImageCollectionIFrameForm(self):
  779:     """Nothing yet"""
  780:     pt=PageTemplateFile('Products/ImageArchive/zpt/AddImageCollectionIFrameForm.zpt').__of__(self)
  781:     return pt()
  782:     
  783: def manage_AddImageCollectionIFrame(self,id,title,ImageStoragePath,ImageViewerPath,defaultMetaString,RESPONSE=None):
  784:     """Add ImageCollection"""
  785:     newObj=ImageCollectionIFrame(id,title,ImageStoragePath,ImageViewerPath,defaultMetaString)
  786:     self._setObject(id,newObj)
  787:     
  788:     if RESPONSE is not None:
  789:         RESPONSE.redirect('manage_main')
  790: 
  791: 

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