--- documentViewer/documentViewer.py 2005/12/18 12:35:02 1.1
+++ documentViewer/documentViewer.py 2006/04/06 17:13:43 1.3
@@ -16,6 +16,7 @@ import Ft.Xml.XPath
import os.path
import cgi
import urllib
+import zLOG
def getTextFromNode(nodename):
nodelist=nodename.childNodes
@@ -36,102 +37,87 @@ def urlopen(url):
def getParamFromDigilib(path,param):
"""gibt param von dlInfo aus"""
- imageUrl=genericDigilib+"/dlInfo-xml.jsp?fn="+path
+ imageUrl=genericDigilib+"/dirInfo-xml.jsp?mo=dir&fn="+path
+ zLOG.LOG("documentViewer (getparamfromdigilib)", zLOG.INFO, "dirInfo (%s) from %s"%(param,imageUrl))
+
try:
dom = NonvalidatingReader.parseUri(imageUrl)
except:
return None
-
- params=dom.xpath("//document-parameters/parameter[@name='%s']/@value"%param)
+ params=dom.xpath("//dir/%s"%param)
+ zLOG.LOG("documentViewer (getparamfromdigilib)", zLOG.INFO, "dirInfo:%s"%params)
if params:
- return params[0].value
-
-def parseUrlTextTool(url):
- """parse index meta"""
-
- try:
- dom = NonvalidatingReader.parseUri(url)
- except:
- zLOG.LOG("documentViewer (parseUrlTexttool)", zLOG.INFO,"%s (%s)"%sys.exc_info()[0:2])
- return (None,None,None)
-
- archivePaths=dom.xpath("//resource/archive-path")
-
- if archivePaths and (len(archivePaths)>0):
- archivePath=getTextFromNode(archivePaths[0])
- else:
- archivePath=None
-
-
- images=dom.xpath("//texttool/image")
-
- if images and (len(images)>0):
- image=getTextFromNode(images[0])
- else:
- image=None
-
- if image and archivePath:
- image=os.path.join(archivePath,image)
- image=image.replace("/mpiwg/online",'')
- pt=getParamFromDigilib(image,'pt')
+ return getTextFromNode(params[0])
- else:
- image=None
-
- viewerUrls=dom.xpath("//texttool/digiliburlprefix")
-
- if viewerUrls and (len(viewerUrls)>0):
- viewerUrl=getTextFromNode(viewerUrls[0])
- else:
- viewerUrl=None
-
-
- textUrls=dom.xpath("//texttool/text")
-
- if textUrls and (len(textUrls)>0):
- textUrl=getTextFromNode(textUrls[0])
- else:
- textUrl=None
- return viewerUrl,(image,pt),textUrl
+
-class documentViewer(ZopePageTemplate):
+##
+## documentViewer class
+##
+class documentViewer(Folder):
"""document viewer"""
meta_type="Document viewer"
security=ClassSecurityInfo()
- manage_options=ZopePageTemplate.manage_options+(
+ manage_options=Folder.manage_options+(
{'label':'main config','action':'changeDocumentViewerForm'},
)
- _default_content_fn = os.path.join(package_home(globals()),'zpt','documentViewer_template.zpt')
+ # templates and forms
+ viewer_main = PageTemplateFile('zpt/viewer_main', globals())
+ thumbs_main = PageTemplateFile('zpt/thumbs_main', globals())
+ image_main = PageTemplateFile('zpt/image_main', globals())
+ head_main = PageTemplateFile('zpt/head_main', globals())
+ docuviewer_css = PageTemplateFile('css/docuviewer.css', globals())
+
+ security.declareProtected('View management screens','changeDocumentViewerForm')
+ changeDocumentViewerForm = PageTemplateFile('zpt/changeDocumentViewer', globals())
+
- def __init__(self,id,imageViewerUrl,title=""):
+ def __init__(self,id,imageViewerUrl,title="",digilibBaseUrl=None):
"""init document viewer"""
self.id=id
self.title=title
self.imageViewerUrl=imageViewerUrl
+ self.digilibBaseUrl = digilibBaseUrl
+ if not self.digilibBaseUrl:
+ self.digilibBaseUrl = self.findDigilibUrl()
+ # add template folder so we can always use template.something
+ self.manage_addFolder('template')
+
+
+ security.declareProtected('View','index_html')
+ def index_html(self,mode,url,start=0,pn=1):
+ '''
+ view it
+ @param mode: defines which type of document is behind url
+ @param url: url which contains display information
+ '''
- security.declareProtected('View management screens','changeDocumentViewerForm')
- def changeDocumentViewerForm(self):
- """change it"""
- pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','changeDocumentViewer.zpt')).__of__(self)
- return pt()
+ zLOG.LOG("documentViewer (index)", zLOG.INFO, "mode: %s url:%s start:%s pn:%s"%(mode,url,start,pn))
+ print "dlbaseurl:", self.digilibBaseUrl
+
+ if not hasattr(self, 'template'):
+ # create template folder if it doesn't exist
+ print "no template folder -- creating"
+ self.manage_addFolder('template')
+
+ if not self.digilibBaseUrl:
+ self.digilibBaseUrl = self.findDigilibUrl() or "http://nausikaa.mpiwg-berlin.mpg.de/digitallibrary"
+
+ print "dlbaseurl:", self.digilibBaseUrl
+
+ docinfo = self.getDocinfo(mode=mode, url=url)
+ pageinfo = self.getPageinfo(start=start,current=pn)
+ pt = getattr(self.template, 'viewer_main')
+ return pt(docinfo=docinfo,pageinfo=pageinfo)
- def changeDocumentViewer(self,imageViewerUrl,title="",RESPONSE=None):
- """init document viewer"""
- self.title=title
- self.imageViewerUrl=imageViewerUrl
-
- if RESPONSE is not None:
- RESPONSE.redirect('manage_main')
-
-
def imageLink(self,nr):
"""link hinter den images"""
paramsTmp=cgi.parse_qs(self.REQUEST['QUERY_STRING'])
@@ -143,7 +129,15 @@ class documentViewer(ZopePageTemplate):
newUrl=self.REQUEST['URL']+"?"+urllib.urlencode(params)
return newUrl
-
+ def getStyle(self, idx, selected, style=""):
+ """returns a string with the given style + 'sel' if path == selected."""
+ #zLOG.LOG("documentViewer (getstyle)", zLOG.INFO, "idx: %s selected: %s style: %s"%(idx,selected,style))
+ if idx == selected:
+ return style + 'sel'
+ else:
+ return style
+
+
def thumbruler(self,cols,rows,start,maximum):
"""ruler for thumbs"""
ret=""
@@ -162,7 +156,7 @@ class documentViewer(ZopePageTemplate):
ret+="""prev"""%newUrl
- ret+="""