--- ECHO_content/ECHO_collection.py 2005/10/23 09:46:26 1.238 +++ ECHO_content/ECHO_collection.py 2005/10/26 17:09:20 1.242 @@ -67,12 +67,7 @@ import ECHO_helpers from ECHO_helpers import * from ECHO_language import * from ECHO_movie import * - -#regexp for extracting elements from xml -patternTXT=r"<\s*txt.*?>(.*?)" -regexpTXT = re.compile(patternTXT, re.IGNORECASE + re.DOTALL) -patternPage=r"<\s*page.*?>(.*?)" -regexpPage = re.compile(patternPage, re.IGNORECASE + re.DOTALL) +import vlp_xmlhelpers #TODO: vlp elemente aus echo herausnehmen @@ -1504,15 +1499,35 @@ 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""" + if hasattr(self,"link_template"): - return ECHO_basis.content_html(self,'link') + ret=ECHO_basis.content_html(self,'link') 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): """standard link""" if self.link: @@ -1528,8 +1543,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)) @@ -1548,7 +1564,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') @@ -2222,8 +2240,12 @@ class ECHO_collection(Folder, Persistent def content_html(self,**argv): """template fuer content""" #print "NN",argv - return ECHO_basis.content_html(self,'collection') - + ret = ECHO_basis.content_html(self,'collection') + try: + return ret.decode('utf-8') + except: + return ret + def getCredits(self): """Ausgabe der credits""" if self.credits: @@ -3154,100 +3176,29 @@ class ECHO_root(Folder,Persistent,Implic else: return "" - def link2html(self,str): - """link2html fuer VLP muss hier noch raus""" - if str: - - str=re.sub("\&","&",str) - dom=xml.dom.minidom.parseString(""+str+"") - 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) + link2html=vlp_xmlhelpers.link2html - - 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) - - - - link.parentNode.replaceChild(newLink,link) - if self.checkRef(ref): - if pn: - newLink.setAttributeNS(EMPTY_NAMESPACE,"href",self.aq_parent.absolute_url()+"/vlp_coll?id="+ref+"&p="+pn) - else: - newLink.setAttributeNS(EMPTY_NAMESPACE,"href",self.aq_parent.absolute_url()+"/vlp_coll?id="+ref) - - #str= dom.toxml('utf-8') - buf = cStringIO.StringIO() - PrettyPrint(dom, stream=buf) - str = buf.getvalue() - buf.close() - #str=PrettyPrint(dom.documentElement,encoding='UTF-8') - #print link.toxml('utf-8') - #print type(str) - retStr=regexpPage.search(str) - - 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 + xml2html=vlp_xmlhelpers.xml2html + + checkRef=vlp_xmlhelpers.checkRef + +# 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): """Quote string"""