version 1.67, 2008/01/29 13:53:22
|
version 1.74, 2008/09/04 12:09:33
|
Line 2
|
Line 2
|
This module contains extensions which where originally made for the VLP. |
This module contains extensions which where originally made for the VLP. |
""" |
""" |
from OFS.Cache import Cacheable |
from OFS.Cache import Cacheable |
from Products.ECHO_content.ECHO_collection import * |
|
from Products.PageTemplates.PageTemplateFile import PageTemplateFile |
from Products.PageTemplates.PageTemplateFile import PageTemplateFile |
from Products.PageTemplates.PageTemplate import PageTemplate |
from Products.PageTemplates.PageTemplate import PageTemplate |
from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate |
from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate |
from OFS.Image import File |
from OFS.Image import File |
try: |
|
from Products.zogiLib import zogiLib |
|
except: |
|
print "Zogilib not installed, VLP_resource will not work" |
|
|
|
import xml.dom.minidom |
import xml.dom.minidom |
import urllib |
import urllib |
import xmlrpclib |
import xmlrpclib |
Line 23 from types import *
|
Line 17 from types import *
|
from Globals import package_home |
from Globals import package_home |
import transaction |
import transaction |
|
|
|
from Products.ECHO_content.ECHO_collection import * |
|
from vlp_xmlhelpers import * |
|
try: |
|
from Products.zogiLib import zogiLib |
|
except: |
|
print "Zogilib not installed, VLP_resource will not work" |
|
|
|
|
def lemmatize(str): |
def lemmatize(str): |
"""takes a str and addes links the dictionary service""" |
"""takes a str and addes links the dictionary service""" |
Line 47 def makeXML(str):
|
Line 48 def makeXML(str):
|
</page>"""%str |
</page>"""%str |
|
|
|
|
|
def checkXMLfrag(str): |
|
"""checks and returns str as XML fragment""" |
|
|
|
xmltempl = """<?xml version="1.0" encoding="utf-8" ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
|
<txt>%s</txt>""" |
|
|
|
try: |
|
dom=xml.dom.minidom.parseString(xmltempl%utf8ify(str)) |
|
return str |
|
except: |
|
str=str.replace("& ","& ") |
|
|
|
dom=xml.dom.minidom.parseString(xmltempl%utf8ify(str)) |
|
return str |
|
|
|
|
|
|
def getText(nodelist): |
def getText(nodelist): |
|
|
Line 217 class VLP_essay(Folder):
|
Line 234 class VLP_essay(Folder):
|
if RESPONSE is not None: |
if RESPONSE is not None: |
RESPONSE.redirect('manage_main') |
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) |
|
#logging.debug("pageList=%s"%repr(pages)) |
|
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 = "" |
|
if pageObj.meta_type == 'File': |
|
data = pageObj.data |
|
#logging.debug("data=%s txt=%s"%(repr(data),txt)) |
|
while data is not None: |
|
if isinstance(data, str): |
|
txt += data |
|
data = None |
|
else: |
|
txt += data.data |
|
data = data.next |
|
|
|
else: |
|
# not a File object... perhaps its executable |
|
txt += pageObj() |
|
|
|
xml = checkXMLfrag(txt) |
|
|
|
return unicodify(xml) |
|
|
|
|
def getPage(self,pagenum): |
def getPage(self,pagenum): |
"""gibt essay page mit num aus""" |
"""gibt essay page mit num aus""" |
Line 232 class VLP_essay(Folder):
|
Line 299 class VLP_essay(Folder):
|
#print str(pages[int(pagenum)][1]()) |
#print str(pages[int(pagenum)][1]()) |
|
|
if pages[int(pagenum)-1][1].meta_type=='File': |
if pages[int(pagenum)-1][1].meta_type=='File': |
|
|
#return makeXML(str(pages[int(pagenum)-1][1])) |
#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.decode('utf-8') |
txt=pages[int(pagenum)-1][1].data |
txt=pages[int(pagenum)-1][1].data |
#print txt.encode('utf-8') |
#print txt.encode('utf-8') |
|
|
return self.xml2html(makeXML(txt),quote="no") |
return self.xml2html(makeXML(txt),quote="no") |
else: |
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): |
def nextPage(self,pagenum,url): |
Line 628 class VLP_resource(ECHO_resource,Cacheab
|
Line 690 class VLP_resource(ECHO_resource,Cacheab
|
|
|
if os.path.isdir(os.path.join(self.vlp_basis,self.resourceID,'pageimg')): |
if os.path.isdir(os.path.join(self.vlp_basis,self.resourceID,'pageimg')): |
return 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')): |
elif os.path.isdir(os.path.join(self.vlp_basis,self.resourceID,'pages')): |
return os.path.join(self.vlp_basis,self.resourceID,'pagesHi') |
return os.path.join(self.vlp_basis,self.resourceID,'pages') |
else: |
else: |
return "<error>no images </error>" |
return "<error>no images </error>" |
|
|
Line 647 class VLP_resource(ECHO_resource,Cacheab
|
Line 709 class VLP_resource(ECHO_resource,Cacheab
|
|
|
|
|
|
|
|
def identifyMediaType(self): |
|
"""identifiziert den Medientype aus der VLP Datenbank""" |
|
founds=self.ZSQLSimpleSearch('select * from vl_literature where reference=\''+self.resourceID+'\' order by id') |
|
if (not founds) or (len(founds)==0): |
|
self.mediaType="generic" # steht nicht in der Datenbank, dann nimm generisch an |
|
return self.mediaType |
|
|
|
|
|
if founds[0].referencetype =="Audio": |
|
self.mediaType ="audio" |
|
elif founds[0].referencetype =="Film": |
|
self.mediaType ="video" |
|
else: |
|
self.mediaType ="image" # nimm an, dass alle anderen Eintrage in der Datenbank auf images verweisen (Buecher oder Fotografien). |
|
|
|
return self.mediaType |
|
|
|
def getMediaType(self,cached=False): |
|
"""give the Media-type back, if chached False, then get it from the database""" |
|
|
|
if (not hasattr(self,'mediaType')) or (self.mediaType=="") or (not cached): |
|
self.identifyMediaType() |
|
|
|
return self.mediaType |
|
|
|
|
|
|
|
|
def copyTranscriptionFromDB(self): |
def copyTranscriptionFromDB(self): |
"""checks if transcription exits in DB""" |
"""checks if transcription exits in DB""" |
founds=self.ZSQLSimpleSearch('select * from vl_transcript where source=\''+self.resourceID+'\' order by id') |
founds=self.ZSQLSimpleSearch('select * from vl_transcript where source=\''+self.resourceID+'\' order by id') |
Line 701 class VLP_resource(ECHO_resource,Cacheab
|
Line 791 class VLP_resource(ECHO_resource,Cacheab
|
def show(self): |
def show(self): |
"""show the rendered file""" |
"""show the rendered file""" |
|
|
if self.REQUEST.get('p',None): |
mt = self.getMediaType() |
|
|
|
if (mt in ['video','audio']): |
|
pt = self.getVLPTemplate('libraryMovieTemplate') |
|
else: #zur zeit werden alle anderen type auf das libraryTemplate abgebildet. |
|
|
|
if self.REQUEST.get('p',None): #make sure that parameter p exists |
#self.REQUEST.set('pn',self.file2page(self.REQUEST.get('p',None))) |
#self.REQUEST.set('pn',self.file2page(self.REQUEST.get('p',None))) |
params = "pn=%s"%self.file2page(self.REQUEST.get('p',None)) |
params = "pn=%s"%self.file2page(self.REQUEST.get('p',None)) |
mk = self.REQUEST.get('mk',None) |
mk = self.REQUEST.get('mk',None) |
Line 709 class VLP_resource(ECHO_resource,Cacheab
|
Line 805 class VLP_resource(ECHO_resource,Cacheab
|
params += "&mk=%s"%mk |
params += "&mk=%s"%mk |
self.REQUEST.RESPONSE.redirect(self.REQUEST['URL']+'?'+params) |
self.REQUEST.RESPONSE.redirect(self.REQUEST['URL']+'?'+params) |
|
|
if hasattr(self,'libraryTemplate.html'): |
pt = self.getVLPTemplate('libraryTemplate') |
return getattr(self,'libraryTemplate.html')() |
|
|
|
pt=PageTemplateFile(os.path.join(package_home(globals()),'vlp','library_template.zpt')).__of__(self) |
|
pt.content_type="text/html" |
|
return pt() |
return pt() |
|
|
|
def getVLPTemplate(self,name): |
|
html=name+".html" |
|
if hasattr(self,html): |
|
return getattr(self,html) |
|
|
|
pt=PageTemplateFile(os.path.join(package_home(globals()),'vlp',name+'.zpt')).__of__(self) |
|
pt.content_type="text/html" |
|
return pt |
|
|
def index_html(self): |
def index_html(self): |
"""index_html""" |
"""index_html""" |
#return self.REQUEST |
#return self.REQUEST |
Line 766 class VLP_resource(ECHO_resource,Cacheab
|
Line 868 class VLP_resource(ECHO_resource,Cacheab
|
#size of hi resolution |
#size of hi resolution |
files=[] |
files=[] |
try: |
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) |
files=os.listdir(pathHi) |
hi=0 |
hi=0 |
for f in files: |
for f in files: |
Line 813 class VLP_resource(ECHO_resource,Cacheab
|
Line 915 class VLP_resource(ECHO_resource,Cacheab
|
ret=os.listdir(os.path.join(self.vlp_basis,self.resourceID,'pageimg')) |
ret=os.listdir(os.path.join(self.vlp_basis,self.resourceID,'pageimg')) |
self.imagePath='pageimg' |
self.imagePath='pageimg' |
except: |
except: |
ret=os.listdir(os.path.join(self.vlp_basis,self.resourceID,'pagesHi')) |
ret=os.listdir(os.path.join(self.vlp_basis,self.resourceID,'pages')) |
self.imagePath='pagesHi' |
self.imagePath='pages' |
temp=[] |
temp=[] |
ret.sort() |
ret.sort() |
for x in ret: |
for x in ret: |