Diff for /ECHO_content/ECHO_collection.py between versions 1.93 and 1.124

version 1.93, 2004/05/28 10:43:05 version 1.124, 2004/06/22 08:49:00
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"""
   
Line 89  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 151  class BrowserCheck: Line 184  class BrowserCheck:
     self.isIEMac = self.isIE and self.isMac      self.isIEMac = self.isIE and self.isMac
   
   
 def writeMetadata(url,metadict):  def writeMetadata(url,metadict,project=None,startpage=None,xslt=None,thumbtemplate=None,topbar=None,digiLibTemplate=None):
     """Einlesen der Metadaten und und erstellen des geaenderten XML file"""      """Einlesen der Metadaten und und erstellen des geaenderten XML file"""
       def updateTextToolNode(tag,value):
           print dom,tag,value
           metanode=dom.getElementsByTagName('texttool')[0]
           try:
               nodeOld=metanode.getElementsByTagName(tag)
           except:
               nodeOld=None
               
           if nodeOld:
               metanode.removeChild(nodeOld[0]).unlink()
   
           node=dom.createElement(tag)
           nodetext=dom.createTextNode(value)
           node.appendChild(nodetext)
           metanode.appendChild(node)
   
   
     try:      try:
         geturl=""          geturl=""
Line 203  def writeMetadata(url,metadict): Line 252  def writeMetadata(url,metadict):
         metanode.appendChild(metanodeneu)          metanode.appendChild(metanodeneu)
   
           
       
       
       
       if project:
           updateTextToolNode('project',project)
   
       if startpage:
           updateTextToolNode('startpage',startpage)
   
       if topbar:
           updateTextToolNode('toptemplate',topbar)
   
       if thumbtemplate:
           updateTextToolNode('thumbtemplate',thumbtemplate)
   
       if xslt:
           updateTextToolNode('xslt',xslt)
   
       
       
     return dom.toxml().encode('utf-8')      return dom.toxml().encode('utf-8')
   
           
Line 243  def readMetadata(url): Line 312  def readMetadata(url):
                   
         for node in metacontent:          for node in metacontent:
             try:              try:
               #print urllib.unquote(getText(node.childNodes)),getText(node.childNodes)
             metadict[re.sub('-','_',node.tagName.lower())]=urllib.unquote(getText(node.childNodes))              metadict[re.sub('-','_',node.tagName.lower())]=urllib.unquote(getText(node.childNodes))
             except:              except:
                 """nothing"""                  """nothing"""
Line 282  def setECHO_collectionInformation(self,t Line 352  def setECHO_collectionInformation(self,t
   
         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:]
   
       def getCopyrights(self):
           """return coyprights"""
           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=None):
           """change"""
           self.title=title
           self.copyrights=[]
           self.copyrights=getCopyrightsFromForm(self,self.REQUEST.form)[0:]
   
           if RESPONSE is not None:
               RESPONSE.redirect('manage_main')
                                   
 class scientificInformation(Folder,Persistent,Implicit):  
     """outdated will be deleted in the next versions: subclass scientificInformation"""  
     security=ClassSecurityInfo()  
           
   def manage_addECHO_copyrightForm(self):
       """Form for adding"""
       pt=PageTemplateFile('Products/ECHO_content/zpt/AddECHO_copyright.zpt').__of__(self)
       return pt()
           
   def manage_addECHO_copyright(self, id,title,RESPONSE=None):
       """add the copyright"""
           
     def __init__(self,source_type,period):      meta_type="ECHO_copyright"
   
         self.id="scientific_Information"      #first generate copyrights as list of tripels (mediaType,partner,copyrightType)
         self.source_type=source_type  
         self.period=period  
                   
   
   
     security.declarePublic('get_source_type')      self._setObject(id, ECHO_copyright(id, title,getCopyrightsFromForm(self,self.REQUEST.form)))
     def get_source_type(self):  
         return self.source_type  
           
     security.declarePublic('get_period')      if RESPONSE is not None:
     def get_period(self):          RESPONSE.redirect('manage_main')
         return self.period  
   
 class ECHO_layoutTemplate(ZopePageTemplate):  class ECHO_layoutTemplate(ZopePageTemplate):
     """Create a layout Template for different purposes"""      """Create a layout Template for different purposes"""
Line 398  def manage_addECHO_layoutTemplate(self, Line 477  def manage_addECHO_layoutTemplate(self,
   
 class ECHO_resource(Folder,Persistent):  class ECHO_resource(Folder,Persistent):
     """ECHO Ressource"""      """ECHO Ressource"""
       security=ClassSecurityInfo()
     meta_type='ECHO_resource'      meta_type='ECHO_resource'
   
     viewClassificationList=viewClassificationListMaster      viewClassificationList=viewClassificationListMaster
   
     getSubCols = ECHO_helpers.getSubCols      getSubCols = ECHO_helpers.getSubCols
   
       def setStartPage(self,startpage=None,RESPONSE=None):
           """set start page, if no startpage defined use the generic one of the resource"""
   
           if not startpage:
               startpage=self.absolute_url()+"/startpage_html"
   
           
       
           params="startpage=%s"%startpage
                      
           
           urllib.urlopen('http://xserve02.mpiwg-berlin.mpg.de:18880/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/newMetaXML'+urllib.quote('?'+params))).read()
   
           path=self.metalink
           
           path=re.sub('http://foxridge.mpiwg-berlin.mpg.de:8080','',path) # falls foxridge als server
           path=re.sub('http://foxridge.mpiwg-berlin.mpg.de','',path) # falls foxridge als server
   
           path=re.sub('/index.meta','',path) 
   
   
           print urllib.urlopen("http://nausikaa2.rz-berlin.mpg.de:86/cgi-bin/toc/admin/reg.cgi?path=%s"%path).readlines()
   
           if RESPONSE is not None:
               RESPONSE.redirect('manage_main')
   
       def changeViewerTemplateSetForm(self):
           """change the viewer template set"""
           pt=PageTemplateFile('Products/ECHO_content/zpt/changeResourceViewerTemplateSet').__of__(self)
               return pt()
   
   
       def getTextToolsField(self,name,default=''):
           """Lese Textoolsfelder aus index.meta im path aus"""
           
           try:
               dom=xml.dom.minidom.parse(self.metalink)
               node=dom.getElementsByTagName('texttool')[0] #getNode
               subnode=node.getElementsByTagName(name)[0]
   
               # bei text wird nur der Folder gebraucht
               if name=="text":
                   splitted=getText(subnode.childNodes).split("/")
                   return splitted[len(splitted)-2]
               else:
                   return getText(subnode.childNodes)
           except:
               return default
      
   
       def changeViewerTemplateSet(self,project,xslt,thumbtemplate,topbar,digiLibTemplate,RESPONSE=None):
           """changeit"""
   
           paramList=['project','startpage','xslt','thumbtemplate','topbar','digiLibTemplate']
   
           
           #print writeMetadata(self.metalink,self.metaDataHash,project,startpage,xslt,thumbtemplate,topbar,digiLibTemplate)
   
           params="project=%s&xslt=%s&thumbtemplate=%s&topbar=%s&digiLibTemplate=%s"%(project,xslt,thumbtemplate,topbar,digiLibTemplate)
   
           
           urllib.urlopen('http://echo.mpiwg-berlin.mpg.de/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/newMetaXML'+urllib.quote('?'+params))).read()
   
           # hack Pfad auf die Dokumente
           path=self.metalink
           
           path=re.sub('http://foxridge.mpiwg-berlin.mpg.de:8080','',path) # falls foxridge als server
           path=re.sub('http://foxridge.mpiwg-berlin.mpg.de','',path) # falls foxridge als server
   
           path=re.sub('/index.meta','',path) 
   
   
           print urllib.urlopen("http://nausikaa2.rz-berlin.mpg.de:86/cgi-bin/toc/admin/reg.cgi?path=%s"%path).readlines()
   
           if RESPONSE is not None:
               RESPONSE.redirect('manage_main')
   
       
     def getTitle(self):      def getTitle(self):
     """title"""      """title"""
     return self.title.encode('utf-8')       return self.title.encode('utf-8') 
Line 442  class ECHO_resource(Folder,Persistent): Line 601  class ECHO_resource(Folder,Persistent):
             else:              else:
                 return "<error>no fulltext available</error>"                  return "<error>no fulltext available</error>"
   
     def getCopyright(self):      def getCopyrightsHTML(self):
         """gib link auf copyright notiz aus"""          """gib (link auf copyright notiz, mediatyp, institution, copyrightType, label von copyrightType) aus"""
         return """<a href="#">copyright</a>"""          
           if hasattr(self,'copyrightModell'):
               obj=self.copyrightModell
               
           else:
               return "ERROR"
           ret=[]
           
           for copyright in obj.getCopyrights():
               
               link="copyrightTypes/"+copyright[2]+'/copyright.html'
               
               try:
                   copyrightTypeObj=getattr(self.copyrightTypes,copyright[2])
                   label=copyrightTypeObj.label
                   url=copyrightTypeObj.url
                   
                   if url!='':
                        ret.append(("""<a target="_blank" href="%s">%s</a>"""%(url,label),copyright[0],copyright[1],copyright[2],label))
                   else:
                       if hasattr(copyrightTypeObj, 'copyright.html'):
                            ret.append(("""<a target="_blank" href="%s?partner=%s">%s</a>"""%(link,copyright[1],label),copyright[0],copyright[1],copyright[2],label))
                       else:
                            ret.append((label,copyright[0],copyright[1],copyright[2],label))
               except:
                   """nothing"""
               
           return ret
           
     def getCredits(self):      def getCredits(self):
         """Ausgabe der credits"""          """Ausgabe der credits"""
Line 453  class ECHO_resource(Folder,Persistent): Line 639  class ECHO_resource(Folder,Persistent):
         else:          else:
             return []              return []
           
     def __init__(self,id,link,metalink,resourceID,title,label,description,contentType,renderingType,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 466  class ECHO_resource(Folder,Persistent): Line 652  class ECHO_resource(Folder,Persistent):
         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.renderingType=renderingType
         self.responsible=responsible          self.responsible=responsible
         self.resourceID=resourceID          self.resourceID=resourceID
Line 546  class ECHO_resource(Folder,Persistent): Line 733  class ECHO_resource(Folder,Persistent):
         self.contentType=self.bib_type          self.contentType=self.bib_type
         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)[0:]
   
           
         pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_resource_metadata.zpt').__of__(self)          pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_resource_metadata.zpt').__of__(self)
Line 604  class ECHO_resource(Folder,Persistent): Line 791  class ECHO_resource(Folder,Persistent):
         """change metadata"""          """change metadata"""
         tags=self.findTagsFromMapping(self.contentType)          tags=self.findTagsFromMapping(self.contentType)
         for field in tags[1]:          for field in tags[1]:
             self.metaDataHash[self.getFieldTag(tags,field)]=self.REQUEST.form[self.getFieldTag(tags,field)]              self.metaDataHash[self.getFieldTag(tags,field)]=self.REQUEST.form[self.getFieldTag(tags,field)][0:]
                           
   
                                   
Line 622  class ECHO_resource(Folder,Persistent): Line 809  class ECHO_resource(Folder,Persistent):
             except:              except:
                 """nothing"""                  """nothing"""
   
         return urllib.urlopen('http://xserve02.mpiwg-berlin.mpg.de:18880/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/newMetaXML')).read()          urllib.urlopen('http://xserve02.mpiwg-berlin.mpg.de:18880/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/newMetaXML')).read()
   
                   
         if RESPONSE is not None:          if RESPONSE is not None:
             RESPONSE.redirect('manage_main')              RESPONSE.redirect('manage_main')
Line 631  class ECHO_resource(Folder,Persistent): Line 819  class ECHO_resource(Folder,Persistent):
     def getMDValue(self,fieldName):      def getMDValue(self,fieldName):
         return self.metaDataHash.get(fieldName,'!!NOT USED HERE in Type: %s'%self.contentType)          return self.metaDataHash.get(fieldName,'!!NOT USED HERE in Type: %s'%self.contentType)
                                             
     def newMetaXML(self):      def newMetaXML(self,project=None,startpage=None,xslt=None,thumbtemplate=None,topbar=None,digiLibTemplate=None):
         """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)  
   
           if not hasattr(self,'metaDataHash'):
               self.copyIndex_meta2echo_resource()
           try:
               return writeMetadata(self.metalink,self.OSAS_meta,project,startpage,xslt,thumbtemplate,topbar,digiLibTemplate)
           except:
               return writeMetadata(self.metalink,self.metaDataHash,project,startpage,xslt,thumbtemplate,topbar,digiLibTemplate)
   
     def getMetaDataXML(self):      def getMetaDataXML(self,project=None,startpage=None,xslt=None,thumbtemplate=None,topbar=None,digiLibTemplate=None):
         """prints out metadata as stored in the echo environment, format is the index.meta format"""          """prints out metadata as stored in the echo environment, format is the index.meta format"""
         self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml')          self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml')
         return writeMetadata(self.metalink,self.metaDataHash)          return writeMetadata(self.metalink,self.metaDataHash)
