Diff for /ECHO_content/ECHO_collection.py between versions 1.88 and 1.115

version 1.88, 2004/05/24 18:48:23 version 1.115, 2004/06/17 10:03:20
Line 46  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(self,argv):
       medias={}
       partners={}
       copyrights={}
       
       copyrightsFinal=[]
       for arg in argv.keys():
           
           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 copyright[2]=='institution0000':
               copyrightsFinal.append((copyright[0],copyright[1],self.getPartnerCopyright(copyright[1],'')))
           else:
               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 79  def content_html(self,type): Line 122  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 166  def writeMetadata(url,metadict): Line 209  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 185  def writeMetadata(url,metadict): Line 228  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 216  def readMetadata(url): Line 264  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 228  def readMetadata(url): Line 276  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 253  def setECHO_collectionInformation(self,t Line 302  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 __init__(self,source_type,period):      def ECHO_copyright_config(self,title,RESPONSE=None):
           """change"""
           self.title=title
           self.copyrights=[]
           self.copyrights=getCopyrightsFromForm(self,self.REQUEST.form)[0:]
   
         self.id="scientific_Information"          if RESPONSE is not None:
         self.source_type=source_type              RESPONSE.redirect('manage_main')
         self.period=period  
                   
   
   def manage_addECHO_copyrightForm(self):
       """Form for adding"""
       pt=PageTemplateFile('Products/ECHO_content/zpt/AddECHO_copyright.zpt').__of__(self)
       return pt()
   
     security.declarePublic('get_source_type')  def manage_addECHO_copyright(self, id,title,RESPONSE=None):
     def get_source_type(self):      """add the copyright"""
         return self.source_type  
           
     security.declarePublic('get_period')      meta_type="ECHO_copyright"
     def get_period(self):      
         return self.period      #first generate copyrights as list of tripels (mediaType,partner,copyrightType)
       
           
   
       self._setObject(id, ECHO_copyright(id, title,getCopyrightsFromForm(self,self.REQUEST.form)))
   
       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 381  def manage_addECHO_layoutTemplate(self, Line 439  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 407  class ECHO_resource(Folder): Line 467  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 getCopyrightsHTML(self):
           """gib link auf copyright notiz aus"""
           
           if hasattr(self,'copyrightModell'):
               obj=self.copyrightModell
               
           else:
               return "ERROR"
           ret=[]
           
           for copyright in obj.getCopyrights():
               
               link="copyrightTypes/"+copyright[2]+'/copyright.html'
               
               try:
                   label=getattr(self.copyrightTypes,copyright[2]).label
                   ret.append(("""<a target="_blank" href="%s?partner=%s">%s</a>"""%(link,copyright[1],label),copyright[0],copyright[0],copyright[1],copyright[2]))
               except:
                   """nothing"""
               
           return ret
           
     def getCredits(self):      def getCredits(self):
         """Ausgabe der credits"""          """Ausgabe der credits"""
Line 428  class ECHO_resource(Folder): Line 516  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 441  class ECHO_resource(Folder): Line 529  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 520  class ECHO_resource(Folder): Line 611  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 574  class ECHO_resource(Folder): Line 664  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 591  class ECHO_resource(Folder): Line 692  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 617  class ECHO_resource(Folder): Line 726  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 687  class ECHO_resource(Folder): Line 795  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 698  class ECHO_resource(Folder): Line 806  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.lower() == referenceType.lower():          if referenceTypeF[1].title.lower() == referenceType.lower():
             #print "OK"  
             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 719  class ECHO_resource(Folder): Line 846  class ECHO_resource(Folder):
                   
   
             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.lower() == referenceType.lower():           if referenceTypeF[1].title.lower() == referenceType.lower(): 
             try:              try:
Line 743  class ECHO_resource(Folder): Line 882  class ECHO_resource(Folder):
             except:              except:
                 bibdata[referenceType]=referenceTypeF[1].fields                  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 770  class ECHO_resource(Folder): Line 930  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 780  class ECHO_resource(Folder): Line 943  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 789  class ECHO_resource(Folder): Line 953  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 802  def manage_addECHO_resourceForm(self): Line 1003  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 854  class ECHO_externalLink(Folder): Line 1055  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 880  class ECHO_externalLink(Folder): Line 1081  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 947  class ECHO_collection(Folder, Persistent Line 1142  class ECHO_collection(Folder, Persistent
     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 1169  class ECHO_collection(Folder, Persistent Line 1392  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()              entry[1].generate_title()
   
         else:          else:
            self.ECHO_rerenderLinksMD(entry[1])             self.ECHO_rerenderLinksMD(entry[1])
   
Line 1191  class ECHO_collection(Folder, Persistent Line 1415  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 1275  class ECHO_collection(Folder, Persistent Line 1499  class ECHO_collection(Folder, Persistent
         else:          else:
             return "#dddddd"              return "#dddddd"
                   
     def changeECHO_collection(self,title,label,description,contentType,responsible,weight,secondaryLink,secondaryLinkTitle,credits=None,sortfield="weight",coords=None,RESPONSE=None,imageTag="",bgcolour="",viewClassification=None):      def changeECHO_collection(self,title,label,description,contentType,responsible,weight,secondaryLink,secondaryLinkTitle,credits=None,sortfield="weight",coords=None,RESPONSE=None,imageTag="",bgcolour="",viewClassification=None,location=None):
         """Aenderung der Properties"""          """Aenderung der Properties"""
   
         self.secondaryLink=secondaryLink          self.secondaryLink=secondaryLink
Line 1283  class ECHO_collection(Folder, Persistent Line 1507  class ECHO_collection(Folder, Persistent
         self.imageTag=imageTag          self.imageTag=imageTag
     self.bgcolour=bgcolour      self.bgcolour=bgcolour
         self.viewClassification=viewClassification          self.viewClassification=viewClassification
           self.location=location
           
         if coords:          if coords:
             coordsnew=[ string.split(x,",") for x in coords]              coordsnew=[ string.split(x,",") for x in coords]
Line 1302  class ECHO_collection(Folder, Persistent Line 1527  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 1345  class ECHO_collection(Folder, Persistent Line 1568  class ECHO_collection(Folder, Persistent
     def area_img(self):      def area_img(self):
         """area image"""          """area image"""
     bt = BrowserCheck(self)      bt = BrowserCheck(self)
     if bt.isIEWin or bt.isN4:      if bt.isIE or bt.isN4:
         return sendFile(self, 'images/red.gif', 'image/gif')          return sendFile(self, 'images/red.gif', 'image/gif')
     else:      else:
         return sendFile(self, 'images/reda.png', 'image/png')          return sendFile(self, 'images/reda.png', 'image/png')
Line 1643  class ECHO_root(Folder,Persistent,Implic Line 1866  class ECHO_root(Folder,Persistent,Implic
     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 1713  class ECHO_root(Folder,Persistent,Implic Line 1955  class ECHO_root(Folder,Persistent,Implic
      return retStr       return retStr
   
   
     def copyrightTypeSelector_HTML(self,selected=None):      def copyrightTypeSelector_HTML(self,selected=None,first=None):
          """give type selector"""           """give type selector"""
   
        if not first:
      if not selected:       if not selected:
          retStr="<option selected>\n"           retStr="<option selected>\n"
      else:       else:
          retStr="<option>\n"           retStr="<option>\n"
        else:
            if not selected:
                retStr="""<option selected value="%s">%s\n"""%first
            else:
                retStr="""<option value="%s">%s\n"""%first
   
                     
      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"]):
Line 1730  class ECHO_root(Folder,Persistent,Implic Line 1980  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 1757  class ECHO_root(Folder,Persistent,Implic Line 2043  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 1829  class ECHO_root(Folder,Persistent,Implic Line 2115  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 1840  class ECHO_root(Folder,Persistent,Implic Line 2126  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' encoding='utf-8'?><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")
                 if self.checkRef(ref):                  if self.checkRef(ref):
                     link.setAttribute("href",self.aq_parent.absolute_url()+"/vlp_coll?id="+ref)                      link.setAttribute("href",self.aq_parent.absolute_url()+"/vlp_coll?id="+ref)
   
             return dom.toxml('utf-8')              newxml=dom.toxml('utf-8')
           match=re.sub(r'<\?xml version=\"1.0\" encoding=\"utf-8\"\?>\n<txt>','',newxml)
           match=re.sub(r'</txt>','',match)
           
           return match
                  
         return ""          return ""
   
       def xml2html(self,str):
           """link2html fuer VLP muss hier noch raus"""
           if str:
   
               str=re.sub("\&","&amp;",str)
               dom=xml.dom.minidom.parseString(str)
               links=dom.getElementsByTagName("link")
               
   
               for link in links:
                   link.tagName="a"
                   ref=link.getAttribute("ref")
                   if self.checkRef(ref):
                       link.setAttribute("href",self.aq_parent.absolute_url()+"/vlp_coll?id="+ref)
   
               return dom.toxml('utf-8')
           return ""
   
     def checkRef(self,ref):      def checkRef(self,ref):
         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 1869  class ECHO_root(Folder,Persistent,Implic Line 2176  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 1987  class ECHO_root(Folder,Persistent,Implic Line 2294  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.write(ret)
   
   
       def getMetaDatasXML(self,viewerType=None,filter=None):
           """gebe all ressourcen aus"""
           ret="""<?xml version="1.0" ?>
                    <index>"""
           for resource in self.ZopeFind(self,obj_metatypes=['ECHO_resource'],search_sub=1):
   
               echo_url=resource[1].absolute_url()
               if resource[1].getFullTextXML(noredirect="yes"):
                   if hasattr(resource[1],'link'):
                       viewer_url=echo_url+"/getMetaDataXML"
                   else:
                       viewer_url="NO URL"
                   if filter:
                       if re.search(filter,viewer_url):
                           ret+="""\n<resource echoLink="%s" viewerLink="%s"/>"""%(urllib.quote(echo_url,safe='/:?'),urllib.quote(viewer_url,safe='/:?'))
                   else:
                       ret+="""\n<resource echoLink="%s" viewerLink="%s"/>"""%(urllib.quote(echo_url,safe='/:?'),urllib.quote(viewer_url,safe='/:?'))
           ret +="""\n</index>"""
           
                   
         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)
                   
           
       def findPartners(self): 
           """find all partners in partners"""
           par=self.ZopeFind(self.partners, obj_metatypes='ECHO_partner')
           return par
           
       def getPartnerFromID(self):
           """find partner form ID return object"""
           pa=self.REQUEST['partner']
           par=self.ZopeFind(self.partners, obj_ids='pa')
           return par
   
           
 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"""
     self._setObject(id,ECHO_root(id,title))      self._setObject(id,ECHO_root(id,title))
Line 2004  def manage_addECHO_rootForm(self): Line 2348  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 2023  class ECHO_partner(Image,Persistent): Line 2417  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 2044  manage_addECHO_partnerForm=DTMLFile('dtm Line 2443  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, copyrightType='', title='', precondition='', content_type='',
                     REQUEST=None):                      REQUEST=None):
     """      """
     Add a new ECHO_partner object.      Add a new ECHO_partner object.
Line 2063  def manage_addECHO_partner(self, id, fil Line 2462  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,'',copyrightType, 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.88  
changed lines
  Added in v.1.115


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