Diff for /ECHO_content/ECHO_collection.py between versions 1.258 and 1.296

version 1.258, 2005/12/01 12:11:51 version 1.296, 2008/11/16 12:15:42
Line 18  except: Line 18  except:
 import urlparse  import urlparse
 import string  import string
 import tempfile  import tempfile
   import zipfile
 import re  import re
 import os  import os,shutil
 import OFS.Image  import OFS.Image
 from types import *  from types import *
 from OFS.Cache import Cacheable  from OFS.Cache import Cacheable
Line 34  from Globals import DTMLFile Line 35  from Globals import DTMLFile
 import Globals  import Globals
 from Products.PageTemplates.PageTemplateFile import PageTemplateFile  from Products.PageTemplates.PageTemplateFile import PageTemplateFile
 from Products.PageTemplates.PageTemplate import PageTemplate  from Products.PageTemplates.PageTemplate import PageTemplate
 from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate  from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate,manage_addPageTemplate
 from Globals import Persistent, package_home  from Globals import Persistent, package_home
 from Acquisition import Implicit  from Acquisition import Implicit
 from Products.ZCatalog.CatalogPathAwareness import CatalogAware  from Products.ZCatalog.CatalogPathAwareness import CatalogAware
   from Products.ZCTextIndex.ZCTextIndex import manage_addLexicon
   
 import urllib  import urllib
   import urllib2
 import cgi  import cgi
 import smtplib  import smtplib
 import time  import time
Line 49  from Ft.Xml import EMPTY_NAMESPACE Line 52  from Ft.Xml import EMPTY_NAMESPACE
   
 import Ft.Xml.XPath  import Ft.Xml.XPath
 import cStringIO  import cStringIO
 import zLOG  
 import sys  import sys
   
 try:  try:
Line 66  import urllib Line 69  import urllib
 import xml.dom.minidom  import xml.dom.minidom
 import ECHO_helpers  import ECHO_helpers
 from ECHO_helpers import *  from ECHO_helpers import *
   
   try:
 from ECHO_language import *  from ECHO_language import *
   except:
       print "no echo_language"
       class ECHO_language:
           """ leere Klasse"""
           pass
   
 from ECHO_movie import *  from ECHO_movie import *
 import vlp_xmlhelpers #TODO: vlp elemente aus echo herausnehmen  import vlp_xmlhelpers #TODO: vlp elemente aus echo herausnehmen
 import xmlrpclib  import xmlrpclib
                           
   import logging
   
   #ersetzt logging.info
   def logger(txt,method,txt2):
       """logging"""
       logging.info(txt+ txt2)
   
   def normalizeCt(str):
           """normalizes content_type"""
           #str= str.replace(" ","_")
           return str.replace("-"," ").lower()
   
 def setECHO_collectionInformation(self,title,label,description,contentType,responsible,credits,weight,coordstrs=""):  def setECHO_collectionInformation(self,title,label,description,contentType,responsible,credits,weight,coordstrs=""):
   
Line 177  class ECHO_locale(ZopePageTemplate): Line 199  class ECHO_locale(ZopePageTemplate):
                 self.lang=lang                  self.lang=lang
                 self.title=title                  self.title=title
                 self.label=label                  self.label=label
                 if text:              # default content
               if not text:
                   text = open(self._default_content_fn).read()
                   content_type = 'text/html'
                         self.pt_edit(text, content_type)                          self.pt_edit(text, content_type)
                 self.id=id                  self.id=id
   
Line 196  class ECHO_locale(ZopePageTemplate): Line 221  class ECHO_locale(ZopePageTemplate):
                 self.title=title                  self.title=title
                 self.label=label                  self.label=label
                 if not text is None:                  if not text is None:
                           if content_type is None:
                               content_type = self.content_type
                         self.pt_edit(text, content_type)                          self.pt_edit(text, content_type)
   
                 if RESPONSE is not None:                  if RESPONSE is not None:
