--- ECHO_content/ECHO_collection.py 2005/10/26 16:14:29 1.240 +++ ECHO_content/ECHO_collection.py 2005/11/03 17:10:52 1.249 @@ -946,8 +946,7 @@ class ECHO_resource(CatalogAware,Folder, self.contentType=self.bib_type for data in self.metadata: data_neu=re.sub('-','_',data) - self.meta - DataHash[data_neu]=getattr(self,data)[0:] + self.metaDataHash[data_neu]=getattr(self,data)[0:] pt=zptFile(self, 'zpt/ChangeECHO_resource_metadata.zpt') @@ -1038,14 +1037,46 @@ class ECHO_resource(CatalogAware,Folder, if RESPONSE is not None: RESPONSE.redirect('manage_main') + + - def getMDValue(self,fieldName,empty=None): + def getMDValue(self,fieldNameTest,empty=None,generic=None): + """get md values""" + #TODO: cache mappinghash + + fieldName=None + if generic: + ct=self.contentType.replace(" ","_").lower() + + #caching + if not hasattr(self,'_v_mapHash'): #noch keine cachevariable + self._v_mapHash={} + + tmp=self._v_mapHash.get(ct,None) + if tmp: #teste ob type schon existiert + fieldName=tmp.get(fieldNameTest,None) + else: + self._v_mapHash[ct]={} + + #noch nicht gecached + if not fieldName and hasattr(self.standardMD,ct): + fieldName=getattr(self.standardMD,ct).generateMappingHash()[fieldNameTest][0] + self._v_mapHash[ct][fieldNameTest]=fieldName + if not empty: + #FIXME: warum gibt es manchmal kein metadatahas + try: return self.metaDataHash.get(fieldName,'!!NOT USED HERE in Type: %s'%self.contentType) - + except: + zLOG.LOG("ECHO (line 1069)",zLOG.ERROR,"no md hash for %s"%self.getId()) + return "" + else: - return self.metaDataHash.get(fieldName,empty) - + + return self.metaDataHash.get(fieldNameTest,empty) + + getFieldValue=getMDValue #depricated + def newMetaXML(self,project=None,startpage=None,xslt=None,thumbtemplate=None,topbar=None,digiLibTemplate=None,digiliburlprefix=None): """new index.meta""" self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml') @@ -1154,20 +1185,6 @@ class ECHO_resource(CatalogAware,Folder, return field - - def getFieldValue(self,field): - """get value""" - - try: - - ret=self.metaDataHash[field] - if ret == "": - return None - else: - - return ret - except: - return None def getMetaDataHash(self): """md hash""" @@ -1175,6 +1192,7 @@ class ECHO_resource(CatalogAware,Folder, def setFieldValue(self,field,value): """get value""" + #TODO: remove setFieldValue if not hasattr(self,'metaDataHash'): setattr(self,'metaDataHash',{}) @@ -1184,8 +1202,9 @@ class ECHO_resource(CatalogAware,Folder, def copySearchFields(self): """copys metadatafields to the object""" fields=['author','title','year'] + for field in fields: - setattr(self,'MD_'+field,self.getFieldValue(field)) + setattr(self,'MD_'+field,self.getMDValue(field,generic="yes")) def findLabelsFromMapping(self,referenceType): @@ -1236,9 +1255,7 @@ class ECHO_resource(CatalogAware,Folder, #self.referencetypes=temp[0:] - - - + bibdata={} retdata={} @@ -1289,6 +1306,8 @@ class ECHO_resource(CatalogAware,Folder, if RESPONSE: return RESPONSE.redirect('manage_main') + return "OK:",self.absolute_url(),self.contentType + def ECHO_getResourceMD(self,template="yes",back=None): """Einlesen der Metadaten und Anlegen dieser Metadaten als Informationen zur Resource""" (metadict, error)=readMetadata(self.metalink) @@ -1499,8 +1518,22 @@ class ECHO_link(ECHO_externalLink): """external_link""" meta_type="ECHO_link" + manage_options = ECHO_externalLink.manage_options+( + {'label':'add links config','action':'ECHO_link_addLinksForm'}, + ) + def ECHO_link_addLinksForm(self): + """Main configuration""" + pt=zptFile(self, 'zpt/ChangeECHO_link_addLinks.zpt') + return pt() + + def ECHO_link_addLinks(self,addLinks,RESPONSE): + """add links""" + self.addLinks=addLinks + if RESPONSE is not None: + RESPONSE.redirect('manage_main') + def content_html(self): """template fuer link""" @@ -1529,8 +1562,9 @@ class ECHO_link(ECHO_externalLink): else: params={} - params['backLink']=self.aq_parent.absolute_url() - params['startLink']=splitted[0]+"?"+urllib.urlencode(params) + if getattr(self,'addLinks','yes')=="yes": + params['backLink']=self.aq_parent.absolute_url() + params['startLink']=splitted[0]+"?"+urllib.urlencode(params) return self.REQUEST.RESPONSE.redirect(splitted[0]+"?"+urllib.urlencode(params)) @@ -1549,7 +1583,9 @@ def manage_addECHO_link(self,id,title,la newObj=ECHO_link(id,link,title,label,description,contentType,responsible,credits,weight,coords) self._setObject(id,newObj) - + + getattr(self,id).addLinks='no' + if RESPONSE is not None: RESPONSE.redirect('manage_main') @@ -1898,7 +1934,7 @@ class ECHO_collection(Folder, Persistent def copySearchFields(self,RESPONSE=None): """copys import metadatafields to the object""" - resources=self.ZopeFind(self,obj_metatypes=['ECHO_resource']) + resources=self.ZopeFind(self,obj_metatypes=['ECHO_resource'],search_sub=1) for resource in resources: @@ -1916,7 +1952,7 @@ class ECHO_collection(Folder, Persistent def reloadMetaDataFromStorage(self,RESPONSE=None): """copy metadata from the storage to ECHO""" - return reloadMetaDataFromStorage(self,RESPONSE=None) + return reloadMetaDataFromStorage(self,RESPONSE) def getPartnerCopyright(self,name,sonst="generic"): @@ -2224,10 +2260,16 @@ class ECHO_collection(Folder, Persistent """template fuer content""" #print "NN",argv ret = ECHO_basis.content_html(self,'collection') + try: - return ret.decode('utf-8') + return ret.encode('utf-8') except: - return ret + + try: + return ret.decode('latin-1') + except: + + return ret def getCredits(self): """Ausgabe der credits"""