--- ECHO_content/vlp_xmlhelpers.py 2005/10/26 17:30:26 1.6 +++ ECHO_content/vlp_xmlhelpers.py 2007/12/11 17:00:01 1.13 @@ -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(): @@ -184,11 +187,11 @@ def checkRef(self,ref): return res def link2html(self,str): - """link2html liks in html wandeln""" + """link2html links in html wandeln""" if str: str=re.sub("\&","&",str) - dom=xml.dom.minidom.parseString(""+str+"") + dom=xml.dom.minidom.parseString(""+utf8ify(str)+"") links=dom.getElementsByTagName("link") @@ -196,22 +199,78 @@ def link2html(self,str): link.tagName="a" ref=link.getAttribute("ref") pn=link.getAttribute("page") + mk=link.getAttribute("mk") if self.checkRef(ref): - 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) - + more = "" + if pn: + more += "&page=%s"%pn + + if mk: + more += "&mk=%s"%mk + + link.setAttribute("href",self.REQUEST['SERVER_URL']+"/references?id="+ref+more) 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(""+utf8ify(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", unicodify(res[0]['fullreference'])) + 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) + #logging.debug("related2html out=%s"%repr(retStr)) + return retStr.decode('utf-8') # we return unicode + + return u"" - - return "" @@ -257,7 +316,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 ""