Annotation of ImageArchive/ImageArchive.py, revision 1.17

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

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