Diff for /ECHO_content/ECHO_collection.py between versions 1.110 and 1.129

version 1.110, 2004/06/08 17:04:39 version 1.129, 2004/06/24 12:23:05
Line 184  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 236  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 342  class ECHO_copyright(Folder): Line 378  class ECHO_copyright(Folder):
         pt.content_type="text/html"          pt.content_type="text/html"
         return pt()          return pt()
   
     def ECHO_copyright_config(self,title,RESPONSE):      def ECHO_copyright_config(self,title,RESPONSE=None):
         """change"""          """change"""
         self.title=title          self.title=title
         self.copyrights=[]          self.copyrights=[]
Line 441  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 setStartPageForm(self):
           """Form for changing the startpage"""
   
           
           pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_resourceStartPage.zpt').__of__(self)
               pt.content_type="text/html"
               return pt()
       
       
       def setStartPage(self,startpage=None,RESPONSE=None):
           """set start page, if no startpage defined use the generic one of the resource"""
   
           if (not (type(startpage)==StringType)) and ("__generic" in startpage): # checke ob generic in der liste
               startpage=self.absolute_url()+"/startpage_html"
               
           if (not startpage) or (startpage=="__generic"):
                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(self.REQUEST['SERVER_URL'],'',path)
           path=re.sub('http://'+self.REQUEST['HTTP_HOST'],'',path)
   
           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) 
   
   
           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']
   
           
           writeMetadata(self.metalink,self.metaDataHash,project,None,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('/index.meta','',path) 
   
           path=re.sub(self.REQUEST['SERVER_URL'],'',path)
           path=re.sub('http://'+self.REQUEST['HTTP_HOST'],'',path)
   
           path=re.sub('http://foxridge.mpiwg-berlin.mpg.de:8080','',path) # falls foxridge als server
           path=re.sub('http://foxridge.mpiwg-berlin.mpg.de:8080','',path) # falls foxridge als server
           path=re.sub('http://foxridge.mpiwg-berlin.mpg.de','',path) # falls foxridge als server
   
   
           return 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"""
Line 488  class ECHO_resource(Folder,Persistent): Line 622  class ECHO_resource(Folder,Persistent):
                 return "<error>no fulltext available</error>"                  return "<error>no fulltext available</error>"
   
     def getCopyrightsHTML(self):      def getCopyrightsHTML(self):
         """gib link auf copyright notiz aus"""          """gib (link auf copyright link, mediatyp, institution, copyrightType, label von copyrightType) aus"""
                   
         if hasattr(self,'copyrightModell'):          if hasattr(self,'copyrightModel'):
             obj=self.copyrightModell              obj=self.copyrightModel
                           
         else:          else:
             return "ERROR"              return "ERROR"
Line 502  class ECHO_resource(Folder,Persistent): Line 636  class ECHO_resource(Folder,Persistent):
             link="copyrightTypes/"+copyright[2]+'/copyright.html'              link="copyrightTypes/"+copyright[2]+'/copyright.html'
                           
             try:              try:
                 label=getattr(self.copyrightTypes,copyright[2]).label                  copyrightTypeObj=getattr(self.copyrightTypes,copyright[2])
                 ret.append(("""<a target="_blank" href="%s">%s</a>"""%(link,label),copyright[0],copyright[0],copyright[1],copyright[2]))                  label=copyrightTypeObj.label
                   url=copyrightTypeObj.url
                   
                   if url!='':
                        ret.append((url,copyright[0],copyright[1],copyright[2],label))
                   else:
                       if hasattr(copyrightTypeObj, 'copyright.html'):
                            ret.append(("""%s?partner=%s"""%(link,copyright[1]),copyright[0],copyright[1],copyright[2],label))
                       else:
                            ret.append(('empty',copyright[0],copyright[1],copyright[2],label))
             except:              except:
                 """nothing"""                  """nothing"""
                           
Line 610  class ECHO_resource(Folder,Persistent): Line 753  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 668  class ECHO_resource(Folder,Persistent): Line 811  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 686  class ECHO_resource(Folder,Persistent): Line 829  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 695  class ECHO_resource(Folder,Persistent): Line 839  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 730  class ECHO_resource(Folder,Persistent): Line 879  class ECHO_resource(Folder,Persistent):
     {'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'},
       {'label':'set/change startpage','action':'setStartPageForm'},
     )      )
   
     def getOverview(self):      def getOverview(self):
Line 889  class ECHO_resource(Folder,Persistent): Line 1040  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
Line 981  class ECHO_resource(Folder,Persistent): Line 1134  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 1142  class ECHO_collection(Folder, Persistent Line 1299  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"):      def getPartnerCopyright(self,name,sonst="generic"):
         """gibt generisches copyright eines partners aus, sonst behalte jetzige einsteillung"""          """gibt generisches copyright eines partners aus, sonst behalte jetzige einsteillung"""
         #print "hi",name,sonst          #print "hi",name,sonst
Line 1215  class ECHO_collection(Folder, Persistent Line 1420  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 1392  class ECHO_collection(Folder, Persistent Line 1597  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 1439  class ECHO_collection(Folder, Persistent Line 1646  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 2137  class ECHO_root(Folder,Persistent,Implic Line 2344  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):      def xml2html(self,str):
Line 2323  class ECHO_root(Folder,Persistent,Implic Line 2535  class ECHO_root(Folder,Persistent,Implic
         par=self.ZopeFind(self.partners, obj_metatypes='ECHO_partner')          par=self.ZopeFind(self.partners, obj_metatypes='ECHO_partner')
         return par          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"""
Line 2341  class ECHO_copyrightType(Folder): Line 2565  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 2357  class ECHO_copyrightType(Folder): Line 2582  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 2371  def manage_addECHO_copyrightTypeForm(sel Line 2597  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)
   

Removed from v.1.110  
changed lines
  Added in v.1.129


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