Line 285  class ECHO_layoutTemplate(ZopePageTempla Line 312  class ECHO_layoutTemplate(ZopePageTempla
         if text is None:          if text is None:
             self._default_content_fn = os.path.join(package_home(globals()),'zpt','ECHO_%s_template_standard.zpt'%EchoType)              self._default_content_fn = os.path.join(package_home(globals()),'zpt','ECHO_%s_template_standard.zpt'%EchoType)
             text = open(self._default_content_fn).read()              text = open(self._default_content_fn).read()
           if content_type is None:
               content_type = self.content_type
         self.pt_edit(text, content_type)          self.pt_edit(text, content_type)
   
   
Line 342  class ECHO_fullText(ZopePageTemplate,ECH Line 371  class ECHO_fullText(ZopePageTemplate,ECH
         def getPage(self,nr='1'):          def getPage(self,nr='1'):
                 """get page n"""                  """get page n"""
                 #return self().encode('latin-1','ignore')                  #return self().encode('latin-1','ignore')
                 dom=xml.dom.minidom.parseString(self().encode('utf-8','ignore'))                  try:
                      dom=xml.dom.minidom.parseString(self())
                   except:
                      dom=xml.dom.minidom.parseString(self().encode('latin-1'))
                 pages=dom.getElementsByTagName('page')                  pages=dom.getElementsByTagName('page')
                                   
                 return pages[int(nr)-1].toxml()                  return pages[int(nr)-1].toxml()
Line 390  class ECHO_resource(CatalogAware,Folder, Line 422  class ECHO_resource(CatalogAware,Folder,
     default_catalog='resourceCatalog'      default_catalog='resourceCatalog'
           
 #    viewClassificationList=viewClassificationListMaster  #    viewClassificationList=viewClassificationListMaster
       def setPID(self,pid):
           """set the pid"""
           self.pid=pid
           return True
           
       def getPID(self):
           """get the pid"""
           return getattr(self,'pid',None)
   
     def PrincipiaSearchSource(self):      def PrincipiaSearchSource(self):
            """Return cataloguable key for ourselves."""             """Return cataloguable key for ourselves."""
Line 599  class ECHO_resource(CatalogAware,Folder, Line 639  class ECHO_resource(CatalogAware,Folder,
                 try:                  try:
                     urllib.urlopen(url)                      urllib.urlopen(url)
                 except:                  except:
                     zLOG.LOG("ECHO_Resource (getAccessRightMD)", zLOG.INFO,"%s (%s)"%sys.exc_info()[0:2])                      logger("ECHO_Resource (getAccessRightMD)", logging.INFO,"%s (%s)"%sys.exc_info()[0:2])
   
                     return None,getattr(self,'accessRight','')                      return None,getattr(self,'accessRight','')
                                   
Line 607  class ECHO_resource(CatalogAware,Folder, Line 647  class ECHO_resource(CatalogAware,Folder,
                 try:                  try:
                         dom = NonvalidatingReader.parseUri(url)                          dom = NonvalidatingReader.parseUri(url)
                 except:                  except:
                         zLOG.LOG("ECHO_Resource (getAccessRightMD)", zLOG.INFO,"%s (%s)"%sys.exc_info()[0:2])                          logger("ECHO_Resource (getAccessRightMD)", logging.INFO,"%s (%s)"%sys.exc_info()[0:2])
                         return (None,"Cannot parse: "+url+"<br>"+"%s (%s)"%sys.exc_info()[0:2])                          return (None,"Cannot parse: "+url+"<br>"+"%s (%s)"%sys.exc_info()[0:2])
   
   
Line 632  class ECHO_resource(CatalogAware,Folder, Line 672  class ECHO_resource(CatalogAware,Folder,
   
             #print ECHO_helpers.urlopen(self.absolute_url()+'/setAccessRightXML'+'?'+params).read()              #print ECHO_helpers.urlopen(self.absolute_url()+'/setAccessRightXML'+'?'+params).read()
   
               tries=0
               for i in range(10):
                       x=ECHO_helpers.urlopen('http://echo.mpiwg-berlin.mpg.de/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/setAccessRightXML'+urllib.quote('?'+params))).read()
                       if x=="ok":
                              
                               break;
                           
             ECHO_helpers.urlopen('http://echo.mpiwg-berlin.mpg.de/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/setAccessRightXML'+urllib.quote('?'+params))).read()  
   
                       
             if RESPONSE is not None:              if RESPONSE is not None:
Line 738  class ECHO_resource(CatalogAware,Folder, Line 783  class ECHO_resource(CatalogAware,Folder,
   
   
             if (not resourcepath) or (not digiliburlprefix) or (not images):              if (not resourcepath) or (not digiliburlprefix) or (not images):
                     zLOG.LOG("ECHO (createImageUrl)",zLOG.ERROR,"Cannot create ImageUrl for %s"%self.absolute_url())                      logger("ECHO (createImageUrl)",logging.ERROR,"Cannot create ImageUrl for %s"%self.absolute_url())
                     return None                      return None
             resourcepath=resourcepath.replace('/mpiwg/online','')              resourcepath=resourcepath.replace('/mpiwg/online','')
             if not digiliburlprefix: digiliburlprefix="http://echo.mpiwg-berlin.mpg.de/zogilib?"              if not digiliburlprefix: digiliburlprefix="http://echo.mpiwg-berlin.mpg.de/zogilib?"
Line 793  class ECHO_resource(CatalogAware,Folder, Line 838  class ECHO_resource(CatalogAware,Folder,
             params="startpage=%s"%startpage              params="startpage=%s"%startpage
             #print 'http://xserve02.mpiwg-berlin.mpg.de:18880/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/newMetaXML'+urllib.quote('?'+params))              #print 'http://xserve02.mpiwg-berlin.mpg.de:18880/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/newMetaXML'+urllib.quote('?'+params))
                                                                                                                                                                                                                                                                     
             ECHO_helpers.urlopen('http://xserve02.mpiwg-berlin.mpg.de:18880/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/newMetaXML'+urllib.quote('?'+params))).read()              tries=0
               for i in range(10):
                       x=ECHO_helpers.urlopen('http://xserve02.mpiwg-berlin.mpg.de:18880/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/newMetaXML'+urllib.quote('?'+params))).read()
                       if x=="ok":
                              
                               break;
                   
                           
             path=self.metalink              path=self.metalink
Line 823  class ECHO_resource(CatalogAware,Folder, Line 873  class ECHO_resource(CatalogAware,Folder,
             return pt()              return pt()
   
   
       def setLink(self, link=None):
           """change link field"""
           if link is not None:
               self.link = link
               
         
     def getTextToolsField(self,name,default=''):      def getTextToolsField(self,name,default=''):
         """Lese Textoolsfelder aus index.meta im path aus"""          """Lese Textoolsfelder aus index.meta im path aus"""
Line 852  class ECHO_resource(CatalogAware,Folder, Line 907  class ECHO_resource(CatalogAware,Folder,
   
             params="project=%s&xslt=%s&thumbtemplate=%s&topbar=%s&digiLibTemplate=%s&digiliburlprefix=%s"%(project,xslt,thumbtemplate,topbar,digiLibTemplate,digiliburlprefix)              params="project=%s&xslt=%s&thumbtemplate=%s&topbar=%s&digiLibTemplate=%s&digiliburlprefix=%s"%(project,xslt,thumbtemplate,topbar,digiLibTemplate,digiliburlprefix)
   
               try:
                   tries=0
                   for i in range(10):
                           x=ECHO_helpers.urlopen('http://echo.mpiwg-berlin.mpg.de/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/newMetaXML'+urllib.quote('?'+params))).read()
                           if x=="ok":
                           
             ECHO_helpers.urlopen('http://echo.mpiwg-berlin.mpg.de/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/newMetaXML'+urllib.quote('?'+params))).read()                              break;
   
               except:
                   logger("ECHO_ressource (changeViewerTemplateSet)", logging.ERROR,"%s (%s)"%sys.exc_info()[0:2])          
                   logger("ECHO_ressource (changeViewerTemplateSet)", logging.ERROR,'http://echo.mpiwg-berlin.mpg.de/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/newMetaXML'+urllib.quote('?'+params)))
             #print self.absolute_url()+'/newMetaXML'+urllib.quote'?'+params)              #print self.absolute_url()+'/newMetaXML'+urllib.quote'?'+params)
             # hack Pfad auf die Dokumente              # hack Pfad auf die Dokumente
             path=self.metalink              path=self.metalink
Line 863  class ECHO_resource(CatalogAware,Folder, Line 926  class ECHO_resource(CatalogAware,Folder,
   
             path=re.sub('/index.meta','',path)               path=re.sub('/index.meta','',path) 
   
             path=re.sub(self.REQUEST['SERVER_URL'],'',path)              #TODO: direct access to the file system necessary, fix that also xmlrpc to the server where the index file is stored is possible    
             path=re.sub('http://'+self.REQUEST['HTTP_HOST'],'',path)              parsedUrl=urlparse.urlparse(path)
               path=parsedUrl[2]
             path=re.sub('http://foxridge.mpiwg-berlin.mpg.de:8080','',path) # falls foxridge als server  
             path=re.sub('http://foxridge.mpiwg-berlin.mpg.de:8080','',path) # falls foxridge als server  
             path=re.sub('http://foxridge.mpiwg-berlin.mpg.de','',path) # falls foxridge als server  
   
             path=re.sub('http://foxridge.rz-berlin.mpg.de:8080','',path) # falls foxridge als server  
             path=re.sub('http://foxridge.rz-berlin.mpg.de','',path) # falls foxridge als server  
             path=re.sub('http://content.mpiwg-berlin.mpg.de','',path) # falls content als server  
             path=re.sub('http://echo.mpiwg-berlin.mpg.de','',path) # falls echo  
   
             path=re.sub('http://vision.rz-berlin.mpg.de','',path) # falls vision als server  
   
               try:        
             return ECHO_helpers.urlopen("http://nausikaa2.rz-berlin.mpg.de:86/cgi-bin/toc/admin/reg.cgi?path=%s"%path).readlines()              return ECHO_helpers.urlopen("http://nausikaa2.rz-berlin.mpg.de:86/cgi-bin/toc/admin/reg.cgi?path=%s"%path).readlines()
               except:
                   logger("ECHO_Resource (changeViewerTemplateSet)", logging.INFO,"%s (%s)"%sys.exc_info()[0:2])
                   logger("ECHO_Resource (changeViewerTemplateSet)", logging.INFO,"http://nausikaa2.rz-berlin.mpg.de:86/cgi-bin/toc/admin/reg.cgi?path=%s"%path)
   
             if RESPONSE is not None:              if RESPONSE is not None:
                         RESPONSE.redirect('manage_main')                          RESPONSE.redirect('manage_main')
Line 900  class ECHO_resource(CatalogAware,Folder, Line 956  class ECHO_resource(CatalogAware,Folder,
             """getFullTextXML; gives the FullText as an XML Document, and <error></error> if somthing goes wrong."""              """getFullTextXML; gives the FullText as an XML Document, and <error></error> if somthing goes wrong."""
   
             try:              try:
                     #zLOG.LOG("ECHO Fulltext",zLOG.INFO,"open %s"%self.metalink)                      #logger("ECHO Fulltext",logging.INFO,"open %s"%self.metalink)
                     fh=ECHO_helpers.urlopen(self.metalink)                      fh=ECHO_helpers.urlopen(self.metalink)
                     #zLOG.LOG("ECHO Fulltext",zLOG.INFO,"opened %s"%self.metalink)                      #logger("ECHO Fulltext",logging.INFO,"opened %s"%self.metalink)
                     dom=xml.dom.minidom.parse(fh)                      dom=xml.dom.minidom.parse(fh)
                     texttools=dom.getElementsByTagName('texttool')                      texttools=dom.getElementsByTagName('texttool')
                     text=texttools[0].getElementsByTagName('text')                      text=texttools[0].getElementsByTagName('text')
                     texturl=getText(text[0].childNodes)                      texturl=getText(text[0].childNodes)
   
                     #zLOG.LOG("ECHO Fulltext",zLOG.INFO,"found %s"%texturl)                      #logger("ECHO Fulltext",logging.INFO,"found %s"%texturl)
                     fh.close()                      fh.close()
                     #zLOG.LOG("ECHO Fulltext",zLOG.INFO,"closed fh")                      #logger("ECHO Fulltext",logging.INFO,"closed fh")
                     #keine url                      #keine url
                     if not (texturl.split(":")[0] in ['http','ftp','file']):                       if not (texturl.split(":")[0] in ['http','ftp','file']): 
                         if not noredirect:                          if not noredirect:
Line 920  class ECHO_resource(CatalogAware,Folder, Line 976  class ECHO_resource(CatalogAware,Folder,
   
                     if not noredirect:                      if not noredirect:
                             self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml')                                self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml')  
                             zLOG.LOG("ECHO Fulltext",zLOG.INFO,"redirect to:%s"%texturl)                              logger("ECHO Fulltext",logging.INFO,"redirect to:%s"%texturl)
                             self.REQUEST.RESPONSE.redirect(texturl)                              self.REQUEST.RESPONSE.redirect(texturl)
                     else:                      else:
                             return texturl                              return texturl
Line 1014  class ECHO_resource(CatalogAware,Folder, Line 1070  class ECHO_resource(CatalogAware,Folder,
                 else:                  else:
                         return ''                          return ''
                                                   
       def getOwnerOriginalsHTML(self):
                  """gibt Liste der foerdernden Institutionen aus"""
                  
                  if hasattr(self,'ownerOriginal'):
                          obj=self.ownerOriginal
                          ret=obj.getOwner()
                          return ret
                  else:
                          return ''
       
       def getDigiCopyByHTML(self):
                  """gibt Liste der foerdernden Institutionen aus"""
                  
                  if hasattr(self,'digiCopyBy'):
                          obj=self.digiCopyBy
                          ret=obj.getDigiCopyBy()
                          return ret
                  else:
                          return ''                    
           
     def getCredits(self):      def getCredits(self):
         """Ausgabe der credits"""          """Ausgabe der credits"""
Line 1054  class ECHO_resource(CatalogAware,Folder, Line 1129  class ECHO_resource(CatalogAware,Folder,
   
     def getContentType(self):      def getContentType(self):
             try:              try:
                     return self.contentType                      return normalizeCt(self.contentType)
             except:              except:
                     return ""                      return ""
   
Line 1112  class ECHO_resource(CatalogAware,Folder, Line 1187  class ECHO_resource(CatalogAware,Folder,
   
   
           
       def changeViewer(self,newViewer):
           """set newViewer to the url of the new viewer
           only if metalink is set, otherwise it gives false
           """
           
           texterUrl="http://nausikaa2.mpiwg-berlin.mpg.de/digitallibrary/servlet/Texter?fn=/"
           
           vl,msg=self.checkValidityOfMetaLink()
           
           if not vl: #ungueltiger link, versuche neuen
               newStr=re.match(".*/mpiwg/online/(.*)",self.metalink) # suche pfad hinter /mpiwg/online 
               oldLink=self.metalink
               
               if newStr:
                   self.metalink=texterUrl+newStr.group(1)
                   vl,msg=self.checkValidityOfMetaLink()
               else:
                   logging.error("change Viewer XX(mew Metadatafile) %s"%self.metalink)
                   vl=False
                   
               if not vl: # geht immer noch nicht, dann setzte wieder zurueck
                   self.metaLink=oldLink
               
               logging.info("change Viewer (mew Metadatafile) %s"%self.metalink)
              
           if vl:
               self.newViewer=newViewer
               return vl,msg
           else:
               return vl,msg
       
       def checkValidityOfMetaLink(self):
           """checks if the metalink is valid xml"""
           
           ml=self.metalink
           
           try:
               txt=urllib.urlopen(ml)
   
           except:
               return False,"Cannot open: %s)"%ml
           
           txt.close()        
           try:
               dom = NonvalidatingReader.parseUri(ml)
           except:
               return False, "Connot parse: %s)"%ml
           
           if len(dom.xpath("//texttool"))==0:
               return False, "No texttools: %s)"%ml
               
           return True,""
   
     def changeECHO_resource_main(self,metalink,link,title,label,description,contentType,renderingType,weight,resourceID,RESPONSE=None):      def changeECHO_resource_main(self,metalink,link,title,label,description,contentType,renderingType,weight,resourceID,newViewer='',RESPONSE=None):
         """Aenderung der Properties"""          """Aenderung der Properties"""
         self.resourceID=resourceID          self.resourceID=resourceID
         self.title=title          self.title=title
Line 1127  class ECHO_resource(CatalogAware,Folder, Line 1254  class ECHO_resource(CatalogAware,Folder,
         self.link=link          self.link=link
         self.metalink=metalink          self.metalink=metalink
                   
           self.newViewer=newViewer
           
           
         if RESPONSE is not None:          if RESPONSE is not None:
             RESPONSE.redirect('manage_main')              RESPONSE.redirect('manage_main')
   
Line 1169  class ECHO_resource(CatalogAware,Folder, Line 1299  class ECHO_resource(CatalogAware,Folder,
   
     def changeECHO_resource_metadata_local(self,RESPONSE=None):      def changeECHO_resource_metadata_local(self,RESPONSE=None):
             """change metadata"""              """change metadata"""
             tags=self.findTagsFromMapping(self.contentType)              tags=self.findTagsFromMapping(normalizeCt(self.contentType))
             for field in tags[1]:              for field in tags[1]:
                     self.metaDataHash[self.getFieldTag(tags,field)]=self.REQUEST.form[self.getFieldTag(tags,field)][0:]                      self.metaDataHash[self.getFieldTag(tags,field)]=self.REQUEST.form[self.getFieldTag(tags,field)][0:]
                                                   
Line 1180  class ECHO_resource(CatalogAware,Folder, Line 1310  class ECHO_resource(CatalogAware,Folder,
   
     def changeECHO_resource_metadata(self,RESPONSE=None):      def changeECHO_resource_metadata(self,RESPONSE=None):
             """change metadata"""              """change metadata"""
             tags=self.findTagsFromMapping(self.contentType)              tags=self.findTagsFromMapping(normalizeCt(self.contentType))
             self.OSAS_meta={}              self.OSAS_meta={}
             for field in tags[1]:              for field in tags[1]:
                     try:                      try:
                             self.metaDataHash[self.getFieldTag(tags,field)]=self.REQUEST.form[self.getFieldTag(tags,field)]                              self.metaDataHash[self.getFieldTag(tags,field)]=self.REQUEST.form[self.getFieldTag(tags,field)]
                             self.OSAS_meta[self.getFieldTag(tags,field)]=self.REQUEST.form['OSAS_%s'%self.getFieldTag(tags,field)]                              self.OSAS_meta[self.getFieldTag(tags,field)]=self.REQUEST.form['OSAS_%s'%self.getFieldTag(tags,field)]
                     except:                      except:
                             """nothing"""                              logger("ECHO_collection (changeECHO_resource_metadata)",logging.ERROR,"%s (%s)"%sys.exc_info()[0:2])
   
               print self.newMetaXML()
               tries=0
               for i in range(10):
                       x=ECHO_helpers.urlopen('http://xserve02.mpiwg-berlin.mpg.de:18880/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/newMetaXML')).read()
                       if x=="ok":
                              
                               break;
   
             ECHO_helpers.urlopen('http://xserve02.mpiwg-berlin.mpg.de:18880/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/newMetaXML')).read()  
   
   
             if RESPONSE is not None:              if RESPONSE is not None:
Line 1199  class ECHO_resource(CatalogAware,Folder, Line 1336  class ECHO_resource(CatalogAware,Folder,
   
     def getMDValueSimpleSearchField(self):      def getMDValueSimpleSearchField(self):
             """returns value for simple search"""              """returns value for simple search"""
               
               try:
             return " ".join([self.getMDValue('title',generic="yes"),              return " ".join([self.getMDValue('title',generic="yes"),
                              self.getMDValue('author',generic="yes"),                               self.getMDValue('author',generic="yes"),
                              self.getMDValue('year',generic="yes"),self.title])                               self.getMDValue('year',generic="yes"),self.getTitle()])
               except:
                   
                   #logger(" ECHO_collection(getMDSimpleSearchField)",logging.INFO," ".join([self.getMDValue('title',generic="yes"),
                    #            self.getMDValue('author',generic="yes"),
                     #           self.getMDValue('year',generic="yes"),'']))
                   return ""
                                                             
     def getMDValue(self,fieldNameTest,empty=None,generic=None):      def getMDValue(self,fieldNameTest,empty=None,generic=None):
             """get md values"""              """get md values"""
Line 1211  class ECHO_resource(CatalogAware,Folder, Line 1356  class ECHO_resource(CatalogAware,Folder,
             if generic:              if generic:
                 if self.contentType:                  if self.contentType:
                     ct=self.contentType.replace(" ","_").lower()                      ct=self.contentType.replace(" ","_").lower()
                       ct=self.contentType.replace("-","_").lower()
                 else:                  else:
                     zLOG.LOG("ECHO_collection (getMDValue)", zLOG.INFO, "no_content type for %s"%self.getId())                      logger("ECHO_collection (getMDValue)", logging.INFO, "no_content type for %s"%self.getId())
                     ct=""                      ct=""
                                           
                 #caching                  #caching
                 if not hasattr(self,'_v_mapHash'): #noch keine cachevariable                  if not hasattr(self,'_v_mapHash'): #noch keine cachevariable
                     self._v_mapHash={}                      self._v_mapHash={}
                                           
                   
   
                 tmp=self._v_mapHash.get(ct,None)                   tmp=self._v_mapHash.get(ct,None) 
                 if tmp: #teste ob type schon existiert                  if tmp: #teste ob type schon existiert
                     fieldName=tmp.get(fieldNameTest,None)                      fieldName=tmp.get(fieldNameTest,None)
                 else:                  else:
                     self._v_mapHash[ct]={}                      self._v_mapHash[ct]={}
                                           
   
                 #noch nicht gecached                      #noch nicht gecached    
                 if not fieldName and hasattr(self.standardMD,ct):                      if not fieldName and hasattr(self.standardMD,ct):    
                     fieldName=getattr(self.standardMD,ct).generateMappingHash()[fieldNameTest][0]                      fieldName=getattr(self.standardMD,ct).generateMappingHash()[fieldNameTest][0]
Line 1234  class ECHO_resource(CatalogAware,Folder, Line 1383  class ECHO_resource(CatalogAware,Folder,
             if not empty:              if not empty:
                #FIXME: warum gibt es manchmal kein metadatahas                 #FIXME: warum gibt es manchmal kein metadatahas
                 try:                  try:
                     return self.metaDataHash.get(fieldName,'!!NOT USED HERE in Type: %s'%self.contentType)                      
                       ret =self.metaDataHash.get(fieldName,'!!NOT USED HERE in Type: %s'%normalizeCt(self.contentType))
                 except:                  except:
                     zLOG.LOG("ECHO (line 1069)",zLOG.ERROR,"no md hash for %s"%self.getId())                       logger("ECHO (line 1069)",logging.ERROR,"no md hash for %s"%self.getId()) 
                     return ""                      return ""
                                       
             else:              else:
   
                 return self.metaDataHash.get(fieldNameTest,empty)                     
                      ret= self.metaDataHash.get(fieldNameTest,empty)
                  
               return unicodify(ret)
   
     getFieldValue=getMDValue #depricated      getFieldValue=getMDValue #depricated
   
Line 1253  class ECHO_resource(CatalogAware,Folder, Line 1406  class ECHO_resource(CatalogAware,Folder,
                                   
                     self.copyIndex_meta2echo_resource()                      self.copyIndex_meta2echo_resource()
             try:              try:
   
   
                     return writeMetadata(self.metalink,self.OSAS_meta,project,startpage,xslt,thumbtemplate,topbar,digiLibTemplate,digiliburlprefix=digiliburlprefix)                      return writeMetadata(self.metalink,self.OSAS_meta,project,startpage,xslt,thumbtemplate,topbar,digiLibTemplate,digiliburlprefix=digiliburlprefix)
             except:              except:
                       #print self.metalink,self.metaDataHash,project,startpage,xslt,thumbtemplate,topbar,digiLibTemplate,digiliburlprefix
   
                     return writeMetadata(self.metalink,self.metaDataHash,project,startpage,xslt,thumbtemplate,topbar,digiLibTemplate,digiliburlprefix=digiliburlprefix)                      return writeMetadata(self.metalink,self.metaDataHash,project,startpage,xslt,thumbtemplate,topbar,digiLibTemplate,digiliburlprefix=digiliburlprefix)
   
     def showMetaDataXML(self,project=None,startpage=None,xslt=None,thumbtemplate=None,topbar=None,digiLibTemplate=None):      def showMetaDataXML(self,project=None,startpage=None,xslt=None,thumbtemplate=None,topbar=None,digiLibTemplate=None):
Line 1367  class ECHO_resource(CatalogAware,Folder, Line 1524  class ECHO_resource(CatalogAware,Folder,
                 setattr(self,'metaDataHash',{})                  setattr(self,'metaDataHash',{})
         self.metaDataHash[field]=value[0:]          self.metaDataHash[field]=value[0:]
                   
   
     def copySearchFields(self):      def copySearchFields(self):
             """copys metadatafields to the object"""              """copys metadatafields to the object"""
             fields=['author','title','year']              fields=['author','title','year']
Line 1391  class ECHO_resource(CatalogAware,Folder, Line 1547  class ECHO_resource(CatalogAware,Folder,
         fields=[]          fields=[]
         fieldlist=self.standardMD.fieldList          fieldlist=self.standardMD.fieldList
   
         tags=self.findTagsFromMapping(self.contentType)          tags=self.findTagsFromMapping(normalizeCt(self.contentType))
         self.referencetypes=tags[2]          self.referencetypes=tags[2]
         for referenceTypeF in self.referencetypes:          for referenceTypeF in self.referencetypes:
   
                 if referenceTypeF[1].title.lower() == referenceType.lower():                  
                   if normalizeCt(referenceTypeF[1].title) == normalizeCt(referenceType.lower()):
   
                         try:                          try:
                                 bibdata[referenceTypeF[1].title]=referenceTypeF[1].fields                                  bibdata[referenceTypeF[1].title]=referenceTypeF[1].fields
Line 1433  class ECHO_resource(CatalogAware,Folder, Line 1590  class ECHO_resource(CatalogAware,Folder,
         for referenceTypeF in temp:          for referenceTypeF in temp:
                 #print referenceType                  #print referenceType
                   
                 if referenceTypeF[1].title.lower() == referenceType.lower():                   if normalizeCt(referenceTypeF[1].title) == normalizeCt(referenceType.lower()):
                         try:                          try:
                                 bibdata[referenceTypeF[1].title]=referenceTypeF[1].fields                                  bibdata[referenceTypeF[1].title]=referenceTypeF[1].fields
                                 referenceType=referenceTypeF[1].title                                  referenceType=referenceTypeF[1].title
Line 1460  class ECHO_resource(CatalogAware,Folder, Line 1617  class ECHO_resource(CatalogAware,Folder,
                                           
                     return "ERROR:",error,self.absolute_url()                      return "ERROR:",error,self.absolute_url()
                           
             self.contentType=metadict['bib_type'][0:]              self.contentType=normalizeCt(metadict['bib_type'])[0:]
             fields=self.findTagsFromMapping(self.contentType)              fields=self.findTagsFromMapping(normalizeCt(self.contentType))
                           
             #fields=self.findLabelsFromMapping(self.contentType)              #fields=self.findLabelsFromMapping(normalizeCt(self.contentType))
             for field in fields[1]:              for field in fields[1]:
                                           
                     if self.isDefinedInThisSet(fields,field):                      if self.isDefinedInThisSet(fields,field):
Line 1475  class ECHO_resource(CatalogAware,Folder, Line 1632  class ECHO_resource(CatalogAware,Folder,
             if RESPONSE:              if RESPONSE:
                     return RESPONSE.redirect('manage_main')                      return RESPONSE.redirect('manage_main')
                           
             return "OK:",self.absolute_url(),self.contentType              return "OK:",self.absolute_url(),normalizeCt(self.contentType)
                   
     def ECHO_getResourceMD(self,template="yes",back=None,overwrite="no"):      def ECHO_getResourceMD(self,template="yes",back=None,overwrite="no"):
         """Einlesen der Metadaten und Anlegen dieser Metadaten als Informationen zur Resource"""          """Einlesen der Metadaten und Anlegen dieser Metadaten als Informationen zur Resource"""
Line 1488  class ECHO_resource(CatalogAware,Folder, Line 1645  class ECHO_resource(CatalogAware,Folder,
                 return "ERROR:",error                  return "ERROR:",error
                   
         if (not self.contentType) or (overwrite=="yes"):          if (not self.contentType) or (overwrite=="yes"):
                 self.contentType=metadict['bib_type'].lower()                  self.contentType=normalizeCt(normalizeCt(metadict['bib_type']).lower())
                                   
         if not (metadict['bib_type'].lower()==self.contentType.lower()):          if not (normalizeCt(metadict['bib_type']).lower()==normalizeCt(self.contentType).lower()):
                 self.REQUEST.SESSION['contentStorage']=metadict['bib_type']                  self.REQUEST.SESSION['contentStorage']=normalizeCt(metadict['bib_type'])
                 self.REQUEST.SESSION['contentZope']=self.contentType                  self.REQUEST.SESSION['contentZope']=normalizeCt(self.contentType)
   
                 return zptFile(self, 'zpt/ECHO_getResourceMDErrorContentType.zpt')()                  return zptFile(self, 'zpt/ECHO_getResourceMDErrorContentType.zpt')()
   
         self.REQUEST.SESSION['metadict']=metadict          #self.REQUEST.SESSION['metadict']=metadict
   
                   
                   
         self.REQUEST.SESSION['diffs']=checkDiffs(self,self.REQUEST.SESSION['metadict'])  
                   
           self.REQUEST.SESSION['diffs']=checkDiffs(self,metadict)
   
                                   
         if template=="yes":          if template=="yes":
                   #pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/ECHO_resourceMD.zpt'),metadict=metadict).__of__(self)
                 pt=zptFile(self, 'zpt/ECHO_resourceMD.zpt')                  pt=zptFile(self, 'zpt/ECHO_resourceMD.zpt')
                 return pt()                  
                   return pt(metadict=metadict)
   
                   
   
Line 1537  class ECHO_resource(CatalogAware,Folder, Line 1696  class ECHO_resource(CatalogAware,Folder,
                 self.REQUEST.RESPONSE.write(fh)                  self.REQUEST.RESPONSE.write(fh)
                 self.REQUEST.RESPONSE.close()                  self.REQUEST.RESPONSE.close()
                 return                   return 
               
           if getattr(self,'newViewer',''): #benutze den neuen viewer
               url=self.newViewer+'url='+self.metalink+"&mode=texttool"
               return self.REQUEST.RESPONSE.redirect(url)
               
         return self.REQUEST.RESPONSE.redirect(self.link)          return self.REQUEST.RESPONSE.redirect(self.link)
   
     def startpage_html(self):      def startpage_html(self):
Line 1571  class ECHO_resource(CatalogAware,Folder, Line 1735  class ECHO_resource(CatalogAware,Folder,
   
     def generate_label(self):      def generate_label(self):
         """Erzeugt_standard_Label aus Template"""          """Erzeugt_standard_Label aus Template"""
         pt=getattr(self,"label_template_"+self.contentType.lower())          pt=getattr(self,"label_template_"+normalizeCt(self.contentType).lower())
   
         self.label=pt()[0:]          self.label=pt()[0:]
         return pt()          return pt()
Line 1580  class ECHO_resource(CatalogAware,Folder, Line 1744  class ECHO_resource(CatalogAware,Folder,
   
     def generate_title(self,RESPONSE=None):      def generate_title(self,RESPONSE=None):
         """Erzeugt_standard_Label aus Template"""          """Erzeugt_standard_Label aus Template"""
         pt=getattr(self,"label_template_"+self.contentType.lower())          pt=getattr(self,"label_template_"+normalizeCt(self.contentType).lower())
   
         self.title=pt()[0:]          self.title=pt()[0:]
                   
Line 1616  class ECHO_externalLink(Folder,ECHO_basi Line 1780  class ECHO_externalLink(Folder,ECHO_basi
         """template fuer content"""          """template fuer content"""
         ret= ECHO_basis.content_html(self,'externalLink')          ret= ECHO_basis.content_html(self,'externalLink')
                   
           if type(ret) is StringType:
               return ret.decode('utf-8')
           else:
              return ret
                   
         try:  
             return ret.encode('utf-8')  
           
         except:  
                     try:   
                         return ret.decode('latin-1')  
                     except:  
                             
                         return ret  
           
     def __init__(self,id,link,title,label,description,contentType,responsible,credits,weight,coords):      def __init__(self,id,link,title,label,description,contentType,responsible,credits,weight,coords,linkType):
   
         self.id = id          self.id = id
         """Festlegen der ID"""          """Festlegen der ID"""
Line 1642  class ECHO_externalLink(Folder,ECHO_basi Line 1802  class ECHO_externalLink(Folder,ECHO_basi
         self.responsible=responsible          self.responsible=responsible
         coordsnew=[ string.split(x,",") for x in coords]          coordsnew=[ string.split(x,",") for x in coords]
         self.coords=coordsnew          self.coords=coordsnew
           self.linkType = linkType        # Linktypen 'otherPresentation','external'
           
   
     def ECHO_externalLink_config(self):      def ECHO_externalLink_config(self):
         """Main configuration"""          """Main configuration"""
Line 1657  class ECHO_externalLink(Folder,ECHO_basi Line 1819  class ECHO_externalLink(Folder,ECHO_basi
         return pt()          return pt()
           
   
     def changeECHO_externalLink(self,link,title,label,description,contentType,responsible,weight,coords=None,credits=None,RESPONSE=None):      def changeECHO_externalLink(self,link,title,label,description,contentType,responsible,weight,coords=None,credits=None,RESPONSE=None,linkType='otherPresentation'):
         """Aenderung der Properties"""          """Aenderung der Properties"""
         setECHO_collectionInformation(self,title,label,description,contentType,responsible,credits,weight)          setECHO_collectionInformation(self,title,label,description,contentType,responsible,credits,weight)
   
         self.link=link          self.link=link
           self.linkType = linkType
         if RESPONSE is not None:          if RESPONSE is not None:
             RESPONSE.redirect('manage_main')              RESPONSE.redirect('manage_main')
                           
       def getLinkType(self):
           """ return linkType """
           if hasattr(self,"linkType"):
                   return self.linkType
           else :
                   return 'otherPresentation'
                           
     manage_options = Folder.manage_options+(      def setLinkType(self,type):
           """ set linkType """
           self.linkType = type
           
       def checkLink(self):
           """ returns tuple (isWorking,Error) """        
           try:
               urllib2.urlopen(self.link)
               return (True, '')
           except urllib2.HTTPError, e:
               return (False, e.code)
           except urllib2.URLError, e:
               return (False, str(e.reason))
           except:
               return (False, 'unknown Error')
               
               
       manage_options = (
         {'label':'Main Config','action':'ECHO_externalLink_config'},          {'label':'Main Config','action':'ECHO_externalLink_config'},
         {'label':'Graphic Coords','action':'ECHO_graphicEntry'},          {'label':'Graphic Coords','action':'ECHO_graphicEntry'},
         )          )+Folder.manage_options
   
                   
     def index_html(self):      def index_html(self):
Line 1677  class ECHO_externalLink(Folder,ECHO_basi Line 1863  class ECHO_externalLink(Folder,ECHO_basi
                   
         return self.REQUEST.RESPONSE.redirect(self.link)          return self.REQUEST.RESPONSE.redirect(self.link)
   
   
 def manage_addECHO_externalLinkForm(self):  def manage_addECHO_externalLinkForm(self):
         """Form for external Links"""          """Form for external Links"""
         pt=zptFile(self, 'zpt/AddECHO_externalLinkForm.zpt')          pt=zptFile(self, 'zpt/AddECHO_externalLinkForm.zpt')
         return pt()          return pt()
   
   
 def manage_addECHO_externalLink(self,id,title,label,description,contentType,responsible,link,weight,coords=None,credits=None,RESPONSE=None):  def manage_addECHO_externalLink(self,id,title,label,description,contentType,responsible,link,weight,coords=None,credits=None,RESPONSE=None,linkType='otherPresentation'):
     """Add an external Link"""      """Add an external Link"""
   
     newObj=ECHO_externalLink(id,link,title,label,description,contentType,responsible,credits,weight,coords)      newObj=ECHO_externalLink(id,link,title,label,description,contentType,responsible,credits,weight,coords,linkType)
   
     self._setObject(id,newObj)      self._setObject(id,newObj)
   
Line 1739  class ECHO_link(ECHO_externalLink): Line 1926  class ECHO_link(ECHO_externalLink):
 #                  #                
 #                        return ret  #                        return ret
 #          #        
           def getCopyrightsHTML(self):
               """gib (link auf copyright link, mediatyp, institution, copyrightType, label von copyrightType) aus"""
               
               if hasattr(self,'copyrightModel'):
                       obj=self.copyrightModel
                       
               else:
                       return "ERROR"
               ret=[]
               
               for copyright in obj.getCopyrights(): #copyright - media / partner / copyrightID
                       
                       
                       try:
                           if hasattr(self.copyrightTypes,copyright[2]):
                                copyrightTypeObj=getattr(self.copyrightTypes,copyright[2])
                                link="copyrightTypes/"+copyright[2]+'/copyright.html'
                           else:
                                copyrightTypeObj=getattr(obj,copyright[2])
                                link="copyrightModel/"+copyright[2]+'/copyright.html'
                                
                           label=copyrightTypeObj.label
                           url=getattr(copyrightTypeObj, 'url', '')
                               
                           if url!='':
                                    ret.append((url,copyright[0],copyright[1],copyright[2],label))
                           else:
                                   if hasattr(copyrightTypeObj, 'copyright.html'):
                                        ret.append(("""%s?partner=%s"""%(link,copyright[1]),copyright[0],copyright[1],copyright[2],label))
                                   else:
                                        ret.append(('empty',copyright[0],copyright[1],copyright[2],label))
                       except:
                               """nothing"""
                       
               return ret
               
           def getInstitutionsHTML(self):
                   """gibt Liste der foerdernden Institutionen aus"""
   
                   if hasattr(self,'support'):
                           obj=self.support
                           ret=obj.getSupporter()
                           return ret
                   else:
                           return ''
                           
           def getOwnerOriginalsHTML(self):
                  """gibt Liste der foerdernden Institutionen aus"""
                  
                  if hasattr(self,'ownerOriginal'):
                          obj=self.ownerOriginal
                          ret=obj.getOwner()
                          return ret
                  else:
                          return ''
       
           def getDigiCopyByHTML(self):
                  """gibt Liste der foerdernden Institutionen aus"""
                  
                  if hasattr(self,'digiCopyBy'):
                          obj=self.digiCopyBy
                          ret=obj.getDigiCopyBy()
                          return ret
                  else:
                          return ''
                                   
         def index_html(self):          def index_html(self):
                 """standard link"""                  """standard link"""
Line 1771  def manage_addECHO_linkForm(self): Line 2022  def manage_addECHO_linkForm(self):
         return pt()          return pt()
   
   
 def manage_addECHO_link(self,id,title,label,description="",contentType="",responsible="",link="",weight="",coords=[],credits=None,RESPONSE=None):  def manage_addECHO_link(self,id,title,label,description="",contentType="",responsible="",link="",weight="",coords=[],credits=None,linkType="external",RESPONSE=None):
     """Add an external Link"""      """Add an external Link"""
   
     newObj=ECHO_link(id,link,title,label,description,contentType,responsible,credits,weight,coords)      newObj=ECHO_link(id,link,title,label,description,contentType,responsible,credits,weight,coords,linkType)
   
     self._setObject(id,newObj)      self._setObject(id,newObj)
           
Line 1787  def manage_addECHO_link(self,id,title,la Line 2038  def manage_addECHO_link(self,id,title,la
 class ECHO_collection(CatalogAware, Folder, Persistent, Implicit, Cacheable,ECHO_basis):  class ECHO_collection(CatalogAware, Folder, Persistent, Implicit, Cacheable,ECHO_basis):
     """ECHO Collection"""      """ECHO Collection"""
   
       management_page_charset="utf-8"
     security=ClassSecurityInfo()      security=ClassSecurityInfo()
     meta_type='ECHO_collection'      meta_type='ECHO_collection'
     default_catalog='resourceCatalog'      default_catalog='resourceCatalog'
Line 1796  class ECHO_collection(CatalogAware, Fold Line 2048  class ECHO_collection(CatalogAware, Fold
   
     path="/mpiwg/online/permanent/shipbuilding"      path="/mpiwg/online/permanent/shipbuilding"
   
       
       def exportImportObjects_html(self,RESPONSE):
           """ImportObject"""
           pt=zptFile(self, 'zpt/exportImportObjects.zpt')
           pt.content_type="text/html"
           return pt()
           
       def importObjects_html(self,RESPONSE):
           """ImportObject"""
           pt=zptFile(self, 'zpt/importObjects.zpt')
           pt.content_type="text/html"
           return pt()
      
       def importObjects(self,zfile,RESPONSE=None,REQUEST=None):
           """import object from file"""
           
           zf=zipfile.ZipFile(zfile,"r")
           tmpdir=tempfile.mkdtemp() # create tempdir
           ret=None
           
           for name in zf.namelist():
                  fn=tempfile.mkstemp()[1]
                  tf=file(fn,"w")
                  x=zf.read(name)
                  tf.write(x)
                  tf.close()
                  try:
                      self._importObjectFromFile(fn,set_owner=1)
                  except:
                      if not ret:
                          ret=""
                      ret+="Cannot import: %s (Already existing?)<br>"%name
                  os.remove(fn)
           
           if ret:
               return """<html><body>%s</body></html>"""%ret
           if RESPONSE:
               RESPONSE.redirect(self.absolute_url())
           
       def exportObjects_html(self,RESPONSE):
           """Export objects"""
           
           pt=zptFile(self, 'zpt/exportObjects.zpt')
           pt.content_type="text/html"
           return pt()
       
       def exportObjects(self,ids,RESPONSE=None):
           """export objects with type id"""
           if not (type(ids) is ListType):
               ids=[ids]
           
           tmpdir=tempfile.mkdtemp() # create tempdir
           objs=self.ZopeFind(self,obj_ids=ids)
           tmpfile=tempfile.mkstemp()[1]
   
           zf=zipfile.ZipFile(tmpfile,"w")
           for obj in objs:
   
               f = os.path.join(tmpdir, '%s.zexp' %obj[0])
               #print E.absolute_url()
   
               obj[1]._p_jar.exportFile(obj[1]._p_oid, f)
   
               zf.write(f,obj[0])
           
           zf.close()
           shutil.rmtree(tmpdir)
           if RESPONSE:
               RESPONSE.setHeader("Content-Type","application/octet-stream")
               len=os.stat(tmpfile)[6]
               RESPONSE.setHeader("Content-Length",len)
               RESPONSE.setHeader("Content-Disposition","""attachement; filename=%s"""%"export.zip")
               fh=file(tmpfile)
               for x in fh.read():
                   RESPONSE.write(x)
               fh.close()
               
     def getMDValueSimpleSearchField(self):      def getMDValueSimpleSearchField(self):
           """returns value for simple search"""            """returns value for simple search"""
           return " ".join([self.title,self.description])            return " ".join([self.title,self.description])
Line 1847  class ECHO_collection(CatalogAware, Fold Line 2176  class ECHO_collection(CatalogAware, Fold
   
                             if obj.meta_type=="ECHO_mapText":                              if obj.meta_type=="ECHO_mapText":
                                     if splitted[1]=="en":                                      if splitted[1]=="en":
                                             obj.locale_en.pt_edit(REQUEST.form[key],None)                                              obj.locale_en.pt_edit(REQUEST.form[key],obj.locale_en.content_type)
                                     else:                                      else:
                                             obj.pt_edit(REQUEST.form[key],None)                                              obj.pt_edit(REQUEST.form[key],obj.content_type)
                             else:                              else:
                                     text=obj.ZopeFind(obj,obj_metatypes=['ECHO_mapText'])                                      text=obj.ZopeFind(obj,obj_metatypes=['ECHO_mapText'])
                                     if splitted[1]=="en":                                      if splitted[1]=="en":
                                                                                           
                                             text[0][1].locale_en.pt_edit(REQUEST.form[key],None)                                              text[0][1].locale_en.pt_edit(REQUEST.form[key],text[0][1].locale_en.content_type)
                                     else:                                      else:
                                             text[0][1].pt_edit(REQUEST.form[key],None)                                              text[0][1].pt_edit(REQUEST.form[key],text[0][1].content_type)
             if RESPONSE is not None:              if RESPONSE is not None:
                         RESPONSE.redirect('manage_main')                          RESPONSE.redirect('manage_main')
   
Line 2081  class ECHO_collection(CatalogAware, Fold Line 2410  class ECHO_collection(CatalogAware, Fold
         else:          else:
             return None              return None
   
       def changeViewer(self,newViewer,REQUEST=None,RESPONSE=None):
           """changes all ressources to the newViewer"""
           
           resources=self.ZopeFind(self,obj_metatypes=['ECHO_resource'],search_sub=1)
           if RESPONSE is not None:
                       RESPONSE.write("<html><body>")
   
           for resource in resources:
               
               done,msg=resource[1].changeViewer(newViewer)
               if done:
                   if RESPONSE is not None:
                       RESPONSE.write("<p>OK: %s"%resource[0])
               else:
                   if RESPONSE is not None:
                       RESPONSE.write("<p><a href='%s'>ERROR: %s (%s)</a>"%(resource[1].absolute_url()+'/ECHO_resource_config_main',resource[0],msg))
                   
   
                   
           if RESPONSE is not None:
                       RESPONSE.write("<p>Done</p></body></html>")
   
     def changeViewerTemplateSets(self,project,xslt,thumbtemplate,topbar,digiLibTemplate,digiliburlprefix,RESPONSE=None):      def changeViewerTemplateSets(self,project,xslt,thumbtemplate,topbar,digiLibTemplate,digiliburlprefix,RESPONSE=None):
             """change the templates"""              """change the templates"""
   
Line 2130  class ECHO_collection(CatalogAware, Fold Line 2481  class ECHO_collection(CatalogAware, Fold
                     if ret and RESPONSE:                      if ret and RESPONSE:
                             RESPONSE.write("ok: %s\n"%txt)                              RESPONSE.write("ok: %s\n"%txt)
                                           
                     #zLOG.LOG("ECHO (copyTitleToInfoXMLFolder)",zLOG.INFO,txt)                         #logger("ECHO (copyTitleToInfoXMLFolder)",logging.INFO,txt)   
             if RESPONSE is not None:              if RESPONSE is not None:
                     RESPONSE.write("done!\n")                      RESPONSE.write("done!\n")
                     RESPONSE.close()                      RESPONSE.close()
Line 2178  class ECHO_collection(CatalogAware, Fold Line 2529  class ECHO_collection(CatalogAware, Fold
                  retStr="<option>\n"                   retStr="<option>\n"
                                     
          try: # erste version copyrightTypes exists           try: # erste version copyrightTypes exists
                  for partner in self.credits:                   for partner in self.getPartners():
                          if selected and (partner==selected):                           partnerTitle = partner.title
                                  retStr+="""<option selected value="%s">%s\n"""%(partner,partner)                           partnerId = partner.__name__
                            if selected and (partnerId==selected):
                                    retStr+="""<option selected value="%s">%s\n"""%(partnerId,partnerTitle)
                          else:                                           else:                
                                  retStr+="""<option value="%s">%s\n"""%(partner,partner)                                   retStr+="""<option value="%s">%s\n"""%(partnerId,partnerTitle)
          except:           except:
                  """nothing"""                   """nothing"""
          return retStr           return retStr
Line 2206  class ECHO_collection(CatalogAware, Fold Line 2559  class ECHO_collection(CatalogAware, Fold
             for resource in dom.getElementsByTagName('resource'):              for resource in dom.getElementsByTagName('resource'):
                     link=getText(resource.getElementsByTagName('link')[0].childNodes)                      link=getText(resource.getElementsByTagName('link')[0].childNodes)
                     label=getText(resource.getElementsByTagName('label')[0].childNodes)                      label=getText(resource.getElementsByTagName('label')[0].childNodes)
                       pageimglink=getText(resource.getElementsByTagName('pageimglink')[0].childNodes)
                     #splitted=link.split("?")[0].split("/")                      #splitted=link.split("?")[0].split("/")
                     #id=splitted[len(splitted)-1].encode('ascii')                      #id=splitted[len(splitted)-1].encode('ascii')
                     id=re.sub(" ","_",label).encode('ascii')                      id=re.sub(" ","_",label).encode('ascii')
                                           
                     ret+="<p>"+label+"</p>"                      ret+="<p>"+label+"</p>"
                     manage_addECHO_resource(self,id,label.encode('ascii'),label.encode('ascii'),"","","",link.encode('ascii'),"","")                      manage_addECHO_resource(self,id,label.encode('ascii'),label.encode('ascii'),"","",pageimglink.encode('ascii'),link.encode('ascii'),"","")
             return ret              return ret
                   
     security.declarePublic('getImageTag')      security.declarePublic('getImageTag')
Line 2245  class ECHO_collection(CatalogAware, Fold Line 2599  class ECHO_collection(CatalogAware, Fold
             manage_addECHO_resource(self,id,title,label,description,responsible,link,metalink,weight,credits=None,coords=None,RESPONSE=None)              manage_addECHO_resource(self,id,title,label,description,responsible,link,metalink,weight,credits=None,coords=None,RESPONSE=None)
             return "done"              return "done"
         except:          except:
               logging.error("ECHOcollection: (AddResource): %s %s"%sys.exc_info()[0:2])
             return None              return None
   
       def addResourceAndCreateLabelAndTitle(self,id,title,label,description,contentType,responsible,link,metalink,weight,credits=None,coords=None,RESPONSE=None):
           """SSS"""
           ret = self.addResource(id,title,label,description,contentType,responsible,link,metalink,weight,credits,coords,RESPONSE)
           if ret is None:
               return None
           
           try:
               server2=getattr(self,id)
               server2.copyIndex_meta2echo_resource()
               server2.generate_label()
               server2.generate_title()
           except:
                 logging.error("An Error occured adding the resource A\n %s %s"%sys.exc_info()[0:2])
                 return None
           return "done"
     def getSecondaryLink(self):      def getSecondaryLink(self):
         """secondary link"""          """secondary link"""
         try:          try:
Line 2288  class ECHO_collection(CatalogAware, Fold Line 2658  class ECHO_collection(CatalogAware, Fold
         ret="""<?xml version="1.0" encoding="utf-8" ?>"""          ret="""<?xml version="1.0" encoding="utf-8" ?>"""
         return ret+"<collection>"+getCollection(self,pwstr=pwstr)+"</collection>"          return ret+"<collection>"+getCollection(self,pwstr=pwstr)+"</collection>"
           
     def createAllJSAreas(self):      def createAllJSAreas(self,mapColTypes=None):
         """create area calls for JavaScript"""          """create area calls for JavaScript"""
         areas = self.getAllMapAreas()          areas = self.getAllMapAreas(mapColTypes=mapColTypes)
         return self.createJSAreas(areas)          return self.createJSAreas(areas)
   
           
Line 2340  class ECHO_collection(CatalogAware, Fold Line 2710  class ECHO_collection(CatalogAware, Fold
         return ECHO_rerenderLinksMD(self,obj,types)          return ECHO_rerenderLinksMD(self,obj,types)
   
                   
     def __init__(self,id,title,label,description="",contentType="",responsible="",credits="",weight="",sortfield="",coords=[],secondaryLinkTitle="",secondaryLink="",imageTag="",bgcolour=""):      def __init__(self,id,title,label,description="",contentType="",responsible="",credits="",weight="",sortfield="",coords=[],secondaryLinkTitle="",secondaryLink="",imageTag="",bgcolour="",isVisible=True):
   
         self.id = id          self.id = id
         """Festlegen der ID"""          """Festlegen der ID"""
Line 2358  class ECHO_collection(CatalogAware, Fold Line 2728  class ECHO_collection(CatalogAware, Fold
         self.secondaryLinkTitle=secondaryLinkTitle          self.secondaryLinkTitle=secondaryLinkTitle
         self.secondaryLink=secondaryLink          self.secondaryLink=secondaryLink
         self.bgcolour=bgcolour          self.bgcolour=bgcolour
           self.isVisible=isVisible
                   
   
     manage_options = Folder.manage_options+ Cacheable.manage_options+(      manage_options = Folder.manage_options+ Cacheable.manage_options+(
Line 2367  class ECHO_collection(CatalogAware, Fold Line 2738  class ECHO_collection(CatalogAware, Fold
         {'label':'Localize','action':'localizeObjects'},          {'label':'Localize','action':'localizeObjects'},
         {'label':'Change Weights','action':'changeWeights'},          {'label':'Change Weights','action':'changeWeights'},
         {'label':'Rerender Labels and Titles','action':'ECHO_rerenderLinksMDWarning'},          {'label':'Rerender Labels and Titles','action':'ECHO_rerenderLinksMDWarning'},
           {'label':'Export/Import Objects','action':'exportImportObjects_html'},
         {'label':'Graphic Coords','action':'ECHO_graphicEntry'},          {'label':'Graphic Coords','action':'ECHO_graphicEntry'},
         {'label':'create resources from XML','action':'createRessourcesFromXMLForm'},          {'label':'create resources from XML','action':'createRessourcesFromXMLForm'},
         {'label':'Set Startpage','action':'setStartpageFolderForm'},          {'label':'Set Startpage','action':'setStartpageFolderForm'},
Line 2401  class ECHO_collection(CatalogAware, Fold Line 2773  class ECHO_collection(CatalogAware, Fold
   
                                   
     security.declarePublic('changeECHO_collection')               security.declarePublic('changeECHO_collection')         
     def changeECHO_collection(self,title,label,description,contentType,responsible,weight,secondaryLink,secondaryLinkTitle,credits=None,sortfield="weight",coords=None,RESPONSE=None,imageTag="",bgcolour="",location=None,isAlwaysClickable=None,prefix="",suffix=""):      def changeECHO_collection(self,title,label,description,contentType,responsible,weight,secondaryLink,secondaryLinkTitle,credits=None,sortfield="weight",coords=None,RESPONSE=None,imageTag="",bgcolour="",location=None,isAlwaysClickable=None,prefix="",suffix="",isVisible=True):
         """Aenderung der Properties"""          """Aenderung der Properties"""
   
         self.secondaryLink=secondaryLink          self.secondaryLink=secondaryLink
Line 2412  class ECHO_collection(CatalogAware, Fold Line 2784  class ECHO_collection(CatalogAware, Fold
         self.isAlwaysClickable=isAlwaysClickable          self.isAlwaysClickable=isAlwaysClickable
         self.prefix=prefix[0:]          self.prefix=prefix[0:]
         self.suffix=suffix[0:]          self.suffix=suffix[0:]
           self.setIsVisible(isVisible)
                   
         setECHO_collectionInformation(self,title,label,description,contentType,responsible,credits,weight)          setECHO_collectionInformation(self,title,label,description,contentType,responsible,credits,weight)
                                   
Line 2471  class ECHO_collection(CatalogAware, Fold Line 2844  class ECHO_collection(CatalogAware, Fold
         #print "NN",argv          #print "NN",argv
         ret = ECHO_basis.content_html(self,'collection')          ret = ECHO_basis.content_html(self,'collection')
                   
         try:          if type(ret) is StringType:
                 return ret.encode('utf-8')                 return ret.decode('utf-8')
         except:          else:
               
             try:   
                 return ret.decode('latin-1')  
             except:  
                   
                 return ret                  return ret
                             
                
     def getCredits(self):      def getCredits(self):
         """Ausgabe der credits"""          """Ausgabe der credits"""
         if self.credits:          if self.credits:
Line 2516  class ECHO_collection(CatalogAware, Fold Line 2885  class ECHO_collection(CatalogAware, Fold
         """javascript"""          """javascript"""
         return sendFile(self, 'js/hl_add.js', 'text/plain')          return sendFile(self, 'js/hl_add.js', 'text/plain')
   
     def getAllMapAreas(self,mapColTypes=['ECHO_collection','ECHO_resource','ECHO_link','ECHO_externalLink']):      def getAllMapAreas(self,mapColTypes=None):
         """Give list of coordinates"""          """Give list of coordinates"""
           if mapColTypes is None:
               mapColTypes=['ECHO_collection','ECHO_resource','ECHO_link','ECHO_externalLink']
                   
         areas=[]          areas=[]
         for entry in self.getSubCols(subColTypes=mapColTypes):          for entry in self.getSubCols(subColTypes=mapColTypes):
Line 2539  class ECHO_collection(CatalogAware, Fold Line 2910  class ECHO_collection(CatalogAware, Fold
   
     getSubCols = ECHO_helpers.getSubCols      getSubCols = ECHO_helpers.getSubCols
   
       def getSubcolsXMLRpc(self,searchSimple):
           """simplesearch results suitable for xml rpc, gives back array objid,url"""
           
           return [x.absolute_url() for x in self.getSubCols(searchSimple=searchSimple)]
       
       
 Globals.InitializeClass(ECHO_collection)  Globals.InitializeClass(ECHO_collection)
           
 def manage_addECHO_collectionForm(self):  def manage_addECHO_collectionForm(self):
Line 2547  def manage_addECHO_collectionForm(self): Line 2924  def manage_addECHO_collectionForm(self):
         return pt()          return pt()
   
   
 def manage_addECHO_collection(self,id,title,label,description="",contentType="",responsible="",weight=0,sortfield="weight",coords="",secondaryLinkTitle="",secondaryLink="",credits=None,RESPONSE=None,imageTag="",bgcolour=""):  def manage_addECHO_collection(self,id,title,label,description="",contentType="",responsible="",weight=0,sortfield="weight",coords="",secondaryLinkTitle="",secondaryLink="",credits=None,RESPONSE=None,imageTag="",bgcolour="",isVisible=True):
     """add a echo collection"""      """add a echo collection"""
           
   
     newObj=ECHO_collection(id,title,label,description,contentType,responsible,credits,weight,sortfield,coords,secondaryLinkTitle=secondaryLinkTitle,secondaryLink=secondaryLink,imageTag=imageTag,bgcolour="")      newObj=ECHO_collection(id,title,label,description,contentType,responsible,credits,weight,sortfield,coords,secondaryLinkTitle=secondaryLinkTitle,secondaryLink=secondaryLink,imageTag=imageTag,bgcolour="",isVisible=isVisible)
   
     self._setObject(id,newObj)      self._setObject(id,newObj)
   
Line 2836  class ECHO_root(Folder,Persistent,Implic Line 3213  class ECHO_root(Folder,Persistent,Implic
     security=ClassSecurityInfo()      security=ClassSecurityInfo()
           
     meta_type="ECHO_root"      meta_type="ECHO_root"
       management_page_charset="utf-8"
       
       getSubCols = ECHO_helpers.getSubCols
   
       manage_options=Folder.manage_options+(
                   {'label':'Main Config','action':'ECHO_copyright_configForm'},
                   {'label':'Reload Metadata','action':'reloadMetaDataFromStorageWarning'},
                   {'label':'Change Weights','action':'changeWeights'},
                   {'label':'Generate from RDF','action':'generateFromRDFForm'},
                   {'label':'update Resource Catalog','action':'updateResourceCatalog'},
                   {'label':'Copy MD for indexing and search','action':'copySearchFields'},
   )
   
   
       def copySearchFields(self,RESPONSE=None):
               """copys < metadatafields to the object"""
               resources=self.ZopeFind(self,obj_metatypes=['ECHO_resource'],search_sub=1)
   
               for resource in resources:
   
                       resource[1].copySearchFields()
                   
               if RESPONSE is not None:
                       RESPONSE.redirect('manage_main')
           
     def mod_re_sub(self,pattern,replace,string):      def mod_re_sub(self,pattern,replace,string):
         """re.sub aus mod re zur Verfuegung stellen"""          """re.sub aus mod re zur Verfuegung stellen"""
Line 2876  class ECHO_root(Folder,Persistent,Implic Line 3276  class ECHO_root(Folder,Persistent,Implic
         if RESPONSE:          if RESPONSE:
             RESPONSE.write("<p> ok </p></html></body>\n")              RESPONSE.write("<p> ok </p></html></body>\n")
                           
     def printer(self,txt):  
         print txt  
         print txt[2]  
         print txt[2].getImageTag()  
         print "HO"  
         return txt[2].getImageTag()  
   
     def printer2(self,txt):  
         print txt  
   
   
     def item2(self,txt):  
         return txt[2]  
   
     def setLanguage(self,lang):      def setLanguage(self,lang):
             """Set language cookie"""              """Set language cookie"""
Line 2903  class ECHO_root(Folder,Persistent,Implic Line 3290  class ECHO_root(Folder,Persistent,Implic
                           
             self.REQUEST.RESPONSE.setCookie('lang_exhibition',lang,path="/")              self.REQUEST.RESPONSE.setCookie('lang_exhibition',lang,path="/")
             self.REQUEST.RESPONSE.redirect(self.REQUEST['URL1'])              self.REQUEST.RESPONSE.redirect(self.REQUEST['URL1'])
               
     def getLanguage(self):      def getLanguage(self):
             """get language cookie"""              """get language cookie"""
             lang= self.REQUEST.cookies.get('lang_exhibition','de')              lang= self.REQUEST.cookies.get('lang_exhibition','de')
Line 3092  class ECHO_root(Folder,Persistent,Implic Line 3480  class ECHO_root(Folder,Persistent,Implic
                 pt=zptFile(self, 'zpt/changeWeightForm')                  pt=zptFile(self, 'zpt/changeWeightForm')
                 pt.content_type="text/html"                  pt.content_type="text/html"
                 return pt()                  return pt()
     getSubCols = ECHO_helpers.getSubCols  
   
     manage_options=Folder.manage_options+(  
                 {'label':'Main Config','action':'ECHO_copyright_configForm'},  
                 {'label':'Reload Metadata','action':'reloadMetaDataFromStorageWarning'},  
                 {'label':'Change Weights','action':'changeWeights'},  
                 {'label':'Generate from RDF','action':'generateFromRDFForm'},  
   
 )  
   
           
   
     def reloadMetaDataFromStorageWarning(self,RESPONSE=None):      def reloadMetaDataFromStorageWarning(self,RESPONSE=None):
Line 3158  class ECHO_root(Folder,Persistent,Implic Line 3536  class ECHO_root(Folder,Persistent,Implic
             return ret              return ret
   
     def getValueFromClass(self,field,found):      def getValueFromClass(self,field,found):
             """retattribute falss existing"""              """ret attribute if existing"""
             try:              try:
                                           
                     return getattr(found,field).decode('ascii','ignore')                      return getattr(found,field)#.decode('utf-8','ignore')
             except:              except:
                       logging.error("can't: decode: %s"%repr(field))
                       logging.error("      %s %s"%(sys.exc_info()[0],sys.exc_info()[1]))
                     return ""                      return ""
   
     security.declarePublic('getImageTag')      security.declarePublic('getImageTag')
Line 3399  class ECHO_root(Folder,Persistent,Implic Line 3779  class ECHO_root(Folder,Persistent,Implic
   
     def formatAscii(self,str,url=None):      def formatAscii(self,str,url=None):
         """ersetze ascii umbrueche durch <br>"""          """ersetze ascii umbrueche durch <br>"""
         #url=None  
       if not str: 
               return ""
   
         if url:          if url:
                           
             retStr=""              retStr=""
Line 3411  class ECHO_root(Folder,Persistent,Implic Line 3794  class ECHO_root(Folder,Persistent,Implic
                 retStr+="""<a href="%s">%s</a><br/>"""%(strUrl,word)                  retStr+="""<a href="%s">%s</a><br/>"""%(strUrl,word)
             str=retStr              str=retStr
         if str:          if str:
             return re.sub(r"[\n]","<br/>",str)              str = re.sub(r"[\n]","<br/>",str)
               return unicodify(str)
         else:          else:
             return ""              return u""
                   
     link2html=vlp_xmlhelpers.link2html      link2html=vlp_xmlhelpers.link2html
       related2html=vlp_xmlhelpers.related2html
   
     xml2html=vlp_xmlhelpers.xml2html      xml2html=vlp_xmlhelpers.xml2html
     
Line 3448  class ECHO_root(Folder,Persistent,Implic Line 3833  class ECHO_root(Folder,Persistent,Implic
     def getPartners(self):      def getPartners(self):
         """Get list of Partners. Presently only from a subfolder partners"""          """Get list of Partners. Presently only from a subfolder partners"""
         if hasattr(self,'partners'):                      if hasattr(self,'partners'):            
                 return [ item[1] for item in self.partners.ZopeFind(self.partners,obj_metatypes=['ECHO_partner'])]                  ret = [ item[1] for item in self.partners.ZopeFind(self.partners,obj_metatypes=['ECHO_partner'])]
                   def sort_title(one, another) : return cmp(one.title, another.title)
                   ret.sort(sort_title)
                   return ret
         else:          else:
                 return []                  return []
       
Line 3631  class ECHO_root(Folder,Persistent,Implic Line 4019  class ECHO_root(Folder,Persistent,Implic
         inst=self.ZopeFind(self.institutions, obj_ids=[id])          inst=self.ZopeFind(self.institutions, obj_ids=[id])
         return inst          return inst
   
       def updateResourceCatalog(self,REQUEST,RESPONSE):
           """update ressource catalog"""
           catalog=getattr(self,'resourceCatalog',None)
           if not catalog:
               return """<html><body><h3>No resourceCatalog available</h3></body></html>"""
           
           else:
               class element:
                   def __init__(self,group,name):
                       self.group=group
                       self.name=name
               catalog.manage_delObjects('author splitter')
               #elements=[element('Stop Words',""" Don't remove stop words' """),element('Word Splitter','ECHO author splitter')]
               elements=[element('Word Splitter','ECHO author splitter')]
               manage_addLexicon(catalog,id="author splitter",elements=elements)
               
               return catalog.manage_catalogReindex(REQUEST,RESPONSE,'manage_main')
               
           
       def checkMetaDataLinks(self,correct=None):
           """check all metadatalinks and if correct is set change the servername to content.mpiwg-berlin.mpg.de"""
           
           self.REQUEST.RESPONSE.write("<html><body>")
           for resource in self.ZopeFind(self,obj_metatypes=['ECHO_resource'],search_sub=1):
               metalink=resource[1].metalink
           
               try:
                   url=urllib.urlopen(metalink)
               except:
                   
                   self.REQUEST.RESPONSE.write("<p>ERROR (opening %s):"%resource[1].absolute_url() +" -- %s %s <br>"%sys.exc_info()[0:2])
                   self.REQUEST.RESPONSE.write("-----------%s"%metalink)
               
                   if correct:
                       urlparsed=[x for x in urlparse.urlparse(metalink)]
                       urlparsed[1]="content.mpiwg-berlin.mpg.de"
                       neu=urlparse.urlunparse(urlparsed)
                       resource[1].metalink=neu[0:]
                       self.REQUEST.RESPONSE.write("----------changed to:%s)"%neu)
                   
 def manage_addECHO_root(self,id,title,RESPONSE=None):  def manage_addECHO_root(self,id,title,RESPONSE=None):
     """Add an ECHO_root"""      """Add an ECHO_root"""
Line 3730  class ECHO_linkList(ZopePageTemplate,ECH Line 4157  class ECHO_linkList(ZopePageTemplate,ECH
     def getcontentType(self):      def getcontentType(self):
         """get contentType"""          """get contentType"""
         if hasattr(self,'contentType'):          if hasattr(self,'contentType'):
             return self.contentType              return normalizeCt(self.contentType)
         else:          else:
             return 0              return 0
   
Line 3741  class ECHO_linkList(ZopePageTemplate,ECH Line 4168  class ECHO_linkList(ZopePageTemplate,ECH
          self.ZBindings_edit(self._default_bindings)           self.ZBindings_edit(self._default_bindings)
          if text is None:           if text is None:
              text = ''               text = ''
            if content_type is None:
                content_type = self.content_type
          self.pt_edit(text, contentType)           self.pt_edit(text, contentType)
   
   
Line 3841  def manage_addECHO_support(self, id,inst Line 4270  def manage_addECHO_support(self, id,inst
         if RESPONSE is not None:          if RESPONSE is not None:
                 RESPONSE.redirect('manage_main')                  RESPONSE.redirect('manage_main')
                                   
   # ECHO - owner of original
   class ECHO_ownerOriginal(Folder,ECHO_basis):
           """besitzer des originals"""
           meta_type="ECHO_ownerOriginal"
           security=ClassSecurityInfo()
           
           
           def __init__(self,id,institutions=None):
                   """init"""
                   self.id=id
                   self.title=''
                   self.institutions=toList(institutions)
   
           security.declarePublic('getOwner')
           def getOwner(self):
                   """return institutions"""
                   if self.institutions:
                           return self.institutions
                   else:
                           return []
                   
           manage_options = Folder.manage_options+(
                   {'label':'Main Config','action':'ECHO_ownerOriginal_configForm'},
                   )
   
           def ECHO_ownerOriginal_configForm(self):
                   """change form"""
                   pt=zptFile(self, 'zpt/ChangeECHO_ownerOriginal')
                   pt.content_type="text/html"
                   return pt()
   
           def ECHO_ownerOriginal_config(self,institutions=None,RESPONSE=None):
                   """change"""
                   self.institutions=toList(institutions)
   
                   if RESPONSE is not None:
                           RESPONSE.redirect('manage_main')
   
                   
   def manage_addECHO_ownerOriginalForm(self):
       """Form for adding"""
       pt=zptFile(self, 'zpt/AddECHO_ownerOriginal.zpt')
       return pt()
   
   def manage_addECHO_ownerOriginal(self, id,institutions=None,RESPONSE=None):
           """add the copyright"""
   
           meta_type="ECHO_ownerOriginal"
           
           
           self._setObject(id, ECHO_ownerOriginal(id,institutions))
   
           if RESPONSE is not None:
                   RESPONSE.redirect('manage_main')
                   
   # --------------------------------------------------------------------------------             
   
   # ECHO - digitized copy by
   class ECHO_digiCopyBy(Folder,ECHO_basis):
           """besitzer des originals"""
           meta_type="ECHO_digiCopyBy"
           security=ClassSecurityInfo()
           
           
           def __init__(self,id,institutions=None):
                   """init"""
                   self.id=id
                   self.title=''
                   self.institutions=toList(institutions)
   
           security.declarePublic('getDigiCopyBy')
           def getDigiCopyBy(self):
                   """return institutions"""
                   if self.institutions:
                           return self.institutions
                   else:
                           return []
                   
           manage_options = Folder.manage_options+(
                   {'label':'Main Config','action':'ECHO_digiCopyBy_configForm'},
                   )
   
           def ECHO_digiCopyBy_configForm(self):
                   """change form"""
                   pt=zptFile(self, 'zpt/ChangeECHO_digiCopyBy')
                   pt.content_type="text/html"
                   return pt()
   
           def ECHO_digiCopyBy_config(self,institutions=None,RESPONSE=None):
                   """change"""
                   self.institutions=toList(institutions)
   
                   if RESPONSE is not None:
                           RESPONSE.redirect('manage_main')
   
                   
   def manage_addECHO_digiCopyByForm(self):
       """Form for adding"""
       pt=zptFile(self, 'zpt/AddECHO_digiCopyBy.zpt')
       return pt()
   
   def manage_addECHO_digiCopyBy(self, id,institutions=None,RESPONSE=None):
           """add the copyright"""
   
           meta_type="ECHO_digiCopyBy"
           
           
           self._setObject(id, ECHO_digiCopyBy(id,institutions))
   
           if RESPONSE is not None:
                   RESPONSE.redirect('manage_main')
                   
   # --------------------------------------------------------------------------------  
   
 class ECHO_institution(Image,Persistent,ECHO_basis):  class ECHO_institution(Image,Persistent,ECHO_basis):
     """ECHO Institution"""      """ECHO Institution"""
Line 3961  def repairCoords(self): Line 4503  def repairCoords(self):
                     col.addMapArea(area)                      col.addMapArea(area)
         msg += "\nDone!"          msg += "\nDone!"
         return msg          return msg
   
   from ECHO_Nav import ECHO_navigation
   
   class ECHO_main(ECHO_root,ECHO_navigation):
       """echo main object combines ECHO_root and ECHO_navigation"""
       
       meta_type="ECHO_main"
       
       def __init__(self,id,title):
           """init"""
           self.id=id
           self.title=title
           self.pathToHierarchy="/"+self.id # hierarchie always starts with the object.
           self.displayedMetaTypes=displayTypes
           
           
       manage_options = Folder.manage_options+(
           {'label':'Main Config','action':'ECHO_navigationConfigForm'},
           {'label':'Cache','action':'ECHO_cacheManageForm'},
           {'label':'Main Config','action':'ECHO_copyright_configForm'},
           {'label':'Reload Metadata','action':'reloadMetaDataFromStorageWarning'},
           {'label':'Change Weights','action':'changeWeights'},
           {'label':'Generate from RDF','action':'generateFromRDFForm'},
           {'label':'update Resource Catalog','action':'updateResourceCatalog'},
           {'label':'Copy MD for indexing and search','action':'copySearchFields'},
           )
   
       
   def manage_addECHO_mainForm(self):
       """Form for adding"""
       pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddECHO_main.zpt')).__of__(self)
       return pt()
   
   def manage_addECHO_main(self,id,title,RESPONSE=None):
       """Add an ECHO_main"""
       self._setObject(id,ECHO_main(id,title))
       
       obj=self._getOb(id)
       text=file(os.path.join(package_home(globals()),'zpt','main_template')).read()
       
       manage_addPageTemplate(obj,'main_template',text=text)               
       
     
       if RESPONSE is not None:
           RESPONSE.redirect('manage_main')

Removed from v.1.258  
changed lines
  Added in v.1.296


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