Line 662  class ECHO_resource(Folder,Persistent): Line 855  class ECHO_resource(Folder,Persistent):
                           
     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'},
         {'label':'Sync Metadata','action':'ECHO_getResourceMD'},          {'label':'Sync Metadata','action':'ECHO_getResourceMD'},
       {'label':'Change TemplateSets','action':'changeViewerTemplateSetForm'},
     )      )
   
     def getOverview(self):      def getOverview(self):
Line 826  class ECHO_resource(Folder,Persistent): Line 1019  class ECHO_resource(Folder,Persistent):
         return retdata,fieldlist,temp,fields          return retdata,fieldlist,temp,fields
   
           
       security.declarePublic('copyIndex_meta2echo_resource') # has to be change, presentlyset because of OSAS koordination
     def copyIndex_meta2echo_resource(self,RESPONSE=None):      def copyIndex_meta2echo_resource(self,RESPONSE=None):
         """copy MD von Index_meta to the echo_resource"""          """copy MD von Index_meta to the echo_resource"""
   
         (metadict, error)=readMetadata(self.metalink)          (metadict, error)=readMetadata(self.metalink)
                   
           self.contentType=metadict['bib_type'][0:]
           
         self.metaDataHash={}          self.metaDataHash={}
         if not error=="": #Fehler beim Auslesen des Metafiles          if not error=="": #Fehler beim Auslesen des Metafiles
             return "ERROR:",error              return "ERROR:",error
         fields=self.findTagsFromMapping(self.contentType)          fields=self.findTagsFromMapping(self.contentType)
           
         #fields=self.findLabelsFromMapping(self.contentType)          #fields=self.findLabelsFromMapping(self.contentType)
         for field in fields[1]:          for field in fields[1]:
               
             if self.isDefinedInThisSet(fields,field):              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),''))                  self.setFieldValue(self.getFieldTag(fields,field),metadict.get(self.getFieldTag(fields,field),''))
   
                   
