--- ECHO_content/VLPExtension.py 2008/01/29 13:53:22 1.67
+++ ECHO_content/VLPExtension.py 2008/08/05 16:50:56 1.72
@@ -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 += str(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: