--- ECHO_content/vlp_xmlhelpers.py 2005/10/26 11:18:19 1.5 +++ ECHO_content/vlp_xmlhelpers.py 2007/07/24 09:11:46 1.11 @@ -1,6 +1,7 @@ from sys import argv import string +import logging import xml.dom.minidom import Ft.Xml.XLink.Processor import Ft.Xml.XLink.XLinkElements @@ -15,6 +16,7 @@ from Ft.Xml import EMPTY_NAMESPACE from Ft.Lib import Uri import urllib import re +from ECHO_collection import unicodify,utf8ify patternTXT=r"<\s*txt.*?>(.*?)" regexpTXT = re.compile(patternTXT, re.IGNORECASE + re.DOTALL) @@ -175,7 +177,8 @@ def checkRef(self,ref): 'vl_people':'AND complete =\'yes\'', 'vl_sites':'AND complete =\'yes\'', 'vl_transcript':'AND complete =\'yes\'', - 'vl_essays':'AND online =\'yes\'' + 'vl_essays':'AND online =\'yes\'', + 'vl_categories':'' } res=None for db in dbs.keys(): @@ -188,7 +191,7 @@ def link2html(self,str): if str: str=re.sub("\&","&",str) - dom=xml.dom.minidom.parseString(""+str+"") + dom=xml.dom.minidom.parseString(""+utf8ify(str)+"") links=dom.getElementsByTagName("link") @@ -207,11 +210,63 @@ def link2html(self,str): newxml=dom.toxml('utf-8') retStr=regexpTXT.search(newxml) + retStr = retStr.group(1) - return retStr.group(1) + return retStr.decode('utf-8') # we return unicode + + return u"" + +def related2html(self,str): + """related library items: xlinks in html wandeln / mb 22.11.2006""" + 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") + + searchStr="select fullreference, online from vl_literature where reference =\'%s\' and authorized = 1"%(ref) + res = self.search(var=searchStr) + + if res: + if res[0]['online'] == 1: + # item online verfuegbar + if pn: + link.setAttribute("href",self.REQUEST['SERVER_URL']+"/references?id="+ref+"&page="+pn) + else: + link.setAttribute("href",self.REQUEST['SERVER_URL']+"/references?id="+ref) + + link.setAttribute("title", "click to view") + link.removeAttribute("ref") + + # prefix preceding the link + prefix = dom.createTextNode(U"\u2013\u0020") # = ndash + space + dom.documentElement.insertBefore(prefix, link) + + else: + # item nur als bibliographische angabe vorhanden + link.setAttribute("alt", res[0]['fullreference'].decode('utf-8')) + link.setAttribute("title", "click to expand") + link.setAttribute("onclick", "return toggle(this);") + link.setAttribute("class", "x_offline") + + # prefix inside link text + link.firstChild.data = '+ ' + link.firstChild.data + + + newxml=dom.toxml('utf-8') + + retStr=regexpTXT.search(newxml) + retStr = retStr.group(1) + + return retStr.decode('utf-8') # we return unicode + + return u"" - - return "" @@ -242,7 +297,7 @@ def xml2html(self,str,quote="yes"): if self.checkRef(ref): if pn: - newLink.setAttributeNS(EMPTY_NAMESPACE,"href",self.REQUEST['SERVER_URL']+"/references?id="+ref+"&p="+pn) + newLink.setAttributeNS(EMPTY_NAMESPACE,"href",self.REQUEST['SERVER_URL']+"/references?id="+ref+"&page="+pn) else: newLink.setAttributeNS(EMPTY_NAMESPACE,"href",self.REQUEST['SERVER_URL']+"/references?id="+ref) @@ -257,7 +312,7 @@ def xml2html(self,str,quote="yes"): retStr=regexpPage.search(str) try: # hack warum fehtl manchmal page?? - return retStr.group(1) + return retStr.group(1).decode('utf-8') except: return str return ""