Diff for /ImageArchive/ImageArchive.py between versions 1.30 and 1.56

version 1.30, 2004/10/13 14:07:19 version 1.56, 2005/04/29 15:14:31
Line 1 Line 1
 from OFS.Folder import Folder  from OFS.Folder import Folder
 from OFS.SimpleItem import SimpleItem  from OFS.SimpleItem import SimpleItem
 from Globals import Persistent  from Globals import Persistent,package_home
 from Acquisition import Implicit  from Acquisition import Implicit
 from Products.PageTemplates.PageTemplateFile import PageTemplateFile  from Products.PageTemplates.PageTemplateFile import PageTemplateFile
 from Products.PageTemplates.PageTemplate import PageTemplate  from Products.PageTemplates.PageTemplate import PageTemplate
Line 10  import os.path Line 10  import os.path
 import urllib  import urllib
 import xml.dom.minidom  import xml.dom.minidom
 import operator  import operator
   import tempfile
   import shutil
   from types import *
   import time
   from threading import Thread
   import Queue
   
   try:
       from Products.ECHO_content.ECHO_collection import ECHO_basis
   except:
       print "ECHO Elements not imported"
       class ECHO_basis:
           """leer"""
   
           manage_options=()
   
   
   tdir = "/mpiwg/temp/tmp/archivesImageServer/"
   #tdir="/tmp/archivesImageServer/"
   
 def splitPath(str):  def splitPath(str):
     str2=str.replace("\\","/")      str2=str.replace("\\","/")
Line 24  def getText(nodelist): Line 43  def getText(nodelist):
            rc = rc + node.data             rc = rc + node.data
     return rc      return rc
   
   def getTextFromNode(nodename):
       nodelist=nodename.childNodes
       rc = ""
       for node in nodelist:
           if node.nodeType == node.TEXT_NODE:
              rc = rc + node.data
       return rc
   
   class generateSet:
       """generateSetThread"""
   
           
       def __init__(self,filenames,filenamesIds,ImageViewerPath,ids,url,local=None,version="working"):
           """init generateSet"""
           self.filenames=filenames
           self.filenamesIds=filenamesIds
           self.ImageViewerPath=ImageViewerPath
           self.ids=ids
           self.local=local
           self.url=url
           self.version=version
           self.done=None
   
   
       def __call__(self):
           """call generate Set"""
   
           storeTempDir=tempfile.tempdir
       tempfile.tempdir=tdir
   
           tmpPath=tempfile.mktemp()
           tmpZip=tempfile.mktemp()+".gtz"
           tmpFn=os.path.split(tmpZip)[1]
   
           if not os.path.exists(tempfile.tempdir):
               os.mkdir(tempfile.tempdir) 
   
           if not os.path.exists(tmpPath):
               os.mkdir(tmpPath) 
           
       self.response=""
   
           
           self.response="<h3>1. step: getting the images</h3>"
   
           for id in self.filenames:
   
               if self.filenamesIds.has_key(id[0]):
                   filename=self.filenamesIds[id[0]][0]+"_"+id[0]
               else:
                   filename=id[0]
   
                       self.response+=str("<p>Get File: %s<br>\n"%filename)
   
               if self.local:
                   
                   if self.version=="working":
   
                       sourcePath="/mpiwg/temp/online/scaled/small/"+self.ImageViewerPath+"/"+os.path.splitext(id[0])[0]+".jpg"
                   else:
                       sourcePath="/mpiwg/online/"+self.ImageViewerPath+"/"+id[0]
                   targetPath=tmpPath+"/"+filename
                   try:
                                   shutil.copyfile(sourcePath,targetPath)
                   except:
                                   self.response+=(str("<p>Error in File: %s (possible missing)<br>\n"%filename))
               else:
                   if self.version=="working":
                       path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+os.path.splitext(urllib.quote(id[0]))[0]+"&dh=2000&dw=2000"
                   else:
                       path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+os.path.splitext(urllib.quote(id[0]))[0]+"&mo=rawfile,hires"
                   image=urllib.urlopen(path).read()
               
               
                   fh=file(tmpPath+"/"+filename,"w")
   
               
                   fh.write(image)
                   fh.close()
   
                       #folgeseiten
               if int(self.filenamesIds[id[0]][1])>1: 
                   #ids=self.show_thumbs()
                               
                       try:
                                   nr=self.ids.index(id[0])
                   except:
                                   self.response+=str("<p>Error in File: %s (possible missing)<br>\n"%id[0])
                   
   
                                   nr=0
   
                   numberOfPages=self.filenamesIds[id[0]][1]
                   for k in range(int(numberOfPages)-1):
                       i=k+1
                       if self.filenamesIds.has_key(id[0]):
                           filename=self.filenamesIds[id[0]][0]+"_"+self.ids[nr+i]
                       else:
                           filename=id[0]
   
                                       self.response+=str("<p>Get File: %s<br>\n"%filename)
   
                       if self.local:
                           sourcePath="/mpiwg/online/"+self.ImageViewerPath+"/"+self.ids[nr+1]
                           targetPath=tmpPath+"/"+filename
                           try:
                               shutil.copyfile(sourcePath,targetPath)
                           except:
                                                   self.response+=str("<p>Error in File: %s (missing?)<br>\n"%filename)
                             
                       else:
                           path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+os.path.splitext(ids[nr+i])[0]+"&mo=rawfile,hires"
   
                           image=urllib.urlopen(path).read()
                       
   
                           fh=file(tmpPath+"/"+filename,"w")
                           fh.write(image)
                           fh.close()
   
           self.response+="<h3>2. step: creating the downloadable file</h3>"
       self.response+="<p>Create gtar<br>"
           self.response+="<p>This can take a while....<br>\n"
   
           fh=os.popen2("gnutar zcvf %s %s/*"%(tmpZip,tmpPath),1)[1]
           self.response+="<br>"
           for c in fh.read():
               self.response+=c
               if c==")":
                   self.response+="<br>\n"
               
                   
   
           
           shutil.rmtree(tmpPath)
   
           self.response+="<p>finished<br>\n"
   
           len=os.stat(tmpZip)[6]
           downloadUrl=self.url+"/downloadSet"
           self.response+="""<h1><a href="downloadSet?fn=%s">Click here for download ( %i Byte)</a></h1>\n"""%(tmpFn,len)
           self.response+="""<p>The file will be stored for a while, you can download it later, the URL is:</p>
               <p><a href="downloadSet?fn=%s">%s?fn=%s</a></h1>\n"""%(tmpFn,downloadUrl,tmpFn)
   
           self.done=True
       def getResult(self):
           """get result"""
           return self.response
   
       def isDone(self):
           if self.done:
               return True
           else:
               return False
           
   class metaData(SimpleItem):
       """Klasse fuer metadaten"""
       meta_type="metaData"
       
       def __init__(self,xmlurl,container=None):
           """__init__"""
           return self.update(xmlurl,container)
   
   
       def update(self,xmlurl,container=None):
           """update"""
   
           try:
               xmlfh=urllib.urlopen(xmlurl)
               dom=xml.dom.minidom.parse(xmlfh)
           except:
               return None
   
           md=dom.getElementsByTagName(container)
           mlist=[]
           if md:
               for node in md[0].childNodes:
                   if node.nodeType==dom.ELEMENT_NODE:
                       name=node.tagName
                       content=getTextFromNode(node)
                       setattr(self,name,content)
                       mlist.append(name)
               self.mlist=mlist[0:]
           else:
               self.mlist=[]
           
       def index_html(self):
           """index"""
           ret="<html><body>"
           for tag in self.mlist:
               ret+="<p>%s=%s</p>"%(tag,getattr(self,tag))
           return ret+"</body></html>"
                   
   
 class ImageDigilib(Folder,Persistent,Implicit):  class ImageDigilib(Folder,Persistent,Implicit):
     """Anzeige object fuer digilib"""      """Anzeige object fuer digilib"""