Line 915  class ECHO_resource(Folder,Persistent): Line 1113  class ECHO_resource(Folder,Persistent):
             return sp[0][1]()              return sp[0][1]()
   
   
                   security.declarePublic('generate_label') # has to be change, presentlyset because of OSAS koordination
     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.contentType.lower())
   
       self.label=pt()[0:]
         return pt()          return pt()
   
       security.declarePublic('generate_title') # has to be change, presentlyset because of OSAS koordination
     def generate_title(self,RESPONSE=None):      def generate_title(self,RESPONSE=None):
         """Erzeugt_standard_Label aus Template"""          """Erzeugt_standard_Label aus Template"""
         pt=getattr(self,"label_template_"+self.contentType)          pt=getattr(self,"label_template_"+self.contentType.lower())
   
     self.title=pt()      self.title=pt()[0:]
           
         return pt()          return pt()
   
   Globals.InitializeClass(ECHO_resource)
   
 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 937  def manage_addECHO_resourceForm(self): Line 1139  def manage_addECHO_resourceForm(self):
   
   
   
 def manage_addECHO_resource(self,id,title,label,description,responsible,link,metalink,weight,resourceID=None,contentType=None,renderingType=None,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,resourceID,title,label,description,contentType,renderingType,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 1015  class ECHO_externalLink(Folder): Line 1217  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 1082  class ECHO_collection(Folder, Persistent Line 1278  class ECHO_collection(Folder, Persistent
     viewClassificationList=viewClassificationListMaster      viewClassificationList=viewClassificationListMaster
     displayTypes=displayTypes      displayTypes=displayTypes
   
   
       def changeViewerTemplateSetsForm(self):
           """change the viewer template set"""
           pt=PageTemplateFile('Products/ECHO_content/zpt/changeViewerTemplateSet').__of__(self)
               return pt()
   
       def getViewerTemplateSets(self,obj_ids=None):
           """Get the ViewerTemplateSet title for configuration"""
           ret=[]
           
           try:
               viewerTemplateSets=self.ZopeFind(self.viewerTemplateSets,obj_metatypes=['OSAS_viewerTemplateSet'],obj_ids=obj_ids)#assumes viewerTemplateSets folder somewhere in the hierarchie.
               
               for viewerTemplateSet in viewerTemplateSets:
                   ret.append((viewerTemplateSet[1].title,viewerTemplateSet[0],viewerTemplateSet[1]))
                   
               return ret
               
           except:
               return [('no ViewerTemplateSetfolders','')]
   
       def getTextToolsField(self,name,default=''):
           """Lese viewerTemplateSet der Collection not implemented yet!"""
           
           return default
   
               
       def isSelectedViewerTemplateSet(self,obj,id):
           """is ausgewählt"""
           
           if self.REQUEST['viewerTemplateSet']==id:
               return 1
           else:
               return None
   
       def changeViewerTemplateSets(self,project,xslt,thumbtemplate,topbar,digiLibTemplate,RESPONSE=None):
           """change the templates"""
   
           resources=self.ZopeFind(self,obj_metatypes=['ECHO_resource'])
   
           for resource in resources:
               print resource[0]
               resource[1].changeViewerTemplateSet(project,xslt,thumbtemplate,topbar,digiLibTemplate)
   
           if RESPONSE is not None:
               RESPONSE.redirect('manage_main')
   
   
       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 1127  class ECHO_collection(Folder, Persistent Line 1399  class ECHO_collection(Folder, Persistent
     def addResource(self,id,title,label,description,contentType,responsible,link,metalink,weight,credits=None,coords=None,RESPONSE=None):      def addResource(self,id,title,label,description,contentType,responsible,link,metalink,weight,credits=None,coords=None,RESPONSE=None):
         """SSS"""          """SSS"""
         try:          try:
             manage_addECHO_resource(self,id,title,label,description,contentType,responsible,link,metalink,weight,credits=None,coords=None,RESPONSE=None)              manage_addECHO_resource(self,id,title,label,description,responsible,link,metalink,weight,credits=None,coords=None,RESPONSE=None)
             return "done"              return "done"
         except:          except:
             return None              return None
Line 1304  class ECHO_collection(Folder, Persistent Line 1576  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")
               entry[1].generate_title()
               entry[1].generate_label()
   
         else:          else:
            self.ECHO_rerenderLinksMD(entry[1])             self.ECHO_rerenderLinksMD(entry[1])
Line 1351  class ECHO_collection(Folder, Persistent Line 1625  class ECHO_collection(Folder, Persistent
         {'label':'Rerender Links','action':'ECHO_rerenderLinksMD'},          {'label':'Rerender Links','action':'ECHO_rerenderLinksMD'},
         {'label':'Graphics','action':'ECHO_graphicEntry'},          {'label':'Graphics','action':'ECHO_graphicEntry'},
     {'label':'create resources from XML','action':'createRessourcesFromXMLForm'},      {'label':'create resources from XML','action':'createRessourcesFromXMLForm'},
           {'label':'Change Viewer Templates','action':'changeViewerTemplateSetsForm'},
         )          )
   
     def getOverview(self):      def getOverview(self):
Line 1410  class ECHO_collection(Folder, Persistent Line 1684  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 1418  class ECHO_collection(Folder, Persistent Line 1692  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 1781  class ECHO_root(Folder,Persistent,Implic Line 2056  class ECHO_root(Folder,Persistent,Implic
         if not content or content=="":          if not content or content=="":
             return ""              return ""
         ret="<%s>"%tag          ret="<%s>"%tag
         ret+=urllib.quote(content)          #ret+=urllib.quote(content)
           ret+=content
   
         ret+="</%s>"%tag          ret+="</%s>"%tag
         return ret          return ret
   
     def getValueFromClass(self,field,found):      def getValueFromClass(self,field,found):
         """retattribute falss existing"""          """retattribute falss existing"""
         try:          try:
             return getattr(found,field)              
               return getattr(found,field).decode('ascii','ignore')
         except:          except:
             return ""              return ""
           
Line 1862  class ECHO_root(Folder,Persistent,Implic Line 2140  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 1879  class ECHO_root(Folder,Persistent,Implic Line 2165  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 1991  class ECHO_root(Folder,Persistent,Implic Line 2313  class ECHO_root(Folder,Persistent,Implic
         if str:          if 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")
                           
   
Line 2001  class ECHO_root(Folder,Persistent,Implic Line 2323  class ECHO_root(Folder,Persistent,Implic
                 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':''}
Line 2140  class ECHO_root(Folder,Persistent,Implic Line 2484  class ECHO_root(Folder,Persistent,Implic
         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 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.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 getPartnerFromIDParameter(self, id):
           """ find partners from ID"""
           par=self.ZopeFind(self.partners, obj_ids=[id])
           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 2157  class ECHO_copyrightType(Folder): Line 2544  class ECHO_copyrightType(Folder):
   
     meta_type="ECHO_copyrightType"      meta_type="ECHO_copyrightType"
           
     def __init__(self,id,title,label):      def __init__(self,id,title,label,url):
         """init"""          """init"""
         self.id=id          self.id=id
         self.title=title          self.title=title
         self.label=label          self.label=label
           self.url=url
   
     manage_options = Folder.manage_options+(      manage_options = Folder.manage_options+(
         {'label':'Main Config','action':'ECHO_copyrightType_config_mainForm'},          {'label':'Main Config','action':'ECHO_copyrightType_config_mainForm'},
Line 2173  class ECHO_copyrightType(Folder): Line 2561  class ECHO_copyrightType(Folder):
         pt.content_type="text/html"          pt.content_type="text/html"
         return pt()          return pt()
   
     def ECHO_copyrightType_config_main(self,title,label,RESPONSE=None):      def ECHO_copyrightType_config_main(self,title,label,url,RESPONSE=None):
         """change"""          """change"""
         self.title=title          self.title=title
         self.label=label          self.label=label
           self.url=url
   
         if RESPONSE is not None:          if RESPONSE is not None:
             RESPONSE.redirect('manage_main')              RESPONSE.redirect('manage_main')
Line 2187  def manage_addECHO_copyrightTypeForm(sel Line 2576  def manage_addECHO_copyrightTypeForm(sel
         return pt()          return pt()
   
   
 def manage_addECHO_copyrightType(self,id,title,label,RESPONSE=None):  def manage_addECHO_copyrightType(self,id,title,label,url,RESPONSE=None):
     """addaresource"""      """addaresource"""
   
     newObj=ECHO_copyrightType(id,title,label)      newObj=ECHO_copyrightType(id,title,label,url)
   
     self._setObject(id,newObj)      self._setObject(id,newObj)
   
Line 2204  class ECHO_partner(Image,Persistent): Line 2593  class ECHO_partner(Image,Persistent):
   
     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 2218  class ECHO_partner(Image,Persistent): Line 2610  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 2239  manage_addECHO_partnerForm=DTMLFile('dtm Line 2636  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 2258  def manage_addECHO_partner(self, id, fil Line 2655  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.93  
changed lines
  Added in v.1.124


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