version 1.236, 2005/10/10 19:11:12
|
version 1.243, 2005/10/28 10:23:04
|
Line 67 import ECHO_helpers
|
Line 67 import ECHO_helpers
|
from ECHO_helpers import * |
from ECHO_helpers import * |
from ECHO_language import * |
from ECHO_language import * |
from ECHO_movie import * |
from ECHO_movie import * |
|
import vlp_xmlhelpers #TODO: vlp elemente aus echo herausnehmen |
#regexp for extracting elements from xml |
|
patternTXT=r"<\s*txt.*?>(.*?)</txt>" |
|
regexpTXT = re.compile(patternTXT, re.IGNORECASE + re.DOTALL) |
|
patternPage=r"<\s*page.*?>(.*?)</page>" |
|
regexpPage = re.compile(patternPage, re.IGNORECASE + re.DOTALL) |
|
|
|
|
|
|
|
Line 951 class ECHO_resource(CatalogAware,Folder,
|
Line 946 class ECHO_resource(CatalogAware,Folder,
|
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.meta |
self.metaDataHash[data_neu]=getattr(self,data)[0:] |
DataHash[data_neu]=getattr(self,data)[0:] |
|
|
|
|
|
pt=zptFile(self, 'zpt/ChangeECHO_resource_metadata.zpt') |
pt=zptFile(self, 'zpt/ChangeECHO_resource_metadata.zpt') |
Line 1504 class ECHO_link(ECHO_externalLink):
|
Line 1498 class ECHO_link(ECHO_externalLink):
|
"""external_link""" |
"""external_link""" |
|
|
meta_type="ECHO_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): |
def content_html(self): |
"""template fuer link""" |
"""template fuer link""" |
|
|
if hasattr(self,"link_template"): |
if hasattr(self,"link_template"): |
return ECHO_basis.content_html(self,'link') |
ret=ECHO_basis.content_html(self,'link') |
else: |
else: |
return ECHO_basis.content_html(self,'collection') |
ret=ECHO_basis.content_html(self,'collection') |
|
|
|
try: |
|
return ret.decode('utf-8') |
|
except: |
|
return ret |
|
|
def index_html(self): |
def index_html(self): |
"""standard link""" |
"""standard link""" |
Line 1528 class ECHO_link(ECHO_externalLink):
|
Line 1542 class ECHO_link(ECHO_externalLink):
|
else: |
else: |
params={} |
params={} |
|
|
|
if getattr(self,'addLinks','yes')=="yes": |
params['backLink']=self.aq_parent.absolute_url() |
params['backLink']=self.aq_parent.absolute_url() |
params['startLink']=splitted[0]+"?"+urllib.urlencode(params) |
params['startLink']=splitted[0]+"?"+urllib.urlencode(params) |
|
|
Line 1549 def manage_addECHO_link(self,id,title,la
|
Line 1564 def manage_addECHO_link(self,id,title,la
|
|
|
self._setObject(id,newObj) |
self._setObject(id,newObj) |
|
|
|
getattr(self,id).addLinks='no' |
|
|
if RESPONSE is not None: |
if RESPONSE is not None: |
RESPONSE.redirect('manage_main') |
RESPONSE.redirect('manage_main') |
|
|
Line 1563 class ECHO_collection(Folder, Persistent
|
Line 1580 class ECHO_collection(Folder, Persistent
|
|
|
path="/mpiwg/online/permanent/shipbuilding" |
path="/mpiwg/online/permanent/shipbuilding" |
|
|
|
def getTitleAndLabel(self): |
|
"""gibt title und label zurueck""" |
|
return (getattr(self,'title',''),getattr(self,'label','')) |
|
|
def localizeObjects(self): |
def localizeObjects(self): |
"""localize all objects""" |
"""localize all objects""" |
contents=self.ZopeFind(self,obj_metatypes=['ECHO_externalLink','ECHO_link','ECHO_mapText']) |
contents=self.ZopeFind(self,obj_metatypes=['ECHO_externalLink','ECHO_link','ECHO_mapText']) |
Line 2218 class ECHO_collection(Folder, Persistent
|
Line 2239 class ECHO_collection(Folder, Persistent
|
def content_html(self,**argv): |
def content_html(self,**argv): |
"""template fuer content""" |
"""template fuer content""" |
#print "NN",argv |
#print "NN",argv |
return ECHO_basis.content_html(self,'collection') |
ret = ECHO_basis.content_html(self,'collection') |
|
|
|
try: |
|
return ret.encode('utf-8') |
|
except: |
|
|
|
try: |
|
ret.decode('utf-8') |
|
except: |
|
return ret |
|
|
def getCredits(self): |
def getCredits(self): |
"""Ausgabe der credits""" |
"""Ausgabe der credits""" |
Line 2576 class ECHO_root(Folder,Persistent,Implic
|
Line 2606 class ECHO_root(Folder,Persistent,Implic
|
|
|
meta_type="ECHO_root" |
meta_type="ECHO_root" |
|
|
def findObjectFromFulltext(self,url=None,existUri=None): |
|
|
def findObjectFromFulltext(self,existUri): |
''' |
''' |
|
|
@param url: |
@param url: |
@param existUri: |
@param existUri: |
''' |
''' |
|
|
|
if existUri: |
#TODO: at the moment assume that the filename is unique, the whole has to changed to a system of ids. |
#TODO: at the moment assume that the filename is unique, the whole has to changed to a system of ids. |
return None |
filename=existUri.split("/")[-1] |
|
|
|
founds=self.resourceCatalog.search({'fullTextUrl':os.path.splitext(filename)[0]}) |
|
|
|
ret=[(found.title,found.getObject().absolute_url(),found.getObject().aq_parent.absolute_url()) for found in founds] |
|
|
|
return ret |
|
|
def reindex(self,RESPONSE=None): |
def reindex(self,RESPONSE=None): |
"""indiziere alle Objecte neu""" |
"""indiziere alle Objecte neu""" |
Line 3141 class ECHO_root(Folder,Persistent,Implic
|
Line 3180 class ECHO_root(Folder,Persistent,Implic
|
else: |
else: |
return "" |
return "" |
|
|
def link2html(self,str): |
link2html=vlp_xmlhelpers.link2html |
"""link2html fuer VLP muss hier noch raus""" |
|
if str: |
|
|
|
str=re.sub("\&","&",str) |
|
dom=xml.dom.minidom.parseString("<?xml version='1.0' encoding='utf-8'?><txt>"+str+"</txt>") |
|
links=dom.getElementsByTagName("link") |
|
|
|
|
|
for link in links: |
|
link.tagName="a" |
|
ref=link.getAttribute("ref") |
|
pn=link.getAttribute("page") |
|
|
|
if self.checkRef(ref): |
|
if pn: |
|
link.setAttribute("href",self.aq_parent.absolute_url()+"/references?id="+ref+"&page="+pn) |
|
else: |
|
link.setAttribute("href",self.aq_parent.absolute_url()+"/references?id="+ref) |
|
|
|
|
|
newxml=dom.toxml('utf-8') |
|
|
|
retStr=regexpTXT.search(newxml) |
|
|
|
return retStr.group(1) |
|
|
|
|
|
return "" |
|
|
|
def xml2html(self,str,quote="yes"): |
|
"""link2html fuer VLP muss hier noch raus""" |
|
|
|
if str: |
|
if quote=="yes2": |
|
str=re.sub("\&","&",str) |
|
#dom=xml.dom.minidom.parseString(str) |
|
dom = NonvalidatingReader.parseString(str,"http://www.mpiwg-berlin.mpg.de/") |
|
#links=dom.getElementsByTagName("link") |
|
links=Ft.Xml.XPath.Evaluate(".//link", contextNode=dom) |
|
for link in links: |
|
#link.tagName="a" |
|
|
|
ref=link.getAttributeNS(EMPTY_NAMESPACE,"ref") |
|
pn=link.getAttributeNS(EMPTY_NAMESPACE,"page") |
|
|
|
cns=link.childNodes[0:] |
|
|
|
newLink=dom.createElementNS(EMPTY_NAMESPACE,"a") |
|
for x in cns: |
|
newLink.appendChild(x) |
|
|
|
|
xml2html=vlp_xmlhelpers.xml2html |
|
|
|
checkRef=vlp_xmlhelpers.checkRef |
|
|
link.parentNode.replaceChild(newLink,link) |
# def checkRef(self,ref): |
if self.checkRef(ref): |
# if ref[0:3]=='lit': |
if pn: |
# if len(self.library_data({ 'id':ref}))>0: |
newLink.setAttributeNS(EMPTY_NAMESPACE,"href",self.aq_parent.absolute_url()+"/vlp_coll?id="+ref+"&p="+pn) |
# return 1 |
else: |
# try: |
newLink.setAttributeNS(EMPTY_NAMESPACE,"href",self.aq_parent.absolute_url()+"/vlp_coll?id="+ref) |
# if ref[0:7]=="tec_cat": |
|
# return 1 |
#str= dom.toxml('utf-8') |
# except: |
buf = cStringIO.StringIO() |
# """nothing""" |
PrettyPrint(dom, stream=buf) |
# |
str = buf.getvalue() |
# dbs={'vl_technology':'','vl_people':" AND complete='yes'",'vl_sites':''} |
buf.close() |
# res=None |
#str=PrettyPrint(dom.documentElement,encoding='UTF-8') |
# for db in dbs.keys(): |
#print link.toxml('utf-8') |
# res=res or self.search(var=str("select reference from %s where reference =\'%s\' %s"%(db,ref,dbs[db]))) |
#print type(str) |
# return res |
retStr=regexpPage.search(str) |
# |
|
# #Ende Methode fuer vlp |
try: # hack warum fehtl manchmal page?? |
|
return retStr.group(1) |
|
except: |
|
return str |
|
return "" |
|
|
|
def checkRef(self,ref): |
|
if ref[0:3]=='lit': |
|
if len(self.library_data({ 'id':ref}))>0: |
|
return 1 |
|
try: |
|
if ref[0:7]=="tec_cat": |
|
return 1 |
|
except: |
|
"""nothing""" |
|
|
|
dbs={'vl_technology':'','vl_people':" AND complete='yes'",'vl_sites':''} |
|
res=None |
|
for db in dbs.keys(): |
|
res=res or self.search(var=str("select reference from %s where reference =\'%s\' %s"%(db,ref,dbs[db]))) |
|
return res |
|
|
|
#Ende Methode fuer vlp |
|
|
|
def PgQuoteString(self,string): |
def PgQuoteString(self,string): |
"""Quote string""" |
"""Quote string""" |