Line 56  class ImageDigilib(Folder,Persistent,Imp Line 268  class ImageDigilib(Folder,Persistent,Imp
   
     def addMetaObjectForm(self):      def addMetaObjectForm(self):
         """Add Form"""          """Add Form"""
         pt=PageTemplateFile('Products/ImageArchive/zpt/addMetaObject.zpt').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addMetaObject.zpt')).__of__(self)
         return pt()                  return pt()        
   
   
Line 70  class ImageDigilib(Folder,Persistent,Imp Line 282  class ImageDigilib(Folder,Persistent,Imp
         """ausgabe der metadaten"""          """ausgabe der metadaten"""
         return self.meta          return self.meta
           
       def manageMetaData(self,strict=None):
           """create or updateMetadata"""
           
           md=self.ZopeFind(self,obj_metatypes=["metaData"])
           
           if not md:
               self._setObject("metaData",metaData(self.meta,"ROW"))
   
           else:
               if not strict:
                   md[0][1].update(self.meta,"ROW")
               else:
                   print "strict"
                   if len(md[0][1].mlist)==0:
                       print " +++",self.getId()
                       md[0][1].update(self.meta,"ROW")
                   else:
                       print " ---",self.getId()
                       
     def uploadImage(self,fileupload,path_name):      def uploadImage(self,fileupload,path_name):
         """upload an Image from an Requast"""          """upload an Image from an Requast"""
         #path_name=self.ImageStoragePath          #path_name=self.ImageStoragePath
Line 80  class ImageDigilib(Folder,Persistent,Imp Line 311  class ImageDigilib(Folder,Persistent,Imp
         f.write(filedata)          f.write(filedata)
         f.close()          f.close()
         try:          try:
             os.chmod(filename,0644)              os.chmod(filename,0664)
         except:          except:
             """hack"""              """hack"""
       #scale thumb
   
         os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl %s /mpiwg/temp/online/scaled/small 100 &"% self.ImageViewerPath)          self.scaleThumbs()
   
       #scale standard
           
       self.scaleWorkingVersions()
   
           
                   
     def download(self):      def downloadWorkingVersion(self):
           """download working version (2000 pixel)"""
           
           return self.download(fmt="&dw=2000&dh=2000",suffix=".jpg")
       
       def download(self,fmt="&mo=rawfile,hires",suffix=None):
         """download"""          """download"""
         path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+self.filename+"&mo=rawfile,hires"          path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+os.path.splitext(self.filename)[0]+fmt
         #self.REQUEST.SESSION['string']="<img src=\"%s\">"% path      
         #pt=PageTemplateFile('Products/ImageArchive/thumb.zpt').__of__(self)      if self.REQUEST.SESSION.has_key('filenamesIds') and self.REQUEST.SESSION['filenamesIds'].has_key(self.filename):
         return self.REQUEST.RESPONSE.redirect(path)          filename=self.REQUEST.SESSION['filenamesIds'][self.filename][0]+"_"+self.filename
       else:
           filename=self.filename
   
       if suffix:
           filename=os.path.splitext(filename)[0]+suffix
           
       self.REQUEST.RESPONSE.setHeader("Content-Disposition","""attachement; filename="%s" """%filename)
       self.REQUEST.RESPONSE.setHeader("Content-Type","application/octet-stream")
           #print path
       imagefh=urllib.urlopen(path,'rb')
           
       self.REQUEST.RESPONSE.write(imagefh.read())
       self.REQUEST.RESPONSE.close()
           #return self.REQUEST.RESPONSE.redirect(path)
   
       def updateImageForm(self):
           """form"""
           pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','upDateImageForm.zpt')).__of__(self)
           return pt()        
   
       def renameImageForm(self):
           """form"""
           pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','renameImageForm.zpt')).__of__(self)
           return pt()
   
       def renameImage(self,newname,RESPONSE=None):
           """umbenennen"""
           #umbennen des files im folder
           oldname=self.getId()
           self.aq_parent.manage_renameObjects(ids=[oldname],new_ids=[newname])
           self.title=newname[0:]
               self.filename=newname[0:]   
               #umbennen des files auf dem server
           oldpath=os.path.join(self.ImageStoragePath,oldname)
           newpath=os.path.join(self.ImageStoragePath,newname)
               os.rename(oldpath,newpath)
           
           #umbenennen des versionsfolders
           oldfolder=os.path.join(self.ImageStoragePath,"."+oldname+".dir")
               newfolder=os.path.join(self.ImageStoragePath,"."+newname+".dir")
           if os.path.exists(oldfolder):
                   os.rename(oldfolder,newfolder)
               else:
                   os.mkdir(newfolder)
                   
           #schreibe info uber umbennenung
   
               renameName=os.path.join(newfolder,"renamed")
               if os.path.exists(renameName):
                   fh=file(renameName,'a')
               else:
                   fh=file(renameName,'w')
   
               tm=time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())
               try:
                   user=self.REQUEST['AUTHENTICATED_USER']
               except:
                   user="unknown"
   
               str="""%s %s %s %s\n"""%(tm,user,oldname,newname)
               fh.write(str)
               fh.close()
           
     def thumb(self):              #scale thumb
       
           self.scaleThumbs()
           
           #scale standard
   
           self.scaleWorkingVersions()
   
   
               if RESPONSE:
               RESPONSE.redirect(self.aq_parent.absolute_url()+"?filename="+self.filename)
       
   
       def updateImage(self,file,rename=None,RESPONSE=None):
           """lade neues Version des Bildes"""
           #teste ob Dokumenten ordner schon vorhanden
           imagePath=os.path.join(self.ImageStoragePath,self.getId())
           path=os.path.join(self.ImageStoragePath,"."+self.getId()+".dir")
           
           if not os.path.exists(path):
               os.mkdir(path,0775)
               os.chmod(path,0775)
               
           versionNumber=getattr(self,'versionNumber',0)+1
   
           #teste ob version schon existiert
   
           while os.path.exists(os.path.join(path,"V%i_%s"%(versionNumber,self.getId()))):
               versionNumber+=1
   
           #kopieren der bestehenden Version in den Versions ordner.
           imageNewPath=os.path.join(path,"V%i_%s"%(versionNumber,self.getId()))
           os.rename(imagePath,imageNewPath)
   
           #lesen des upload files und schreiben
           filedata=file.read()
           f=open(imagePath,"w")
           f.write(filedata)
           f.close()
           try:
               os.chmod(imagePath,0664)
           except:
               """hack"""
           #scale thumb
       
           self.scaleThumbs()
           
           #scale standard
   
           self.scaleWorkingVersions()
   
           if rename:
           self.renameImage(file.filename)
       
       
           if RESPONSE:
               RESPONSE.redirect(self.aq_parent.absolute_url()+"?filename="+self.filename)
       
   
           return "done"
           
       def thumb(self,url=None):
         """show thumb"""          """show thumb"""
         thumbname=os.path.splitext(self.filename)[0]+".jpg"          thumbname=os.path.splitext(self.filename)[0]+".jpg"
         ## if not os.path.exists("/mpiwg/temp/online/scaled/small/"+self.ImageViewerPath+"/"+thumbname):          ## if not os.path.exists("/mpiwg/temp/online/scaled/small/"+self.ImageViewerPath+"/"+thumbname):
Line 109  class ImageDigilib(Folder,Persistent,Imp Line 471  class ImageDigilib(Folder,Persistent,Imp
                           
         #DEVEL:take nausikaa for server solution          #DEVEL:take nausikaa for server solution
                   
         path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+self.filename+"&dw=100&dh=100&mo=lores"          path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+os.path.splitext(self.filename)[0]+"&dw=100&dh=100&mo=lores"
         #path="/mpiwg/online/"+self.ImageViewerPath+"/"+thumbname          #path="/mpiwg/online/"+self.ImageViewerPath+"/"+thumbname
         self.REQUEST.SESSION['string']="<img border=\"0\" src=\"%s\">"% path          self.REQUEST.SESSION['string']="<img border=\"0\" src=\"%s\">"% path
         pt=PageTemplateFile('Products/ImageArchive/zpt/thumb.zpt').__of__(self)          if url:
               return "<img border=\"0\" src=\"%s\">"% path
           else:
               pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','thumb.zpt')).__of__(self)
         return pt()          return pt()
           
     def index_html(self):      def index_html(self):
         """show image"""          """show image"""
         #DEVELOP: take first one for server          #DEVELOP: take first one for server
                   
         path="http://content.mpiwg-berlin.mpg.de/zogilib_images?lv=2&fn="+self.ImageViewerPath+"/"+self.filename          path="http://content.mpiwg-berlin.mpg.de/zogilib_images?lv=2&fn="+self.ImageViewerPath+"/"+os.path.splitext(self.filename)[0]
   
         #path="http://localhost:8080/mpiwg/online/"+self.ImageViewerPath+"/"+self.filename  
         #self.REQUEST.SESSION['string']="<img src=\"%s\">"% path  
         #pt=PageTemplateFile('Products/ImageArchive/thumb.zpt').__of__(self)  
         return self.REQUEST.RESPONSE.redirect(path)          return self.REQUEST.RESPONSE.redirect(path)
   
           
 def manage_AddImageDigilibForm(self):  def manage_AddImageDigilibForm(self):
     """Nothing yet"""      """Nothing yet"""
     pt=PageTemplateFile('Products/ImageArchive/zpt/AddImageDigilibForm.zpt').__of__(self)      pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddImageDigilibForm.zpt')).__of__(self)
     return pt()      return pt()
           
 def manage_AddImageDigilib(self,id,fileupload,meta=None,RESPONSE=None):  def manage_AddImageDigilib(self,id,fileupload,meta=None,RESPONSE=None):
     """Add ImageCollection"""      """Add ImageCollection"""
       
     #fileupload=self.REQUEST['fileupload']      #fileupload=self.REQUEST['fileupload']
     fn=splitPath(fileupload.filename)      fn=splitPath(fileupload.filename)
     newObj=ImageDigilib(id,fn,meta)      newObj=ImageDigilib(id,fn,meta)
Line 145  def manage_AddImageDigilib(self,id,fileu Line 507  def manage_AddImageDigilib(self,id,fileu
         RESPONSE.redirect('manage_main')          RESPONSE.redirect('manage_main')
   
                                     
 class ImageCollection(Folder, Persistent, Implicit):  
   class ImageCollection(Folder, Persistent, Implicit,ECHO_basis):
   
     """Sammelordner für Bilder"""      """Sammelordner für Bilder"""
     meta_type="ImageCollection"      meta_type="ImageCollection"
   
      
       zipThreads={}
       zipThreads2={}
       
     genericMetaDataType="leiden_meta"      genericMetaDataType="leiden_meta"
   
     leiden_meta_fields=['image_id','date','country','place','people','description','photographer']      leiden_meta_fields=['image_id','date','country','place','people','description','photographer']
Line 156  class ImageCollection(Folder, Persistent Line 524  class ImageCollection(Folder, Persistent
           
     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      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
   
     def scaleThumbs(self):     
       def refreshTxt(self):
           """txt fuer refresh"""
           tn=self.REQUEST.SESSION['threadName']
           return """ 2;url=%s?repeat=%s """%(self.absolute_url()+"/createSet",tn)
   
       def createSet(self,RESPONSE=None,local=None,version="working",repeat=None):
           """download aller gewaehlten files"""
   
               threadName=repeat
           
                          
               if not threadName or threadName=="":
                   threadStart=generateSet(self.REQUEST.SESSION['filenames'],self.REQUEST.SESSION['filenamesIds'],self.ImageViewerPath,self.show_thumbs(),self.absolute_url(),local=local,version=version)
                   thread=Thread(target=threadStart)
                   
                   thread.start()
   
                       
                   self.zipThreads[thread.getName()[0:]]=threadStart
                   self.zipThreads2[thread.getName()[0:]]=thread
                   self.REQUEST.SESSION['threadName']=thread.getName()[0:]
                   wait_template=self.aq_parent.ZopeFind(self.aq_parent,obj_ids=['zip_wait_template'])
                   if wait_template:
                       return wait_template[0][1]()
                   pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','zip_wait.zpt')).__of__(self)
                   return pt()
                   #xmltrans.run()
               else:
                   self.REQUEST.SESSION['threadName']=threadName
   
                   if (self.zipThreads[threadName].getResult()==None):
   
                       wait_template=self.aq_parent.ZopeFind(self.aq_parent,obj_ids=['wait_template'])
                       if wait_template:
                       return wait_template[0][1]()
                   
                       pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','zip_wait.zpt')).__of__(self)
                       return pt()
                   else:
                       if self.zipThreads[threadName].isDone():
                           self.REQUEST.SESSION['result']=self.zipThreads[threadName].getResult()
                           self.zipThreads2[threadName].join()
                           del(self.zipThreads2[threadName])
                           del(self.zipThreads[threadName])
                           pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','zip_result.zpt')).__of__(self)
                           return pt()
                           
                       else:
                           self.REQUEST.SESSION['result']=self.zipThreads[threadName].getResult()
                           self.REQUEST.SESSION['threadName']=threadName
                           pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','zip_wait_result.zpt')).__of__(self)
                           return pt()
   
   
   
   
   
       def checkThreads(self):
           """teste running threads"""
           ret="""<html>
           <head>
           <meta http-equiv="REFRESH" content="5;url=%s/checkThreads"
           <body><h2>Threads of %s</h2>"""%(self.absolute_url(),self.getId())
           
           for threadName in self.zipThreads.keys():
               if self.zipThreads2[threadName].isAlive():
                   ret+="<p>%s --> alive</p>"%threadName
               else:
                   ret+="<p>%s --> dead</p>"%threadName
           return ret+"</body></html>"
       
       def downloadSet(self,fn):
           """download prepared set"""
           filename=os.path.join(tdir,fn)
   
           
           self.REQUEST.RESPONSE.setHeader("Content-Disposition","""attachement; filename="%s" """%"image.tgz")
           self.REQUEST.RESPONSE.setHeader("Content-Type","application/octet-stream")
           len=os.stat(filename)[6]
           self.REQUEST.RESPONSE.setHeader("Content-Length",len)
           images=file(filename).read()
           self.REQUEST.RESPONSE.write(images)
           self.REQUEST.RESPONSE.close()
   
               
               
       def scaleThumbs(self,RESPONSE=None):
         """scale thumbs"""          """scale thumbs"""
         os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl %s /mpiwg/temp/online/scaled/small 100 &"% self.ImageViewerPath)      
       #scale thumbs
           ret=os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl -src=/mpiwg/online/ -dir=%s -dest=/mpiwg/temp/online/scaled/thumb -scaleto=100 &"% self.ImageViewerPath)
       if RESPONSE:
           RESPONSE.write(ret.read())
           RESPONSE.write("\n")
           
         return "RESCALING STARTED"          return "RESCALING STARTED"
           
       def scaleWorkingVersions(self,RESPONSE=None):
           """scale working versions"""
       
       #scale standard
   
       ret=os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl -src=/mpiwg/online/ -dir=%s -dest=/mpiwg/temp/online/scaled/small -scaleto=2000 &"% self.ImageViewerPath)
       if RESPONSE:
           RESPONSE.write(ret.read())
           RESPONSE.write("\n")
       return "rescaling started"
   
   
       
     def __init__(self,id,title,ImageStoragePath,ImageViewerPath,defaultMetaString):      def __init__(self,id,title,ImageStoragePath,ImageViewerPath,defaultMetaString):
         self.id=id          self.id=id
         self.title=title          self.title=title
Line 168  class ImageCollection(Folder, Persistent Line 642  class ImageCollection(Folder, Persistent
         self.ImageViewerPath=ImageViewerPath          self.ImageViewerPath=ImageViewerPath
         self.defaultMetaString=defaultMetaString          self.defaultMetaString=defaultMetaString
   
     manage_options = Folder.manage_options+(      optTMP= Folder.manage_options
   
       manage_options = optTMP+(
         {'label':'Main Config','action':'ImageCollection_config'},          {'label':'Main Config','action':'ImageCollection_config'},
         {'label':'Import','action':'ImportFiles'},          {'label':'Import','action':'ImportFiles'},
         {'label':'Recalculate Metadata','action':'recalculateMeta'},          {'label':'Recalculate MetadataLink','action':'recalculateMetaLink'},
         {'label':'Import Metadata','action':'importMetaForm'},          {'label':'Import Metadata File','action':'importMetaFileForm'},
           {'label':'Import Metadata','action':'importMetaData'},
         {'label':'Rescale thumbs','action':'scaleThumbs'},          {'label':'Rescale thumbs','action':'scaleThumbs'},
         {'label':'Weight (ECHO)','action':'weightForm'},      {'label':'Rescale working version','action':'scaleWorkingVersions'},
         )          )
   
     def weightForm(self):  
         """Weight"""  
         pt=PageTemplateFile('Products/ImageArchive/zpt/changeWeight.zpt').__of__(self)  
         return pt()  
   
     def changeWeight(self,weight,RESPONSE=None):  
         """Change weight"""  
         self.weight=weight  
                   
         if RESPONSE is not None:      def importMetaData(self,strict=None):
             RESPONSE.redirect('manage_main')          """import metadata, if strict ist not None then only metadata will be rebuild where metadata is empty"""
   
           for image in self.ZopeFind(self,obj_metatypes=["ImageDigilib"]):
               print image[1].getId()
               image[1].manageMetaData(strict)
           return "ok"
                   
     def importMetaForm(self):  
       def importMetaFileForm(self):
         """import metadata"""          """import metadata"""
         pt=PageTemplateFile('Products/ImageArchive/zpt/importMeta.zpt').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','importMeta.zpt')).__of__(self)
         return pt()          return pt()
   
     def importMeta(self,fileupload,tag):      def importMetaFile(self,fileupload,tag):
         """import"""          """import"""
         filedata=fileupload.read()          filedata=fileupload.read()
         dom=xml.dom.minidom.parseString(filedata)          dom=xml.dom.minidom.parseString(filedata)
Line 229  class ImageCollection(Folder, Persistent Line 704  class ImageCollection(Folder, Persistent
         return "OK"          return "OK"
           
   
     def nextImage(self,request,selected=None):      def nextImage(self,request,selected=None,returnFn=None):
         """show nextimage"""          """show nextimage"""
         try:          try:
             ids=self.show_thumbs()              ids=self.show_thumbs()
Line 237  class ImageCollection(Folder, Persistent Line 712  class ImageCollection(Folder, Persistent
                 filename=request.SESSION["filename"]                  filename=request.SESSION["filename"]
                 try:                  try:
                     nr=ids.index(filename)                      nr=ids.index(filename)
             
                 except:                  except:
                     nr=0                      nr=0
             else:              else:
Line 245  class ImageCollection(Folder, Persistent Line 721  class ImageCollection(Folder, Persistent
             if nr==len(ids)-1:              if nr==len(ids)-1:
                 return ""                  return ""
             else:              else:
               if returnFn:
                   return ids[nr+1]
               
                 if selected:                  if selected:
                     return "<a href=\""+self.REQUEST['URL1']+"/selection?filename="+ids[nr+1]+"\" target=\"_top\">next image</a>"                      return "<a href=\""+self.REQUEST['URL1']+"/selection?filename="+ids[nr+1]+"\" target=\"_top\">next image</a>"
                 else:                  else:
Line 278  class ImageCollection(Folder, Persistent Line 757  class ImageCollection(Folder, Persistent
                   
     def meta_default(self,filename):      def meta_default(self,filename):
         """url der metadaten"""          """url der metadaten"""
         return self.defaultMetaString % filename          return self.defaultMetaString % urllib.quote(filename)
                                             
     def getThumbAttribute(self,id,attr):      def getThumbAttribute(self,id,attr):
         if hasattr(self,id):          if hasattr(self,id):
Line 299  class ImageCollection(Folder, Persistent Line 778  class ImageCollection(Folder, Persistent
                   
         url=urllib.unquote(url)          url=urllib.unquote(url)
         xmldoc=urllib.urlopen(url).read()          xmldoc=urllib.urlopen(url).read()
         #print url          #return xmldoc
       try:
         dom=xml.dom.minidom.parseString(xmldoc)          dom=xml.dom.minidom.parseString(xmldoc)
           except:
           return xmldoc
       images=dom.getElementsByTagName('image')
                   
         images=dom.getElementsByTagName('imagename')  
         rc=[]          rc=[]
       fnIds={}
         for image in images:          for image in images:
             text=getText(image.childNodes)          imagename=image.getElementsByTagName('imagename')[0]
                   
           
                   
           idnr=image.getElementsByTagName('idnr')[0]
           id=getText(idnr.childNodes)
           numberOfPages=image.getElementsByTagName('numberOfPages')[0]
           nopT=getText(numberOfPages.childNodes)
           try:
               nop=int(nopT)
           except:
               nop=0
                   texts=getText(imagename.childNodes).split("\n") #mehrere bilder in return getrennter liste
                   for text in texts:
             if not text=="":              if not text=="":
                 rc.append(str(text))              try:
                   rc.append((str(text),id,nop))
                   fnIds[str(text)]=(id,nop)
               except:
                   rc.append((repr(text),id,nop))
                   fnIds[repr(text)]=(id,nop)
                   
   
         rc.sort()          rc.sort()
         self.REQUEST.SESSION['filenames']=rc          self.REQUEST.SESSION['filenames']=rc
         pt=PageTemplateFile('Products/ImageArchive/zpt/overview_selected.zpt').__of__(self)      self.REQUEST.SESSION['filenamesIds']=fnIds
       
           pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','overview_selected.zpt')).__of__(self)
         return pt()                  return pt()        
   
     def recalculateMeta(self):      def recalculateMetaLink(self):
         """recalculate the metadata"""          """recalculate the metadata"""
                   
         for entryid in self.__dict__:          for entryid in self.__dict__:
Line 326  class ImageCollection(Folder, Persistent Line 831  class ImageCollection(Folder, Persistent
           
     def addImage(self):      def addImage(self):
         """Add an Image"""          """Add an Image"""
         pt=PageTemplateFile('Products/ImageArchive/zpt/addImage.zpt').__of__(self)          
           pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addImage.zpt')).__of__(self)
         return pt()          return pt()
           
     def addImage2(self,fileupload,meta,use_default=None,RESPONSE=None):      def addImage2(self,fileupload,meta,use_default=None,RESPONSE=None):
         """Add"""          """Add"""
   
         #print "FU",fileupload          #print "FU",fileupload
   
         if use_default:          if use_default:
Line 364  class ImageCollection(Folder, Persistent Line 871  class ImageCollection(Folder, Persistent
                     #print newObj                      #print newObj
                     self._setObject(file,newObj)                      self._setObject(file,newObj)
         #print ret          #print ret
         #pt=PageTemplateFile('Products/ImageArchive/out.zpt').__of__(self)          #pt=PageTemplateFile('Products/ImageArchive/out.zpt')).__of__(self)
           #print self.ImageStoragePath
   
       #scale thumb
       
           self.scaleThumbs()
   
       #scale standard
   
       self.scaleWorkingVersions()
       
   
           RESPONSE.redirect('manage_main')
   
       def importStructure(self,path):
           """import"""
           splitted=os.path.split(path)
           if os.path.isDir(path) and (len(splitted[1])>0) and (splitted[1][0]=="."):
               manage_AddImageCollection(self,splitted[1],splitted[1],path,self.ImageViewerPath,self.defaultMetaString,RESPONSE=None)
               
               obj=getattr(self,splitted[1])
               obj.ImportFiles()
   
       def ImportStructure(self,RESPONSE=None):
           """Import the existing files of a folder"""
           files=os.listdir(self.ImageStoragePath)
           ret=""
           #print self.__dict__
   
   
           for file in files:
               
               if os.path.isdir(os.path.join(self.ImageStoragePath,file)):
                   imageStoragePath=os.path.join(self.ImageStoragePath,file)
                   imageViewerPath=os.path.join(self.ImageViewerPath,file)
                   manage_AddImageCollection(self,file,file,imageStoragePath,imageViewerPath,self.defaultMetaString)
               
                   obj=getattr(self,file)
                   obj.ImportStructure()
               else:
                   if not file[0]==".":
                       if self.__dict__.has_key(file):
   
                           ret=ret+"<br>"+file+" already exists!"
                       else:
                           ret=ret+"<br>"+file+" created!"
                           newObj=ImageDigilib(file,file)
                           #print newObj,file
                           #print newObj
                           try:
                               self._setObject(file,newObj)
                           except:
                               """nothing yet"""
           #print ret
           #pt=PageTemplateFile('Products/ImageArchive/out.zpt')).__of__(self)
         #print self.ImageStoragePath          #print self.ImageStoragePath
         os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl %s /mpiwg/temp/online/scaled/small 100 &"% self.ImageViewerPath)  
           #scale thumb
       
           #self.scaleThumbs()
   
       #scale standard
   
       #self.scaleWorkingVersions()
       
       if RESPONSE:
         RESPONSE.redirect('manage_main')          RESPONSE.redirect('manage_main')
           
     def ImportFiles(self,RESPONSE=None):      def ImportFiles(self,RESPONSE=None):
Line 389  class ImageCollection(Folder, Persistent Line 959  class ImageCollection(Folder, Persistent
                     except:                      except:
                         """nothing yet"""                          """nothing yet"""
         #print ret          #print ret
         #pt=PageTemplateFile('Products/ImageArchive/out.zpt').__of__(self)          #pt=PageTemplateFile('Products/ImageArchive/out.zpt')).__of__(self)
         #print self.ImageStoragePath          #print self.ImageStoragePath
         os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl %s /mpiwg/temp/online/scaled/small 100 &"% self.ImageViewerPath)  
           #scale thumb
       
           self.scaleThumbs()
   
       #scale standard
   
       self.scaleWorkingVersions()
       
       if RESPONSE:
         RESPONSE.redirect('manage_main')          RESPONSE.redirect('manage_main')
                   
     def ImageCollection_config(self):      def ImageCollection_config(self):
Line 399  class ImageCollection(Folder, Persistent Line 978  class ImageCollection(Folder, Persistent
         if not hasattr(self,'defaultMetaString'):          if not hasattr(self,'defaultMetaString'):
             self.defaultMetaString=""              self.defaultMetaString=""
                           
         pt=PageTemplateFile('Products/ImageArchive/zpt/ChangeImageCollectionForm.zpt').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','ChangeImageCollectionForm.zpt')).__of__(self)
         return pt()          return pt()
   
     def ChangeImageCollection(self,title,ImageStoragePath,ImageViewerPath,defaultMetaString,RESPONSE=None):      def ChangeImageCollection(self,title,ImageStoragePath,ImageViewerPath,defaultMetaString,RESPONSE=None):
Line 414  class ImageCollection(Folder, Persistent Line 993  class ImageCollection(Folder, Persistent
   
     def show_selected_thumbs(self):      def show_selected_thumbs(self):
         #ids=[]          #ids=[]
                   try:
         return self.REQUEST.SESSION['filenames']          return self.REQUEST.SESSION['filenames']
       except:
        return None
     def show_thumbs(self):      def show_thumbs(self):
         ids=[]          ids=[]
         for entry in self.__dict__:          for entry in self.__dict__:
Line 514  class ImageCollection(Folder, Persistent Line 1094  class ImageCollection(Folder, Persistent
                         return "<a href=\""+self.REQUEST['URL1']+"?filename="+ids[nr]+"\" target=\"_top\">previous sets</a>"                          return "<a href=\""+self.REQUEST['URL1']+"?filename="+ids[nr]+"\" target=\"_top\">previous sets</a>"
             else:              else:
                 return ""                  return ""
       def showFolders(self):
           """show subfolders"""
           ret=""
           link=""" <a target="_top" href="%s">%s</a><br>"""
   
           if self.aq_parent.meta_type=="ImageCollection":
               ret+=link%(self.aq_parent.absolute_url(), "back ("+self.aq_parent.title+")")
               ret+="<br>"
   
           iCs=self.ZopeFind(self,obj_metatypes=["ImageCollection"])
           if not iCs:
               return ret
           else:
               
               link=""" <a target="_top" href="%s">%s</a><br>"""
               for iC in iCs:
                   ret+=link%(iC[1].absolute_url(),iC[0])
               ret+="<br>"
               return ret
     def showRuler(self,selected=None):      def showRuler(self,selected=None):
         """show ruler"""          """show ruler"""
         showall =self.REQUEST.SESSION.get('showall','no')          showall =self.REQUEST.SESSION.get('showall','no')
Line 523  class ImageCollection(Folder, Persistent Line 1121  class ImageCollection(Folder, Persistent
             return "<b>No entries</b>"              return "<b>No entries</b>"
                   
         if showall=='no':          if showall=='no':
           actualNr=0
             ids=self.show_thumbs()              ids=self.show_thumbs()
             colRows=self.getColTimesRow()              colRows=self.getColTimesRow()
             num=int(len(ids)/(colRows[0]*colRows[1]))              num=int(len(ids)/(colRows[0]*colRows[1]))
Line 530  class ImageCollection(Folder, Persistent Line 1129  class ImageCollection(Folder, Persistent
                 num+=1                  num+=1
             a=colRows[0]*colRows[1]              a=colRows[0]*colRows[1]
             #print num,num+1              #print num,num+1
           
             if num>1:              if num>1:
   
                 ret="<b>Show thumbnail group no:</b></br>"                  ret=""
                   if selected:
                   ret+="""<select onChange="parent.location.href='"""+self.REQUEST['URL1']+"""/selection?filename='+this.options[this.selectedIndex].value">"""
                   else:
               ret+="""<select onChange="parent.location.href='"""+self.REQUEST['URL1']+"""?filename='+this.options[this.selectedIndex].value">"""
                 for i in range(num):                  for i in range(num):
                     if (operator.mod(i,10)==0) and i>0:              try:
                         ret +="<br/>" #alle 10 linebreak einfuegen                nr=ids.index(self.REQUEST.SESSION['filename'])
               except:
                 nr=0
                     k=i*a                      k=i*a
               if (k <= nr) and (nr < i*(a+1)):
                  actualNr=i
                  ret+="""<option value="%s" selected>%i</option>"""%(ids[k],i)
               else:
                      ret+="""<option value="%s">%i</option>"""%(ids[k],i)
           ret+="</select>"    
           anf="<b>Show thumbnail group no:</b></br>"
           
           
           try:
                     if selected:                                      if selected:                
                         href=self.REQUEST['URL1']+"/selection?filename="+ids[k]                          href=self.REQUEST['URL1']+"/selection?filename="+ids[(actualNr-1)*a]
                     else:                      else:
                         href=self.REQUEST['URL1']+"?filename="+ids[int(k)]                          href=self.REQUEST['URL1']+"?filename="+ids[int((actualNr-1)*a)]
   
                     ret+="""<a href="%s" target="_top">%i</a>&nbsp;&nbsp;"""%(href,i)            anf+="""<a href="%s" target="_top">%s</a>&nbsp;&nbsp;"""%(href,"prev")
           except:
             pass
           ret=anf+ret
           
           try:
             
             if selected:                
                           href=self.REQUEST['URL1']+"/selection?filename="+ids[(actualNr+1)*a]
                     else:
                           href=self.REQUEST['URL1']+"?filename="+ids[int((actualNr+1)*a)]
           
             end="""<a href="%s" target="_top">%s</a>&nbsp;&nbsp;"""%(href,"next")
           except:
             end=""
           ret=ret+end
   
   
                   #for i in range(num):
                   #    
                   #        ret +="<br/>" #alle 10 linebreak einfuegen
                   #    k=i*a
                   #    if selected:                
                   #        href=self.REQUEST['URL1']+"/selection?filename="+ids[k]
                   #    else:
                   #        href=self.REQUEST['URL1']+"?filename="+ids[int(k)]
               #
                   #    ret+="""<a href="%s" target="_top">%i</a>&nbsp;&nbsp;"""%(href,i)
   
             else:              else:
                 ret=""                  ret=""
Line 555  class ImageCollection(Folder, Persistent Line 1198  class ImageCollection(Folder, Persistent
     def show_thumbs_selected_rows(self,numberOfColumns):      def show_thumbs_selected_rows(self,numberOfColumns):
         """Ausgabe anzahl"""          """Ausgabe anzahl"""
         ids=self.show_selected_thumbs()          ids=self.show_selected_thumbs()
   
           if not ids:
           return None
         self.REQUEST.SESSION['ids']=ids          self.REQUEST.SESSION['ids']=ids
         number=int(len(ids)/numberOfColumns)+1          number=int(len(ids)/numberOfColumns)+1
         self.REQUEST.SESSION['number']=range(number)          self.REQUEST.SESSION['number']=range(number)
Line 562  class ImageCollection(Folder, Persistent Line 1208  class ImageCollection(Folder, Persistent
   
     def setColTimesRowForm(self):      def setColTimesRowForm(self):
         """form for matrix setting"""          """form for matrix setting"""
         pt=PageTemplateFile('Products/ImageArchive/zpt/selectColTimesRow.zpt').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','selectColTimesRow.zpt')).__of__(self)
         return pt()          return pt()
   
     def setDone(self):      def setDone(self):
         """done"""          """done"""
                   
         pt=PageTemplateFile('Products/ImageArchive/zpt/changedColTimesRow.zpt').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','changedColTimesRow.zpt')).__of__(self)
         return pt()          return pt()
   
     def setColTimesRow(self,cols,rows):      def setColTimesRow(self,cols,rows):
Line 625  class ImageCollection(Folder, Persistent Line 1271  class ImageCollection(Folder, Persistent
             return 0              return 0
         if self.REQUEST.SESSION.has_key("filename"):          if self.REQUEST.SESSION.has_key("filename"):
             filename=self.REQUEST.SESSION["filename"]              filename=self.REQUEST.SESSION["filename"]
                           filename=self.getImageByName(filename,onlyName="yes")
                                   
             try:              try:
                 startId=filename                  startId=filename
Line 670  class ImageCollection(Folder, Persistent Line 1316  class ImageCollection(Folder, Persistent
                   
     def thumblistSelected_old(self):      def thumblistSelected_old(self):
         """main template collection"""          """main template collection"""
         pt=PageTemplateFile('Products/ImageArchive/zpt/thumbselected.zpt').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','thumbselected.zpt')).__of__(self)
         return pt()          return pt()
   
     def thumblistSelected(self):      def thumblistSelected(self):
         """main template collection"""          """main template collection"""
         pt=PageTemplateFile('Products/ImageArchive/zpt/thumbselected2.zpt').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','thumbselected2.zpt')).__of__(self)
         return pt()          return pt()
           
     def thumblist_old(self):      def thumblist_old(self):
         """main template collection"""          """main template collection"""
         pt=PageTemplateFile('Products/ImageArchive/zpt/thumbs.zpt').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','thumbs.zpt')).__of__(self)
         return pt()          return pt()
   
     def thumblist(self):      def thumblist(self):
         """main template collection"""          """main template collection"""
         pt=PageTemplateFile('Products/ImageArchive/zpt/thumb2.zpt').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','thumb2.zpt')).__of__(self)
         return pt()          return pt()
   
     def thumblistNewWindow(self):      def thumblistNewWindow(self):
         """Thumbs mit clik neues Fenster oeffnen"""          """Thumbs mit clik neues Fenster oeffnen"""
         pt=PageTemplateFile('Products/ImageArchive/zpt/thumbNewWindow.zpt').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','thumbNewWindow.zpt')).__of__(self)
         return pt()          return pt()
                   
   
     def navig_selected_html(self):      def navig_selected_html(self):
         """navigation"""          """navigation"""
         #self.REQUEST.SESSION['URL']=self.REQUEST['URL0']          #self.REQUEST.SESSION['URL']=self.REQUEST['URL0']
         pt=PageTemplateFile('Products/ImageArchive/zpt/navigation_selected.zpt').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','navigation_selected.zpt')).__of__(self)
         return pt()          return pt()
   
     def navig_html(self):      def navig_html(self):
         """navigation"""          """navigation"""
         #self.REQUEST.SESSION['URL']=self.REQUEST['URL0']          #self.REQUEST.SESSION['URL']=self.REQUEST['URL0']
         pt=PageTemplateFile('Products/ImageArchive/zpt/navigation.zpt').__of__(self)         
           pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','navigation.zpt')).__of__(self)
         return pt()          return pt()
   
   
Line 714  class ImageCollection(Folder, Persistent Line 1361  class ImageCollection(Folder, Persistent
         else:          else:
             filen=""              filen=""
         self.REQUEST.SESSION['filename']=filen          self.REQUEST.SESSION['filename']=filen
         pt=PageTemplateFile('Products/ImageArchive/zpt/overview_selected2.zpt').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','overview_selected2.zpt')).__of__(self)
         return pt()            return pt()  
                   
       def getImageByName(self,filename,onlyName=None):
           """get filename"""
           
           fn=getattr(self,filename,None)
           if not fn:
               filenameM=filename.split(".")[0]
               founds=self.ZopeFind(self,obj_metatypes=['ImageDigilib'])
               for found in founds:
                   foundM=found[0].split(".")[0]
                   if filenameM.lower()==foundM.lower():
                       if onlyName:
                           return found[0]
                       else:
                           return found[1]
           if onlyName:
               return filename
           else:
               return fn
     def index_html(self):      def index_html(self):
         """main template collection"""          """main template collection"""
         if self.REQUEST.has_key('filename'):          if self.REQUEST.has_key('filename'):
Line 724  class ImageCollection(Folder, Persistent Line 1389  class ImageCollection(Folder, Persistent
         else:          else:
             filen=""              filen=""
   
         self.REQUEST.SESSION['filename']=filen          self.REQUEST.SESSION['filename']=filen[0:]
                   
         if self.REQUEST.has_key('showall'):          if self.REQUEST.has_key('showall'):
   
Line 733  class ImageCollection(Folder, Persistent Line 1398  class ImageCollection(Folder, Persistent
             self.REQUEST.SESSION['showall']=self.REQUEST.SESSION.get('showall','no')              self.REQUEST.SESSION['showall']=self.REQUEST.SESSION.get('showall','no')
                           
                   
         pt=PageTemplateFile('Products/ImageArchive/zpt/overview.zpt').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','overview.zpt')).__of__(self)
         return pt()          return pt()
           
 def manage_AddImageCollectionForm(self):  def manage_AddImageCollectionForm(self):
     """Nothing yet"""      """Nothing yet"""
     pt=PageTemplateFile('Products/ImageArchive/zpt/AddImageCollectionForm.zpt').__of__(self)      pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddImageCollectionForm.zpt')).__of__(self)
     return pt()      return pt()
           
 def manage_AddImageCollection(self,id,title,ImageStoragePath,ImageViewerPath,defaultMetaString,RESPONSE=None):  def manage_AddImageCollection(self,id,title,ImageStoragePath,ImageViewerPath,defaultMetaString,RESPONSE=None):
Line 778  class ImageCollectionIFrame(ImageCollect Line 1443  class ImageCollectionIFrame(ImageCollect
         self.REQUEST.SESSION['filename']=filen          self.REQUEST.SESSION['filename']=filen
                   
           
         pt=PageTemplateFile('Products/ImageArchive/zpt/IFrameMain.zpt').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','IFrameMain.zpt')).__of__(self)
         return pt()          return pt()
   
     def iframe_html(self):      def iframe_html(self):
Line 788  class ImageCollectionIFrame(ImageCollect Line 1453  class ImageCollectionIFrame(ImageCollect
         else:          else:
             filen=""              filen=""
         self.REQUEST.response.setCookie('filename',filen)          self.REQUEST.response.setCookie('filename',filen)
         pt=PageTemplateFile('Products/ImageArchive/zpt/IFrameOverview.zpt').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','IFrameOverview.zpt')).__of__(self)
         return pt()          return pt()
   
   
 def manage_AddImageCollectionIFrameForm(self):  def manage_AddImageCollectionIFrameForm(self):
     """Nothing yet"""      """Nothing yet"""
     pt=PageTemplateFile('Products/ImageArchive/zpt/AddImageCollectionIFrameForm.zpt').__of__(self)      pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddImageCollectionIFrameForm.zpt')).__of__(self)
     return pt()      return pt()
           
 def manage_AddImageCollectionIFrame(self,id,title,ImageStoragePath,ImageViewerPath,defaultMetaString,RESPONSE=None):  def manage_AddImageCollectionIFrame(self,id,title,ImageStoragePath,ImageViewerPath,defaultMetaString,RESPONSE=None):

Removed from v.1.30  
changed lines
  Added in v.1.56


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