changeset 46:31059e3d9338

has now also a text mode viewMode=text
author dwinter
date Sat, 09 Sep 2006 12:52:59 +0200
parents 0391fe75aef3
children a80a5140ed83
files documentViewer.py zpt/image_main.zpt
diffstat 2 files changed, 27 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/documentViewer.py	Wed Jul 26 14:23:55 2006 +0200
+++ b/documentViewer.py	Sat Sep 09 12:52:59 2006 +0200
@@ -1,3 +1,5 @@
+
+
 from OFS.Folder import Folder
 from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate
 from Products.PageTemplates.PageTemplateFile import PageTemplateFile
@@ -16,6 +18,7 @@
 import cgi
 import urllib
 import zLOG
+import urlparse 
 
 def getInt(number, default=0):
     """returns always an int (0 in case of problems)"""
@@ -25,6 +28,7 @@
         return default
 
 def getTextFromNode(nodename):
+    """get the cdata content of a node"""
     if nodename is None:
         return ""
     nodelist=nodename.childNodes
@@ -55,7 +59,8 @@
 ##
 class documentViewer(Folder):
     """document viewer"""
-
+    textViewerUrl="http://127.0.0.1:8080/HFQP/testXSLT/getPage?"
+    
     meta_type="Document viewer"
     
     security=ClassSecurityInfo()
@@ -74,11 +79,13 @@
     changeDocumentViewerForm = PageTemplateFile('zpt/changeDocumentViewer', globals())
 
     
-    def __init__(self,id,imageViewerUrl,title="",digilibBaseUrl=None,thumbcols=2,thumbrows=10,authgroups="mpiwg"):
+    def __init__(self,id,imageViewerUrl,textViewerUrl=None,title="",digilibBaseUrl=None,thumbcols=2,thumbrows=10,authgroups="mpiwg"):
         """init document viewer"""
         self.id=id
         self.title=title
         self.imageViewerUrl=imageViewerUrl
+        self.textViewerUrl=textViewerUrl
+        
         if not digilibBaseUrl:
             self.digilibBaseUrl = self.findDigilibUrl()
         else:
@@ -92,11 +99,13 @@
 
 
     security.declareProtected('View','index_html')
-    def index_html(self,mode,url,start=None,pn=1):
+    def index_html(self,mode,url,viewMode="images",start=None,pn=1):
         '''
         view it
         @param mode: defines which type of document is behind url
         @param url: url which contains display information
+        @param viewMode: if images display images, if text display text, default is images
+        
         '''
         
         zLOG.LOG("documentViewer (index)", zLOG.INFO, "mode: %s url:%s start:%s pn:%s"%(mode,url,start,pn))
@@ -111,7 +120,7 @@
         docinfo = self.getDocinfo(mode=mode,url=url)
         pageinfo = self.getPageinfo(start=start,current=pn,docinfo=docinfo)
         pt = getattr(self.template, 'viewer_main')
-        return pt(docinfo=docinfo,pageinfo=pageinfo)
+        return pt(docinfo=docinfo,pageinfo=pageinfo,viewMode=viewMode)
   
   
     def getLink(self,param=None,val=None):
@@ -205,7 +214,7 @@
             metaUrl=server+url.replace("/mpiwg/online","")
             if not metaUrl.endswith("index.meta"):
                 metaUrl += "/index.meta"
-        
+        print metaUrl
         for cnt in range(num_retries):
             try:
                 # patch dirk encoding fehler treten dann nicht mehr auf
@@ -233,7 +242,7 @@
             
         if dom is None:
             dom = self.getIndexMeta(getParentDir(path))
-            
+       
         acctype = dom.xpath("//access-conditions/access/@type")
         if acctype and (len(acctype)>0):
             access=acctype[0].value
@@ -459,16 +468,22 @@
     def findDigilibUrl(self):
         """try to get the digilib URL from zogilib"""
         url = self.imageViewerUrl[:-1] + "/getScalerUrl"
+        print urlparse.urlparse(url)[0]
+        print urlparse.urljoin(self.absolute_url(),url)
         try:
+            if urlparse.urlparse(url)[0]=='': #relative path
+                url=urlparse.urljoin(self.absolute_url()+"/",url)
+                
             scaler = urlopen(url).read()
             return scaler.replace("/servlet/Scaler?", "")
         except:
             return None
     
-    def changeDocumentViewer(self,imageViewerUrl,title="",digilibBaseUrl=None,thumbrows=2,thumbcols=10,authgroups='mpiwg',RESPONSE=None):
+    def changeDocumentViewer(self,imageViewerUrl,textViewerUrl,title="",digilibBaseUrl=None,thumbrows=2,thumbcols=10,authgroups='mpiwg',RESPONSE=None):
         """init document viewer"""
         self.title=title
         self.imageViewerUrl=imageViewerUrl
+        self.textViewerUrl=textViewerUrl
         self.digilibBaseUrl = digilibBaseUrl
         self.thumbrows = thumbrows
         self.thumbcols = thumbcols
@@ -486,9 +501,9 @@
     pt=PageTemplateFile('zpt/addDocumentViewer', globals()).__of__(self)
     return pt()
   
-def manage_AddDocumentViewer(self,id,imageViewerUrl="",title="",RESPONSE=None):
+def manage_AddDocumentViewer(self,id,imageViewerUrl="",textViewerUrl="",title="",RESPONSE=None):
     """add the viewer"""
-    newObj=documentViewer(id,imageViewerUrl,title)
+    newObj=documentViewer(id,imageViewerUrl,title=title,textViewerUrl=textViewerUrl)
     self._setObject(id,newObj)
     
     if RESPONSE is not None:
--- a/zpt/image_main.zpt	Wed Jul 26 14:23:55 2006 +0200
+++ b/zpt/image_main.zpt	Sat Sep 09 12:52:59 2006 +0200
@@ -1,3 +1,4 @@
-<tal:block tal:define="docinfo options/docinfo; pageinfo options/pageinfo">
- <iframe height="100%" width="100%" tal:attributes="src string:${here/imageViewerUrl}fn=${docinfo/imagePath}&pn=${pageinfo/current}"/>
+<tal:block tal:define="docinfo options/docinfo; pageinfo options/pageinfo; mode python:options.get('viewMode','images')">
+ <iframe tal:condition="python:mode=='images'" height="100%" width="100%" tal:attributes="src string:${here/imageViewerUrl}fn=${docinfo/imagePath}&pn=${pageinfo/current}"/>
+ <iframe tal:condition="python:mode=='text'" height="100%" width="100%" tal:attributes="src string:${here/textViewerUrl}fn=${docinfo/textURL}&_pn=${pageinfo/current}"/>
 </tal:block>