Diff for /ECHO_content/ECHO_collection.py between versions 1.83 and 1.99

version 1.83, 2004/05/12 15:41:55 version 1.99, 2004/06/07 14:30:16
Line 19  from Globals import DTMLFile Line 19  from Globals import DTMLFile
 from OFS.Folder import Folder  from OFS.Folder import Folder
 from OFS.SimpleItem import SimpleItem  from OFS.SimpleItem import SimpleItem
 from AccessControl import ClassSecurityInfo  from AccessControl import ClassSecurityInfo
   from AccessControl.User import UserFolder
 from Globals import InitializeClass  from Globals import InitializeClass
 from Globals import DTMLFile  from Globals import DTMLFile
   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
 from Globals import Persistent, package_home  from Globals import Persistent, package_home
 from Acquisition import Implicit  from Acquisition import Implicit
 from ECHO_helpers import displayTypes  from ECHO_helpers import displayTypes
   
   
 try:  try:
     from psycopg import libpq      from psycopg import libpq
 except:  except:
Line 42  import xml.dom.minidom Line 46  import xml.dom.minidom
 from ECHO_graphicalOverview import javaHandler,javaScriptMain  from ECHO_graphicalOverview import javaHandler,javaScriptMain
 import ECHO_helpers  import ECHO_helpers
   
   def getCopyrightsFromForm(argv):
       medias={}
       partners={}
       copyrights={}
       
       copyrightsFinal=[]
       for arg in argv.keys():
           print arg
           if arg[0:5]=='media':
               nm=int(arg[5:])
               medias[nm]=argv[arg]
           elif arg[0:5]=='partn':
               nm=int(arg[5:])
               partners[nm]=argv[arg]
           elif arg[0:5]=='copyr':
               nm=int(arg[5:])
               copyrights[nm]=argv[arg]
   
       copyrightsList=[(medias[nm],partners[nm],copyrights[nm]) for nm in medias.keys()]
       for copyright in copyrightsList:
           if not copyright[0]=='':
               copyrightsFinal.append(copyright)
       return copyrightsFinal
   
 #List of different types for the graphical linking viewer  #List of different types for the graphical linking viewer
 viewClassificationListMaster=['view point','area']  viewClassificationListMaster=['view point','area']
   
   
 def checkDiffs(self,metadict):  def checkDiffs(self,metadict):
         """check differences"""          """check differences"""
   
           
   
       
         def NoneToEmpty(obj):          def NoneToEmpty(obj):
             if obj:              if obj:
                 return obj                  return obj
             else:              else:
                 return ""                  return ""
                   
           
           
         diffs={}          diffs={}
           
         tags=self.findTagsFromMapping(self.contentType)          tags=self.findTagsFromMapping(self.contentType)
           self.referencetypes=tags[2]
           self.fields=tags[3]
           
       
         for field in tags[1]:          for field in tags[1]:
             try:              try:
                 if (NoneToEmpty(self.getFieldValue(self.getFieldTag(tags,field)))==metadict[self.getFieldTag(tags,field)]):                  if (NoneToEmpty(self.getFieldValue(self.getFieldTag(tags,field)))==metadict[self.getFieldTag(tags,field)]):
                     diffs[self.getFieldTag(tags,field)]=1                      diffs[self.getFieldTag(tags,field)]=1
                 else:                  else:
                     print "DIFF",field,self.getFieldValue(self.getFieldTag(tags,field)),metadict[self.getFieldTag(tags,field)]                      
                     diffs[self.getFieldTag(tags,field)]=0                      diffs[self.getFieldTag(tags,field)]=0
             except:              except:
                 diffs[self.getFieldTag(tags,field)]=0                  diffs[self.getFieldTag(tags,field)]=0
                 print "EX",field                  
         return diffs          return diffs
           
 def content_html(self,type):  def content_html(self,type):
Line 75  def content_html(self,type): Line 114  def content_html(self,type):
         #if templates:          #if templates:
         #    return templates[0][1]()          #    return templates[0][1]()
   
         try:          if hasattr(self,type+"_template"):
             obj=getattr(self,type+"_template")              obj=getattr(self,type+"_template")
             return obj()              return obj()
         except:          else:
             pt=PageTemplateFile('Products/ECHO_content/zpt/ECHO_%s_template_standard.zpt'%type).__of__(self)              pt=PageTemplateFile('Products/ECHO_content/zpt/ECHO_%s_template_standard.zpt'%type).__of__(self)
             pt.content_type="text/html"              pt.content_type="text/html"
             return pt()              return pt()
Line 120  def sendFile(self, filename, type): Line 159  def sendFile(self, filename, type):
     self.REQUEST.RESPONSE.write(file(fn).read())      self.REQUEST.RESPONSE.write(file(fn).read())
     return      return
   
   class BrowserCheck:
       """check the browsers request to find out the browser type"""
       
       def __init__(self, zope):
       self.ua = zope.REQUEST.get_header("HTTP_USER_AGENT")
       self.isN4 = (string.find(self.ua, 'Mozilla/4.') > -1) and (string.find(self.ua, 'MSIE') < 0)
       self.isIE = string.find(self.ua, 'MSIE') > -1
       self.nav = self.ua[string.find(self.ua, '('):]
       ie = string.split(self.nav, "; ")[1]
       if string.find(ie, "MSIE") > -1:
           self.versIE = string.split(ie, " ")[1]
       self.isMac = string.find(self.ua, 'Macintosh') > -1
       self.isWin = string.find(self.ua, 'Windows') > -1
       self.isIEWin = self.isIE and self.isWin
       self.isIEMac = self.isIE and self.isMac
   
   
 def writeMetadata(url,metadict):  def writeMetadata(url,metadict):
     """Einlesen der Metadaten und und erstellen des geänderten XML file"""      """Einlesen der Metadaten und und erstellen des geaenderten XML file"""
   
     try:      try:
         geturl=""          geturl=""
Line 146  def writeMetadata(url,metadict): Line 201  def writeMetadata(url,metadict):
     metanode=metanodes[0]      metanode=metanodes[0]
   
     for metaData in metadict.keys():      for metaData in metadict.keys():
         print metaData,metanode          
         try:          try:
             nodeOld=metanode.getElementsByTagName(metaData)              nodeOld=metanode.getElementsByTagName(metaData)
         except:          except:
Line 165  def writeMetadata(url,metadict): Line 220  def writeMetadata(url,metadict):
                 metanode.removeChild(nodeOld[0]).unlink()                  metanode.removeChild(nodeOld[0]).unlink()
   
         metanodeneu=dom.createElement(metaData)          metanodeneu=dom.createElement(metaData)
         metanodetext=dom.createTextNode(unicode(metadict[metaData],"utf8"))          try:
               metanodetext=dom.createTextNode(unicode(metadict[metaData],"utf-8"))
           except:
               metanodetext=dom.createTextNode(metadict[metaData].encode('utf-8'))
         metanodeneu.appendChild(metanodetext)          metanodeneu.appendChild(metanodetext)
         metanode.appendChild(metanodeneu)          metanode.appendChild(metanodeneu)
   
           
     return dom.topxml().encode('utf-8')      return dom.toxml().encode('utf-8')
   
       
   
 def readMetadata(url):  def readMetadata(url):
     """Methode zum Auslesen der Metadateninformation zu einer Resource      """Methode zum Auslesen der Metadateninformation zu einer Resource
