--- ECHO_content/VLPExtension.py 2007/11/13 19:59:57 1.66 +++ ECHO_content/VLPExtension.py 2008/08/05 16:47:15 1.71 @@ -46,6 +46,21 @@ def makeXML(str): %s """%str + +def checkXMLfrag(str): + """checks and returns str as XML fragment""" + + xmltempl = """ + %s""" + try: + dom=xml.dom.minidom.parseString(xmltempl%str) + return str + except: + str=str.replace("& ","& ") + + dom=xml.dom.minidom.parseString(xmltempl%str) + return str + def getText(nodelist): @@ -217,6 +232,48 @@ class VLP_essay(Folder): if RESPONSE is not None: RESPONSE.redirect('manage_main') + def getPageList(self): + """returns sorted list of (id,object) of page objects""" + + def sortFind(x,y): + return cmp(x[0],y[0]) + +# pages=[] +# pagestmp=self.ZopeFind(self,obj_metatypes=['DTML Document','File']) +# for page in pagestmp: +# if not (page[1].getId()[0]=="."): +# pages.append(page) + + pages = self.objectItems(['DTML Document','File']) + pages.sort(sortFind) + return pages + + + def getPageXMLfrag(self, pageNum=None, pageId=None, pageObj=None): + """returns XML fragment of page with id""" + xml = None + + if pageNum is not None: + pl = self.getPageList() + pageObj = pl[int(pageNum)-1][1] + + if pageId is not None: + pageObj = getattr(self, pageId, None) + + if pageObj is not None: + txt = "" + data = pageObj.data + while data is not None: + txt += data + if isinstance(data, str): + data = None + else: + data = data.next + + xml = checkXMLfrag(txt) + + return xml + def getPage(self,pagenum): """gibt essay page mit num aus""" @@ -225,25 +282,20 @@ class VLP_essay(Folder): pages=[] pagestmp=self.ZopeFind(self,obj_metatypes=['DTML Document','File']) for page in pagestmp: - if not (page[1].getId()[0]=="."): - pages.append(page) + if not (page[1].getId()[0]=="."): + pages.append(page) pages.sort(sortFind) #print str(pages[int(pagenum)][1]()) if pages[int(pagenum)-1][1].meta_type=='File': - - #return makeXML(str(pages[int(pagenum)-1][1])) - #txt=pages[int(pagenum)-1][1].data.decode('utf-8') - txt=pages[int(pagenum)-1][1].data - #print txt.encode('utf-8') - - return self.xml2html(makeXML(txt),quote="no") + #return makeXML(str(pages[int(pagenum)-1][1])) + #txt=pages[int(pagenum)-1][1].data.decode('utf-8') + txt=pages[int(pagenum)-1][1].data + #print txt.encode('utf-8') + return self.xml2html(makeXML(txt),quote="no") else: - - - - return self.xml2html(makeXML(pages[int(pagenum)-1][1]()),quote="no") + return self.xml2html(makeXML(pages[int(pagenum)-1][1]()),quote="no") def nextPage(self,pagenum,url): pages=len(self.ZopeFind(self,obj_metatypes=['DTML Document','File'])) # teste ob performance ok, sonst in variable @@ -628,8 +680,8 @@ class VLP_resource(ECHO_resource,Cacheab if os.path.isdir(os.path.join(self.vlp_basis,self.resourceID,'pageimg')): return os.path.join(self.vlp_basis,self.resourceID,'pageimg') - elif os.path.isdir(os.path.join(self.vlp_basis,self.resourceID,'pagesHi')): - return os.path.join(self.vlp_basis,self.resourceID,'pagesHi') + elif os.path.isdir(os.path.join(self.vlp_basis,self.resourceID,'pages')): + return os.path.join(self.vlp_basis,self.resourceID,'pages') else: return "no images " @@ -766,7 +818,7 @@ class VLP_resource(ECHO_resource,Cacheab #size of hi resolution files=[] try: - pathHi=os.path.join(self.vlp_basis,self.resourceID,'pagesHi') + pathHi=os.path.join(self.vlp_basis,self.resourceID,'pages') files=os.listdir(pathHi) hi=0 for f in files: @@ -813,8 +865,8 @@ class VLP_resource(ECHO_resource,Cacheab ret=os.listdir(os.path.join(self.vlp_basis,self.resourceID,'pageimg')) self.imagePath='pageimg' except: - ret=os.listdir(os.path.join(self.vlp_basis,self.resourceID,'pagesHi')) - self.imagePath='pagesHi' + ret=os.listdir(os.path.join(self.vlp_basis,self.resourceID,'pages')) + self.imagePath='pages' temp=[] ret.sort() for x in ret: @@ -826,12 +878,12 @@ class VLP_resource(ECHO_resource,Cacheab def firstPage(self,url=None): """showlink to the first image""" if self.REQUEST.get('pn','1')=="1": #erste seinte dann kein a tag - return """first
first""" + return """first
first""" else: ws=self.REQUEST.get('ws','1') return """ - first
first + first
first
"""%(self.REQUEST['URL']+"?pn=1&ws=%s"%ws) @@ -842,12 +894,12 @@ class VLP_resource(ECHO_resource,Cacheab ln=len(pages) if (self.REQUEST.get('pn')==str(ln)) or (ln==1): #letzte seite dann kein a tag oder nur eine Seite - return """last
last""" + return """last
last""" else: ws=self.REQUEST.get('ws','1') return """ - last
last + last
last
"""%(self.REQUEST['URL']+"?pn="+str(ln)+"&ws="+ws) @@ -857,12 +909,12 @@ class VLP_resource(ECHO_resource,Cacheab nn = int(self.REQUEST.get('pn','1'))-1 if nn < 1: #letzte seite dann kein a tag - return """prev
prev""" + return """prev
prev""" else: ws=self.REQUEST.get('ws','1') return """ - prev
prev + prev
prev
"""%(self.REQUEST['URL']+"?pn="+str(nn)+"&ws="+ws) @@ -874,12 +926,12 @@ class VLP_resource(ECHO_resource,Cacheab nn = int(self.REQUEST.get('pn','1'))+1 if (nn>int(ln)) or (ln==1): #letzte seite dann kein a tag - return """next
next""" + return """next
next""" else: ws=self.REQUEST.get('ws','1') return """ - next
next + next
next
"""%(self.REQUEST['URL']+"?pn="+str(nn)+"&ws="+ws)