Line 196  def readMetadata(url): Line 256  def readMetadata(url):
     if len(metanode)==0:      if len(metanode)==0:
         metanode=dom.getElementsByTagName('archimedes')          metanode=dom.getElementsByTagName('archimedes')
         metadict['bib_type']='Archimedes'          metadict['bib_type']='Archimedes'
         #print "HELLO"          
                   
     if not len(metanode)==0:          if not len(metanode)==0:    
         metacontent=metanode[0].childNodes          metacontent=metanode[0].childNodes
Line 208  def readMetadata(url): Line 268  def readMetadata(url):
                   
         for node in metacontent:          for node in metacontent:
             try:              try:
                 metadict[re.sub('-','_',node.tagName.lower())]=getText(node.childNodes)              #print urllib.unquote(getText(node.childNodes)),getText(node.childNodes)
               metadict[re.sub('-','_',node.tagName.lower())]=urllib.unquote(getText(node.childNodes))
             except:              except:
                 """nothing"""                  """nothing"""
   
Line 233  def setECHO_collectionInformation(self,t Line 294  def setECHO_collectionInformation(self,t
         coords=[]          coords=[]
         #coordinates of for rectangles          #coordinates of for rectangles
   
         #print "cs", coordstrs          
         if coordstrs:          if coordstrs:
             for coordstr in coordstrs:              for coordstr in coordstrs:
                 #print "cs", coordstr          
                 try:                  try:
                     temco=coordstr.split(",")                      temco=coordstr.split(",")
                 except:                  except:
                     temco=[]                      temco=[]
                 #temco.append(angle)          
                 coords.append(temco)                  coords.append(temco)
   
   
         self.coords=coords[0:]          self.coords=coords[0:]
                           
   class ECHO_copyright(Folder):
       """Copyright informationen"""
       meta_type="ECHO_copyright"
   
 class scientificClassification(SimpleItem,Persistent,Implicit):  
     """outdated will be deleeted in the next versions: subclass"""  
     security=ClassSecurityInfo()  
           
     def __init__(self,context,science,practice):  
         self.context=context  
         self.science=science  
         self.practice=practice  
         self.id="scientific_Classification"  
           
     security.declarePublic('get_context')  
     def get_context(self):  
         return self.context  
       
     security.declarePublic('get_science')  
     def get_science(self):  
         return self.science  
           
     security.declarePublic('get_practice')  
     def get_practice(self):  
         return self.practice  
           
       def __init__(self,id,title,copyrights):
           """init"""
           self.title=title
           self.id=id
           self.copyrights=copyrights[0:]
                                   
 class scientificInformation(Folder,Persistent,Implicit):      def getCopyrights(self):
     """outdated will be deleted in the next versions: subclass scientificInformation"""          """return coyprights"""
     security=ClassSecurityInfo()          return self.copyrights
               
       manage_options = Folder.manage_options+(
           {'label':'Main Config','action':'ECHO_copyright_configForm'},
           )
   
       def ECHO_copyright_configForm(self):
           """change form"""
           pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_copyright').__of__(self)
           pt.content_type="text/html"
           return pt()
   
       def ECHO_copyright_config(self,title,RESPONSE):
           """change"""
           self.title=title
           self.copyrights=[]
           self.copyrights=getCopyrightsFromForm(self.REQUEST.form)[0:]
   
           if RESPONSE is not None:
               RESPONSE.redirect('manage_main')
           
           
   def manage_addECHO_copyrightForm(self):
       """Form for adding"""
       pt=PageTemplateFile('Products/ECHO_content/zpt/AddECHO_copyright.zpt').__of__(self)
       return pt()
           
     def __init__(self,source_type,period):  def manage_addECHO_copyright(self, id,title,RESPONSE=None):
       """add the copyright"""
   
         self.id="scientific_Information"      meta_type="ECHO_copyright"
         self.source_type=source_type  
         self.period=period  
                   
       #first generate copyrights as list of tripels (mediaType,partner,copyrightType)
   
   
     security.declarePublic('get_source_type')  
     def get_source_type(self):  
         return self.source_type  
           
     security.declarePublic('get_period')      self._setObject(id, ECHO_copyright(id, title,getCopyrightsFromForm(self.REQUEST.form)))
     def get_period(self):  
         return self.period      if RESPONSE is not None:
           RESPONSE.redirect('manage_main')
   
 class ECHO_layoutTemplate(ZopePageTemplate):  class ECHO_layoutTemplate(ZopePageTemplate):
     """Create a layout Template for different purposes"""      """Create a layout Template for different purposes"""
Line 361  def manage_addECHO_layoutTemplate(self, Line 431  def manage_addECHO_layoutTemplate(self,
     REQUEST.RESPONSE.redirect(u+'/manage_main')      REQUEST.RESPONSE.redirect(u+'/manage_main')
     return ''      return ''
   
 class ECHO_resource(Folder):  class ECHO_resource(Folder,Persistent):
     """ECHO Ressource"""      """ECHO Ressource"""
     meta_type='ECHO_resource'      meta_type='ECHO_resource'
   
     viewClassificationList=viewClassificationListMaster      viewClassificationList=viewClassificationListMaster
   
     getSubCols = ECHO_helpers.getSubCols      getSubCols = ECHO_helpers.getSubCols
   
       
     def getTitle(self):      def getTitle(self):
     """title"""      """title"""
     return self.title.encode('utf-8')       return self.title.encode('utf-8') 
Line 387  class ECHO_resource(Folder): Line 459  class ECHO_resource(Folder):
             return ""              return ""
   
     def getFullTextXML(self,noredirect=None):      def getFullTextXML(self,noredirect=None):
         """getFullTextXML"""          """getFullTextXML; gives the FullText as an XML Document, and <error></error> if somthing goes wrong."""
         try:          try:
             fh=urllib.urlopen(self.metalink)              fh=urllib.urlopen(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)
               self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml')
             if not noredirect:              if not noredirect:
                 self.REQUEST.RESPONSE.redirect(texturl)                  self.REQUEST.RESPONSE.redirect(texturl)
             else:              else:
                 return texturl                  return texturl
         except:          except:
             return None  
               if not noredirect:
                   self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml')
                   self.REQUEST.RESPONSE.write("<error>no fulltext available</error>")
               else:
                   return "<error>no fulltext available</error>"
   
       def getCopyright(self):
           """gib link auf copyright notiz aus"""
           if hasattr(self,'copyrightType') and hasattr(self.copyrightTypes,self.copyrightType):
               obj=getattr(self.copyrightTypes,self.copyrightType)
           else:
               obj=getattr(self.copyrightTypes,'generic')
   
           label=obj.label
           link="copyrightTypes/"+obj.getId()+'/copyright.html'
           
           return """<a target="_blank" href="%s">%s</a>"""%(link,label)
           
     def getCredits(self):      def getCredits(self):
         """Ausgabe der credits"""          """Ausgabe der credits"""
Line 408  class ECHO_resource(Folder): Line 498  class ECHO_resource(Folder):
         else:          else:
             return []              return []
           
     def __init__(self,id,link,metalink,title,label,description,contentType,responsible,credits,weight,coords):      def __init__(self,id,link,metalink,resourceID,title,label,description,contentType,renderingType,copyrightType,responsible,credits,weight,coords):
   
         self.id = id          self.id = id
         """Festlegen der ID"""          """Festlegen der ID"""
Line 421  class ECHO_resource(Folder): Line 511  class ECHO_resource(Folder):
         self.credits=toList(credits)          self.credits=toList(credits)
         self.description=description          self.description=description
         self.contentType=contentType          self.contentType=contentType
       self.copyrightType=copyrightType
       self.renderingType=renderingType
         self.responsible=responsible          self.responsible=responsible
           self.resourceID=resourceID
                   
         if coords:          if coords:
             coordsnew=[ string.split(x,",") for x in coords]              coordsnew=[ string.split(x,",") for x in coords]
Line 500  class ECHO_resource(Folder): Line 593  class ECHO_resource(Folder):
         for data in self.metadata:          for data in self.metadata:
             data_neu=re.sub('-','_',data)              data_neu=re.sub('-','_',data)
             self.metaDataHash[data_neu]=getattr(self,data)              self.metaDataHash[data_neu]=getattr(self,data)
             #print data_neu, getattr(self,data)  
         #print self.metaDataHash,self.metadata  
           
         pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_resource_metadata.zpt').__of__(self)          pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_resource_metadata.zpt').__of__(self)
         return pt()          return pt()
Line 554  class ECHO_resource(Folder): Line 646  class ECHO_resource(Folder):
             RESPONSE.redirect('manage_main')              RESPONSE.redirect('manage_main')
   
   
       def changeECHO_resource_metadata_local(self,RESPONSE=None):
           """change metadata"""
           tags=self.findTagsFromMapping(self.contentType)
           for field in tags[1]:
               self.metaDataHash[self.getFieldTag(tags,field)]=self.REQUEST.form[self.getFieldTag(tags,field)]
               
   
                   
           if RESPONSE is not None:
               RESPONSE.redirect('manage_main')
   
     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(self.contentType)
Line 571  class ECHO_resource(Folder): Line 674  class ECHO_resource(Folder):
             RESPONSE.redirect('manage_main')              RESPONSE.redirect('manage_main')
   
   
       def getMDValue(self,fieldName):
           return self.metaDataHash.get(fieldName,'!!NOT USED HERE in Type: %s'%self.contentType)
                        
     def newMetaXML(self):      def newMetaXML(self):
         """new index.meta"""          """new index.meta"""
         self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml')          self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml')
         return writeMetadata(self.metalink,self.OSAS_meta)          return writeMetadata(self.metalink,self.OSAS_meta)
   
           
       def getMetaDataXML(self):
           """prints out metadata as stored in the echo environment, format is the index.meta format"""
           self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml')
           return writeMetadata(self.metalink,self.metaDataHash)
   
     def changeECHO_resource(self,metalink,link,title,label,description,contentType,responsible,weight,viewClassification="",coords=None,credits=None,RESPONSE=None):      def changeECHO_resource(self,metalink,link,title,label,description,contentType,responsible,weight,viewClassification="",coords=None,credits=None,RESPONSE=None):
         """Änderung der Properties"""          """Änderung der Properties"""
                   
Line 597  class ECHO_resource(Folder): Line 708  class ECHO_resource(Folder):
                           
     manage_options = Folder.manage_options+(      manage_options = Folder.manage_options+(
         {'label':'Main Config','action':'ECHO_resource_config_main'},          {'label':'Main Config','action':'ECHO_resource_config_main'},
     {'label':'Change Credits & Copyright','action':'ECHO_resource_config_credits'},  
     {'label':'Change Metadata','action':'ECHO_resource_config_metadata'},      {'label':'Change Metadata','action':'ECHO_resource_config_metadata'},
     {'label':'Change Coords','action':'ECHO_resource_config_coords'},      {'label':'Change Coords','action':'ECHO_resource_config_coords'},
     {'label':'Add coords','action':'ECHO_graphicEntry'},      {'label':'Add coords','action':'ECHO_graphicEntry'},
Line 667  class ECHO_resource(Folder): Line 777  class ECHO_resource(Folder):
                   
     def getFieldValue(self,field):      def getFieldValue(self,field):
         """get value"""          """get value"""
     #print field      
         try:          try:
           
             ret=self.metaDataHash[field]              ret=self.metaDataHash[field]
Line 678  class ECHO_resource(Folder): Line 788  class ECHO_resource(Folder):
         except:          except:
             return None              return None
   
       def getMetaDataHash(self):
           """md hash"""
           return self.metaDataHash
       
       def setFieldValue(self,field,value):
           """get value"""
       
       if not hasattr(self,'metaDataHash'):
           setattr(self,'metaDataHash',{})
       self.metaDataHash[field]=value[0:]
       
   
   
     def findLabelsFromMapping(self,referenceType):      def findLabelsFromMapping(self,referenceType):
         """gib hash mit label -> generic zurueck"""          """gib hash mit label -> generic zurueck"""
         self.referencetypes=self.ZopeFind(self.standardMD)      #return {},[]
     #print "RT",referenceType  
           temp=self.ZopeFind(self.standardMD)
   
       if referenceType=="":
           referenceType="book"
       
           
         bibdata={}          bibdata={}
         retdata={}          retdata={}
       fields=[]
         fieldlist=self.standardMD.fieldList          fieldlist=self.standardMD.fieldList
                   
     for referenceTypeF in self.referencetypes:      for referenceTypeF in self.referencetypes:
         #print referenceTypeF[1].title,referenceType      
         if referenceTypeF[1].title == referenceType:          if referenceTypeF[1].title.lower() == referenceType.lower():
             #print "OK"  
               try:
             bibdata[referenceTypeF[1].title]=referenceTypeF[1].fields              bibdata[referenceTypeF[1].title]=referenceTypeF[1].fields
                   referenceType=referenceTypeF[1].title
               except:
                   bibdata[referenceType]=referenceTypeF[1].fields
           
   
             bibdata['data']=referenceTypeF[1]              bibdata['data']=referenceTypeF[1]
             self.fields=bibdata[referenceType]              fields=bibdata[referenceType]
                         for field in fieldlist:                          for field in fieldlist:
                             retdata[field]=referenceTypeF[1].getValue(field)[1]                              retdata[field]=referenceTypeF[1].getValue(field)[1]
     #print retdata,fieldlist  
         return retdata,fieldlist          return retdata,fieldlist,temp,fields
   
     def findTagsFromMapping(self,referenceType):      def findTagsFromMapping(self,referenceType):
         """gib hash mit label -> generic zurueck"""          """gib hash mit label -> generic zurueck"""
         self.referencetypes=self.ZopeFind(self.standardMD)      
   
       if referenceType=="":
           referenceType="book"
       
       temp =  self.ZopeFind(self.standardMD)[0:]
   
       
       #self.referencetypes=temp[0:]
       
       
       
   
           
           
         bibdata={}          bibdata={}
         retdata={}          retdata={}
         fieldlist=self.standardMD.fieldList          fieldlist=self.standardMD.fieldList
                   
     for referenceTypeF in self.referencetypes:      for referenceTypeF in temp:
           
         if referenceTypeF[1].title == referenceType:           if referenceTypeF[1].title.lower() == referenceType.lower(): 
               try:
             bibdata[referenceTypeF[1].title]=referenceTypeF[1].fields              bibdata[referenceTypeF[1].title]=referenceTypeF[1].fields
                   referenceType=referenceTypeF[1].title
               except:
                   bibdata[referenceType]=referenceTypeF[1].fields
             bibdata['data']=referenceTypeF[1]              bibdata['data']=referenceTypeF[1]
             self.fields=bibdata[referenceType]              fields=bibdata[referenceType]
                         for field in fieldlist:                          for field in fieldlist:
                             retdata[field]=referenceTypeF[1].getValue(field)[0]                              retdata[field]=referenceTypeF[1].getValue(field)[0]
           
         return retdata,fieldlist          return retdata,fieldlist,temp,fields
   
       
   
       def copyIndex_meta2echo_resource(self,RESPONSE=None):
           """copy MD von Index_meta to the echo_resource"""
   
           (metadict, error)=readMetadata(self.metalink)
           
           self.metaDataHash={}
           if not error=="": #Fehler beim Auslesen des Metafiles
               return "ERROR:",error
           fields=self.findTagsFromMapping(self.contentType)
           
           #fields=self.findLabelsFromMapping(self.contentType)
           for field in fields[1]:
           
               if self.isDefinedInThisSet(fields,field):
                   #print urllib.unquote(metadict.get(self.getFieldTag(fields,field),''))
                   self.setFieldValue(self.getFieldTag(fields,field),metadict.get(self.getFieldTag(fields,field),''))
   
           
           
           if RESPONSE:
               return RESPONSE.redirect('manage_main')
                           
     def ECHO_getResourceMD(self,template="yes"):      def ECHO_getResourceMD(self,template="yes"):
         """Einlesen der Metadaten und Anlegen dieser Metadaten als Informationen zur Resource"""          """Einlesen der Metadaten und Anlegen dieser Metadaten als Informationen zur Resource"""
Line 732  class ECHO_resource(Folder): Line 904  class ECHO_resource(Folder):
         return "ERROR:",error          return "ERROR:",error
           
   
     if not (metadict['bib_type']==self.contentType):      if not (metadict['bib_type'].lower()==self.contentType.lower()):
         self.REQUEST.SESSION['contentStorage']=metadict['bib_type']          self.REQUEST.SESSION['contentStorage']=metadict['bib_type']
         self.REQUEST.SESSION['contentZope']=self.contentType          self.REQUEST.SESSION['contentZope']=self.contentType
   
Line 740  class ECHO_resource(Folder): Line 912  class ECHO_resource(Folder):
                   
         self.REQUEST.SESSION['metadict']=metadict          self.REQUEST.SESSION['metadict']=metadict
   
     self.REQUEST.SESSION['diffs']=checkDiffs(self,metadict)      
       
       self.REQUEST.SESSION['diffs']=checkDiffs(self,self.REQUEST.SESSION['metadict'])
       
   
                   
         if template=="yes":          if template=="yes":
Line 750  class ECHO_resource(Folder): Line 925  class ECHO_resource(Folder):
   
           
           
       
     def ECHO_getMD(self,item):      def ECHO_getMD(self,item):
         """Ausgabe der MD"""          """Ausgabe der MD"""
         return getattr(self,item)          return getattr(self,item)
Line 759  class ECHO_resource(Folder): Line 935  class ECHO_resource(Folder):
                   
         return self.REQUEST.RESPONSE.redirect(self.link)          return self.REQUEST.RESPONSE.redirect(self.link)
   
       def startpage_html(self):
           """prints out a startpage for a resource for use e.g. in the BVE"""
   
           # suche ob startpage.html in dem Ordner vorhanden ist, dann wir diese angezeigt
   
           sp=self.ZopeFind(self,obj_ids=['startpage.html'])
   
           if sp:
               return sp[1]()
   
               #prüfen ob irgendwo ein template
           if hasattr(self,'startpage_index_template'): 
               return self.startpage_index_template()
   
           #generisches template ausgeben
           
           pt=PageTemplateFile('Products/ECHO_content/zpt/ECHO_startpage_index_template_standard.zpt').__of__(self)
           pt.content_type="text/html"
           return pt()
   
       def toc_html(self):
           
           sp=self.ZopeFind(self,obj_ids=['toc.html'])
               
           if sp:
               return sp[0][1]()
   
   
               
     def generate_label(self):      def generate_label(self):
         """Erzeugt_standard_Label aus Template"""          """Erzeugt_standard_Label aus Template"""
         pt=getattr(self,"label_template_"+self.bib_type)          pt=getattr(self,"label_template_"+self.bib_type)
   
         return pt()          return pt()
   
       def generate_title(self,RESPONSE=None):
           """Erzeugt_standard_Label aus Template"""
           pt=getattr(self,"label_template_"+self.contentType)
   
       self.title=pt()
       
           return pt()
   
 def manage_addECHO_resourceForm(self):  def manage_addECHO_resourceForm(self):
         """Form for adding a ressource"""          """Form for adding a ressource"""
         pt=PageTemplateFile('Products/ECHO_content/zpt/AddECHO_resourceForm.zpt').__of__(self)          pt=PageTemplateFile('Products/ECHO_content/zpt/AddECHO_resourceForm.zpt').__of__(self)
Line 772  def manage_addECHO_resourceForm(self): Line 985  def manage_addECHO_resourceForm(self):
   
   
   
 def manage_addECHO_resource(self,id,title,label,description,contentType,responsible,link,metalink,weight,credits=None,coords=None,RESPONSE=None):  def manage_addECHO_resource(self,id,title,label,description,responsible,link,metalink,weight,copyrightType=None,resourceID=None,contentType=None,renderingType=None,credits=None,coords=None,RESPONSE=None):
     """addaresource"""      """addaresource"""
   
     newObj=ECHO_resource(id,link,metalink,title,label,description,contentType,responsible,credits,weight,coords)      newObj=ECHO_resource(id,link,metalink,resourceID,title,label,description,contentType,renderingType,copyrightType,responsible,credits,weight,coords)
   
     self._setObject(id,newObj)      self._setObject(id,newObj)
   
Line 824  class ECHO_externalLink(Folder): Line 1037  class ECHO_externalLink(Folder):
         if not hasattr(self,'coords'):          if not hasattr(self,'coords'):
                           
             self.coords=['']              self.coords=['']
             #print "G",self.coords  
   
         pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_externalLink.zpt').__of__(self)          pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_externalLink.zpt').__of__(self)
         return pt()          return pt()
Line 850  class ECHO_externalLink(Folder): Line 1063  class ECHO_externalLink(Folder):
         {'label':'Main Config','action':'ECHO_externalLink_config'},          {'label':'Main Config','action':'ECHO_externalLink_config'},
         )          )
   
     def getCredits(self):  
         """Ausgabe der credits"""  
         if self.credits:  
             return self.credits  
         else:  
             return []  
                   
     def index_html(self):      def index_html(self):
         """standard page"""          """standard page"""
Line 911  def manage_addECHO_link(self,id,title,la Line 1118  def manage_addECHO_link(self,id,title,la
   
 class ECHO_collection(Folder, Persistent, Implicit):  class ECHO_collection(Folder, Persistent, Implicit):
     """ECHO Collection"""      """ECHO Collection"""
   
     security=ClassSecurityInfo()      security=ClassSecurityInfo()
     meta_type='ECHO_collection'      meta_type='ECHO_collection'
     viewClassificationList=viewClassificationListMaster      viewClassificationList=viewClassificationListMaster
     displayTypes=displayTypes      displayTypes=displayTypes
   
       def getPartnerCopyright(self,name,sonst="generic"):
           """gibt generisches copyright eines partners aus, sonst behalte jetzige einsteillung"""
           #print "hi",name,sonst
           #print getattr(self.partners,name).copyrightType
           try:
               partner=getattr(self.partners,name)
               return partner.copyrightType
           except:
               print "error"
               return sonst
   
       def partnerSelector_HTML(self,selected=None):
            """give type selector"""
        if not selected:
            retStr="<option selected>\n"
        else:
            retStr="<option>\n"
            
        try: # erste version copyrightTypes exists
            for partner in self.credits:
                if selected and (partner==selected):
                    retStr+="""<option selected value="%s">%s\n"""%(partner,partner)
                else:                
                    retStr+="""<option value="%s">%s\n"""%(partner,partner)
        except:
            """nothing"""
        return retStr
    
     def getViewClassification(self):      def getViewClassification(self):
         if hasattr(self,'viewClassification'):          if hasattr(self,'viewClassification'):
             return self.viewClassification              return self.viewClassification
Line 1000  class ECHO_collection(Folder, Persistent Line 1236  class ECHO_collection(Folder, Persistent
         return ret+"<collection>"+getCollection(self)+"</collection>"          return ret+"<collection>"+getCollection(self)+"</collection>"
           
     def createJavaScript(self):      def createJavaScript(self):
         """CreateJava"""          """OLD CreateJava"""
         ret=javaScriptMain          ret=javaScriptMain
   
         dynamical="\n"          dynamical="\n"
Line 1014  class ECHO_collection(Folder, Persistent Line 1250  class ECHO_collection(Folder, Persistent
         return ret          return ret
   
     def createJSAreas(self):      def createJSAreas(self):
         """new version of createJavaScript"""          """create area calls for JavaScript"""
         dynamical="\n"          dynamical="\n"
         for ob in self.getGraphicCoords():          for ob in self.getGraphicCoords():
         if ob[5] == "area":          if ob[5] == "area":
Line 1024  class ECHO_collection(Folder, Persistent Line 1260  class ECHO_collection(Folder, Persistent
         return dynamical          return dynamical
   
     def createMapHead(self):      def createMapHead(self):
         """generate divs"""          """create javascript include and script tags for head"""
         pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/ECHO_content_map_frag_js')).__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/ECHO_content_map_frag_js')).__of__(self)
         return pt()          return pt()
                   
       def createMapImg(self):
       """generate img-tag for map"""
       bt = BrowserCheck(self)
       tag = ""
       src = self.REQUEST['URL1'] + "/overview"
       if bt.isN4:
           tag += '<ilayer id="overview" visibility="show"><img src="%s"></ilayer>'%src
       else:
           tag += '<img id="overview" src="%s" />'%src
       return tag
           
     def createMapLink(self, ob, text=None):      def createMapLink(self, ob, text=None):
     """generate map link"""      """generate map link"""
       bt = BrowserCheck(self)
     id = ob[1]      id = ob[1]
     link = ob[1]      link = ob[1]
     if text == None:      if text == None:
         text = ob[2]          text = ob[2]
       tag = ""
       if bt.isN4:
           tag += '<ilayer id="a.%s"><a onmouseover="highlightPair(\'%s\', true)" onmouseout="highlightPair(\'%s\', false)" href="%s" target="_blank"'%(id,id,id,link)
           tag += ">" + text + "</a></ilayer>"
       else:
     tag = '<a id="a.%s" onmouseover="highlightPair(\'%s\', true)" onmouseout="highlightPair(\'%s\', false)" href="%s" target="_blank"'%(id,id,id,link)      tag = '<a id="a.%s" onmouseover="highlightPair(\'%s\', true)" onmouseout="highlightPair(\'%s\', false)" href="%s" target="_blank"'%(id,id,id,link)
     if ob[3].contentType == 'text-popup':      if ob[3].contentType == 'text-popup':
         tag += ' title="%s"'%ob[3].description          tag += ' title="%s"'%ob[3].description
Line 1046  class ECHO_collection(Folder, Persistent Line 1299  class ECHO_collection(Folder, Persistent
     link = ob[1]      link = ob[1]
     vtype = ob[5]      vtype = ob[5]
     ctype = ob[3].contentType      ctype = ob[3].contentType
       bt = BrowserCheck(self)
       tag = ""
           
       if bt.isN4:
           tag += '<layer id="i.%s" onmouseover="highlightPair(\'%s\', true)" onmouseout="highlightPair(\'%s\', false)">'%(id,id,id)
           if vtype == "view point":
               rot = ob[4][4]
           tag += '<a href="%s"><img border="0" src="%s&rot=%s" /></a>'%(link,arrowsrc,rot)
           else:
           tag += '<a href="%s"><img border="0" width="1000" height="1000" src="trans_img"'%(link)
           if ctype == "text-popup":
               desc = ob[3].description
               tag += ' alt="%s"'%desc
           tag += ' /></a>'
           tag += '</layer>'
       else:
     tag = '<a id="b.%s" onmouseover="highlightPair(\'%s\', true)" onmouseout="highlightPair(\'%s\', false)" href="%s" target="_blank">'%(id,id,id,link)      tag = '<a id="b.%s" onmouseover="highlightPair(\'%s\', true)" onmouseout="highlightPair(\'%s\', false)" href="%s" target="_blank">'%(id,id,id,link)
     if vtype == "view point":      if vtype == "view point":
         rot = ob[4][4]          rot = ob[4][4]
         tag += '<img id="i.%s" src="%s&rot=%s" border="1" style="position:absolute; top:-100px; left:-100px; border-style:none" />'%(id,arrowsrc,rot)          if bt.isIEWin and bt.versIE > 5:
               tag += '<span id="i.%s" style="position:absolute; top:-100px; left:-100px; border-style:none; border-width=1px; filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'%s&rot=%s\');"><img style="visibility:hidden" src="%s&rot=%s" /></span>'%(id,arrowsrc,rot,arrowsrc,rot)
           else:
               tag += '<img id="i.%s" src="%s&rot=%s" border="1" style="position:absolute; top:-100px; left:-100px; border-style:none;" />'%(id,arrowsrc,rot)
     else:      else:
         tag += '<span id="i.%s" style="position:absolute; top:-100px; left:-100px; border-style:none"'%(id)          if bt.isIEWin:
               tag += '<div id="i.%s" style="position:absolute; top:-100px; left:-100px;background:url(area_img)"'%(id)
           else:
               tag += '<div id="i.%s" style="position:absolute; top:-100px; left:-100px;"'%(id)
         if ctype == "text-popup":          if ctype == "text-popup":
         desc = ob[3].description          desc = ob[3].description
         tag += ' title="%s"'%desc          tag += ' title="%s"'%desc
         tag += ' />'          tag += '> </div>'
     tag += '</a>'      tag += '</a>'
     return tag      return tag
   
Line 1100  class ECHO_collection(Folder, Persistent Line 1374  class ECHO_collection(Folder, Persistent
         for entry in entries:          for entry in entries:
         if entry[1].meta_type == 'ECHO_resource':          if entry[1].meta_type == 'ECHO_resource':
             entry[1].ECHO_getResourceMD(template="no")              entry[1].ECHO_getResourceMD(template="no")
             #print "rerender",entry[1].getId()  
         else:          else:
            self.ECHO_rerenderLinksMD(entry[1])             self.ECHO_rerenderLinksMD(entry[1])
   
Line 1122  class ECHO_collection(Folder, Persistent Line 1396  class ECHO_collection(Folder, Persistent
             return []              return []
                   
     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=""):
         #print "CO",coords  
   
         self.id = id          self.id = id
         """Festlegen der ID"""          """Festlegen der ID"""
Line 1233  class ECHO_collection(Folder, Persistent Line 1507  class ECHO_collection(Folder, Persistent
         if RESPONSE is not None:          if RESPONSE is not None:
             RESPONSE.redirect('manage_main')              RESPONSE.redirect('manage_main')
                           
     security.declarePublic('index_html')  
   
   
     def showOverview(self):      def showOverview(self):
         """overview"""          """overview"""
Line 1243  class ECHO_collection(Folder, Persistent Line 1515  class ECHO_collection(Folder, Persistent
         pt=PageTemplateFile('Products/ECHO_content/zpt/ECHO_content_overview.zpt').__of__(self)          pt=PageTemplateFile('Products/ECHO_content/zpt/ECHO_content_overview.zpt').__of__(self)
         return pt()          return pt()
   
       security.declareProtected('View','index_html')
           
     def index_html(self):      def index_html(self):
         """standard page"""          """standard page"""
Line 1274  class ECHO_collection(Folder, Persistent Line 1547  class ECHO_collection(Folder, Persistent
   
     def area_img(self):      def area_img(self):
         """area image"""          """area image"""
       bt = BrowserCheck(self)
       if bt.isIE or bt.isN4:
         return sendFile(self, 'images/red.gif', 'image/gif')          return sendFile(self, 'images/red.gif', 'image/gif')
       else:
           return sendFile(self, 'images/reda.png', 'image/png')
   
       def trans_img(self):
           """empty image"""
           return sendFile(self, 'images/trans.gif', 'image/gif')
   
     def hl_lib_js(self):      def hl_lib_js(self):
         """javascript"""          """javascript"""
Line 1317  class ECHO_collection(Folder, Persistent Line 1598  class ECHO_collection(Folder, Persistent
   
     getSubCols = ECHO_helpers.getSubCols      getSubCols = ECHO_helpers.getSubCols
             
                   Globals.InitializeClass(ECHO_collection)
       
           
 def manage_addECHO_collectionForm(self):  def manage_addECHO_collectionForm(self):
         """Add collection form"""          """Add collection form"""
Line 1339  def manage_addECHO_collection(self,id,ti Line 1619  def manage_addECHO_collection(self,id,ti
   
 class ECHO_group(ECHO_collection):  class ECHO_group(ECHO_collection):
     """ECHO Gruppe"""      """ECHO Gruppe"""
       security=ClassSecurityInfo()
     meta_type="ECHO_group"      meta_type="ECHO_group"
   
     manage_options = Folder.manage_options+(      manage_options = Folder.manage_options+(
Line 1347  class ECHO_group(ECHO_collection): Line 1628  class ECHO_group(ECHO_collection):
         {'label':'Graphics','action':'ECHO_graphicEntry'},          {'label':'Graphics','action':'ECHO_graphicEntry'},
         )          )
   
       security.declareProtected('View','index_html')
     def index_html(self):      def index_html(self):
         """standard page"""          """standard page"""
         displayedObjects=self.ZopeFind(self,obj_metatypes=displayTypes)          displayedObjects=self.ZopeFind(self,obj_metatypes=displayTypes)
Line 1440  def manage_addECHO_group(self,id,title,l Line 1722  def manage_addECHO_group(self,id,title,l
     if RESPONSE is not None:      if RESPONSE is not None:
         RESPONSE.redirect('manage_main')          RESPONSE.redirect('manage_main')
   
   Globals.InitializeClass(ECHO_group)
   
           
   class ECHO_userFolder(UserFolder):
       """User folder for Intranet"""
       _domain_auth_mode=1 # Identification via domain
       meta_type="ECHO_userFolder"
       
       def authenticate(self, name, password, request):
           emergency = self._emergency_user
           if name is None:
               return None
           if emergency and name==emergency.getUserName():
               user = emergency
           else:
               user = self.getUser(name)
           if user is not None and user.authenticate(password, request):
               return user
           else:
               return None
   
       def domainSpecMatch(self,spec, request):
           host=''
           addr=''
   
           # Fast exit for the match-all case
           if len(spec) == 1 and spec[0] == '*':
           return 1
   
           if request.has_key('REMOTE_HOST'):
           host=request['REMOTE_HOST']
   
           if request.has_key('REMOTE_ADDR'):
           addr=request['REMOTE_ADDR']
   
           if request.has_key('HTTP_X_FORWARDED_FOR'):
           addr=request['HTTP_X_FORWARDED_FOR']
   
           
           if not host and not addr:
           return 0
   
           if not host:
           try:    host=socket.gethostbyaddr(addr)[0]
           except: pass
           if not addr:
           try:    addr=socket.gethostbyname(host)
           except: pass
   
   
           _host=host.split('.')
           _addr=addr.split('.')
           _hlen=len(_host)
           _alen=len(_addr)
   
           for ob in spec:
           sz=len(ob)
           _ob=ob.split('.')
           _sz=len(_ob)
   
           mo = addr_match(ob)
           if mo is not None:
               if mo.end(0)==sz:
               fail=0
               for i in range(_sz):
                   a=_addr[i]
                   o=_ob[i]
                   if (o != a) and (o != '*'):
                   fail=1
                   break
               if fail:
                   continue
               return 1
   
           mo = host_match(ob)
           if mo is not None:
               if mo.end(0)==sz:
               if _hlen < _sz:
                   continue
               elif _hlen > _sz:
                   _item=_host[-_sz:]
               else:
                   _item=_host
               fail=0
               for i in range(_sz):
                   h=_item[i]
                   o=_ob[i]
                   if (o != h) and (o != '*'):
                   fail=1
                   break
               if fail:
                   continue
               return 1
           return 0
   
   Globals.default__class_init__(ECHO_userFolder)
   
   
   
   def manage_addECHO_userFolder(self,dtself=None,REQUEST=None,**ignored):
       """add a user folder """
       f=ECHO_userFolder()
       self=self.this()
       try:    self._setObject('acl_users', f)
       except: return MessageDialog(
                      title  ='Item Exists',
                      message='This object already contains a User Folder',
                      action ='%s/manage_main' % REQUEST['URL1'])
       self.__allow_groups__=f
       if REQUEST is not None:
           REQUEST['RESPONSE'].redirect(self.absolute_url()+'/manage_main')
   
   def manage_addECHO_userFolderForm(self):
       """add a user folder form"""
       return manage_addECHO_userFolder(self)
   
 class ECHO_root(Folder,Persistent,Implicit):  class ECHO_root(Folder,Persistent,Implicit):
     """ECHO Root Folder"""      """ECHO Root Folder"""
   
       security=ClassSecurityInfo()
       
     meta_type="ECHO_root"      meta_type="ECHO_root"
   
           
       def getBibTag(self,tag,content):
           """get field tag für index-meta-generation"""
           if not content or content=="":
               return ""
           ret="<%s>"%tag
           #ret+=urllib.quote(content)
           ret+=content
   
           ret+="</%s>"%tag
           return ret
   
       def getValueFromClass(self,field,found):
           """retattribute falss existing"""
           try:
               
               return getattr(found,field).decode('ascii','ignore')
           except:
               return ""
       
     def getImageTag(self):      def getImageTag(self):
         """needed by main_template"""          """needed by main_template"""
         return ""          return ""
Line 1524  class ECHO_root(Folder,Persistent,Implic Line 1942  class ECHO_root(Folder,Persistent,Implic
      else:       else:
          retStr="<option>\n"           retStr="<option>\n"
                     
        
      try: # erste version copyrightTypes exists       try: # erste version copyrightTypes exists
          for copyrightType in self.ZopeFind(self.copyrightTypes,obj_metatypes=["ECHO_copyrightType"]):           for copyrightType in self.ZopeFind(self.copyrightTypes,obj_metatypes=["ECHO_copyrightType"]):
              if selected and (copyrightType[0]==selected):               if selected and (copyrightType[0]==selected):
Line 1534  class ECHO_root(Folder,Persistent,Implic Line 1953  class ECHO_root(Folder,Persistent,Implic
          """nothing"""           """nothing"""
      return retStr       return retStr
   
       def partnerSelector_HTML(self,selected=None):
            """give type selector"""
        if not selected:
            retStr="<option selected>\n"
        else:
            retStr="<option>\n"
            
        try: # erste version copyrightTypes exists
            for copyrightType in self.ZopeFind(self.partners,obj_metatypes=["ECHO_partner"]):
                if selected and (copyrightType[0]==selected):
                    retStr+="""<option selected value="%s">%s\n"""%(copyrightType[0],copyrightType[0])
                else:                
                    retStr+="""<option value="%s">%s\n"""%(copyrightType[0],copyrightType[0])
        except:
            """nothing"""
        return retStr
    
       mediaTypes=['all','text','images','sound','video'] # konfigurierbar in neuer version über echoroot??
   
       def mediaTypeSelector_HTML(self,selected=None):
            """give type selector"""
        if not selected:
            retStr="<option selected>\n"
        else:
            retStr="<option>\n"
        
        try: # erste version mediatypesTypes exists
            for mediaType in self.mediaTypes:
                if selected and (mediaType in selected):
                    retStr+="""<option selected value="%s">%s\n"""%(mediaType,mediaType)
                else:                
                    retStr+="""<option value="%s">%s\n"""%(mediaType,mediaType)
        except:
            """nothing"""
        return retStr
   
                           
     def patchContentType(self,obj=None):      def patchContentType(self,obj=None):
         """austauschen content_type with contentType (patch bei umstieg von alter Version)"""          """austauschen content_type with contentType (patch bei umstieg von alter Version)"""
Line 1561  class ECHO_root(Folder,Persistent,Implic Line 2016  class ECHO_root(Folder,Persistent,Implic
     def checkIfArrow(obj):      def checkIfArrow(obj):
         if hasattr(obj,'coords'):          if hasattr(obj,'coords'):
             for coordtemp in obj.coords:              for coordtemp in obj.coords:
                 #print obj.title,len(coordtemp)  
                 if (len(coordtemp)>4) and not (coordtemp[4]==''):                  if (len(coordtemp)>4) and not (coordtemp[4]==''):
                     return 4                      return 4
             return None              return None
Line 1633  class ECHO_root(Folder,Persistent,Implic Line 2088  class ECHO_root(Folder,Persistent,Implic
                           
             for word in words:              for word in words:
                 strUrl=url%word                  strUrl=url%word
                 #print "str",strUrl  
                 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:
Line 1644  class ECHO_root(Folder,Persistent,Implic Line 2099  class ECHO_root(Folder,Persistent,Implic
     def link2html(self,str):      def link2html(self,str):
         """link2html fuer VLP muss hier noch raus"""          """link2html fuer VLP muss hier noch raus"""
         if str:          if str:
             #print str  
             str=re.sub("\&","&amp;",str)              str=re.sub("\&","&amp;",str)
             dom=xml.dom.minidom.parseString("<?xml version='1.0' ?><txt>"+str+"</txt>")              dom=xml.dom.minidom.parseString("<?xml version='1.0' ?><txt>"+str+"</txt>")
             links=dom.getElementsByTagName("link")              links=dom.getElementsByTagName("link")
                           
             #print "link",links  
             for link in links:              for link in links:
                 link.tagName="a"                  link.tagName="a"
                 ref=link.getAttribute("ref")                  ref=link.getAttribute("ref")
Line 1664  class ECHO_root(Folder,Persistent,Implic Line 2119  class ECHO_root(Folder,Persistent,Implic
         dbs={'vl_literature':'AND CD LIKE \'%lise%\'','vl_technology':'','vl_people':''}          dbs={'vl_literature':'AND CD LIKE \'%lise%\'','vl_technology':'','vl_people':''}
         res=None          res=None
         for db in dbs.keys():          for db in dbs.keys():
             #print ref,"select reference from %s where reference =\'%s\' %s"%(db,ref,dbs[db])  
   
             res=res or self.search(var=str("select reference from %s where reference =\'%s\' %s"%(db,ref,dbs[db])))              res=res or self.search(var=str("select reference from %s where reference =\'%s\' %s"%(db,ref,dbs[db])))
         return res          return res
Line 1673  class ECHO_root(Folder,Persistent,Implic Line 2127  class ECHO_root(Folder,Persistent,Implic
   
     def PgQuoteString(self,string):      def PgQuoteString(self,string):
         """Quote string"""          """Quote string"""
         #print "PG",string  
         return libpq.PgQuoteString(string)          return libpq.PgQuoteString(string)
                   
     def getPartners(self):      def getPartners(self):
Line 1791  class ECHO_root(Folder,Persistent,Implic Line 2245  class ECHO_root(Folder,Persistent,Implic
                 else:                  else:
                     ret+="""\n<resource echoLink="%s" viewerLink="%s"/>"""%(urllib.quote(echo_url,safe='/:?'),urllib.quote(viewer_url,safe='/:?'))                      ret+="""\n<resource echoLink="%s" viewerLink="%s"/>"""%(urllib.quote(echo_url,safe='/:?'),urllib.quote(viewer_url,safe='/:?'))
         ret +="""\n</index>"""          ret +="""\n</index>"""
         print ret          
                   
         self.REQUEST.RESPONSE.setHeader("Content-Type", "text/xml")          self.REQUEST.RESPONSE.setHeader("Content-Type", "text/xml")
         self.REQUEST.RESPONSE.write(ret)          self.REQUEST.RESPONSE.write(ret)
Line 1808  def manage_addECHO_rootForm(self): Line 2262  def manage_addECHO_rootForm(self):
         pt=PageTemplateFile('Products/ECHO_content/zpt/AddECHO_root.zpt').__of__(self)          pt=PageTemplateFile('Products/ECHO_content/zpt/AddECHO_root.zpt').__of__(self)
         return pt()          return pt()
     
   class ECHO_copyrightType(Folder):
       """copyright typ"""
   
       meta_type="ECHO_copyrightType"
       
       def __init__(self,id,title,label):
           """init"""
           self.id=id
           self.title=title
           self.label=label
   
       manage_options = Folder.manage_options+(
           {'label':'Main Config','action':'ECHO_copyrightType_config_mainForm'},
       )
   
       def ECHO_copyrightType_config_mainForm(self):
           """change form"""
           pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_copyrightType').__of__(self)
           pt.content_type="text/html"
           return pt()
   
       def ECHO_copyrightType_config_main(self,title,label,RESPONSE=None):
           """change"""
           self.title=title
           self.label=label
   
           if RESPONSE is not None:
               RESPONSE.redirect('manage_main')
   
   def manage_addECHO_copyrightTypeForm(self):
           """Form for adding a ressource"""
           pt=PageTemplateFile('Products/ECHO_content/zpt/AddECHO_copyrightTypeForm.zpt').__of__(self)
           return pt()
   
   
   def manage_addECHO_copyrightType(self,id,title,label,RESPONSE=None):
       """addaresource"""
   
       newObj=ECHO_copyrightType(id,title,label)
   
       self._setObject(id,newObj)
   
       if RESPONSE is not None:
           RESPONSE.redirect('manage_main')
    
   
    
 class ECHO_partner(Image,Persistent):  class ECHO_partner(Image,Persistent):
     """ECHO Partner"""      """ECHO Partner"""
   
     meta_type="ECHO_partner"      meta_type="ECHO_partner"
   
     def __init__(self, id, title,url, file, content_type='', precondition=''):      def __init__(self, id, title,url, file, copyrightType, person, email, country, content_type='', precondition=''):
         self.__name__=id          self.__name__=id
         self.title=title          self.title=title
         self.url=url          self.url=url
           self.person=person
           self.email=email
           self.country=country
         self.precondition=precondition          self.precondition=precondition
           self.copyrightType=copyrightType
         data, size = self._read_data(file)          data, size = self._read_data(file)
         content_type=self._get_content_type(file, data, id, content_type)          content_type=self._get_content_type(file, data, id, content_type)
         self.update_data(data, content_type, size)          self.update_data(data, content_type, size)
Line 1827  class ECHO_partner(Image,Persistent): Line 2331  class ECHO_partner(Image,Persistent):
         {'label':'Partner Information','action':'ECHO_partner_config'},          {'label':'Partner Information','action':'ECHO_partner_config'},
         )          )
   
     def changeECHO_partner(self,url,RESPONSE=None):      
       def changeECHO_partner(self,url,copyrightType,person, email, country, RESPONSE=None):
         """Change main information"""          """Change main information"""
         self.url=url          self.url=url
           self.person=person
           self.email=email
           self.country=country
           self.copyrightType=copyrightType
         if RESPONSE is not None:          if RESPONSE is not None:
             RESPONSE.redirect('manage_main')              RESPONSE.redirect('manage_main')
                           
Line 1848  manage_addECHO_partnerForm=DTMLFile('dtm Line 2357  manage_addECHO_partnerForm=DTMLFile('dtm
   
   
   
 def manage_addECHO_partner(self, id, file,url, title='', precondition='', content_type='',  def manage_addECHO_partner(self, id, file,url, person, email, country, title='', precondition='', content_type='',
                     REQUEST=None):                      REQUEST=None):
     """      """
     Add a new ECHO_partner object.      Add a new ECHO_partner object.
Line 1867  def manage_addECHO_partner(self, id, fil Line 2376  def manage_addECHO_partner(self, id, fil
     self=self.this()      self=self.this()
   
     # First, we create the image without data:      # First, we create the image without data:
     self._setObject(id, ECHO_partner(id,title,url,'',content_type, precondition))      self._setObject(id, ECHO_partner(id,title,url,'',person, email, country, content_type, precondition))
   
     # Now we "upload" the data.  By doing this in two steps, we      # Now we "upload" the data.  By doing this in two steps, we
     # can use a database trick to make the upload more efficient.      # can use a database trick to make the upload more efficient.

Removed from v.1.83  
changed lines
  Added in v.1.99


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