Diff for /zogiLib/zogiLib.py between versions 1.11 and 1.29

version 1.11, 2004/04/28 16:27:16 version 1.29, 2004/06/22 17:09:13
Line 1 Line 1
   
 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
Line 11  import os Line 12  import os
 import re  import re
 import string  import string
 import urllib  import urllib
   import types
 from Globals import package_home  from Globals import package_home
   
 def getString(self,key,default=''):  ZOGIVERSION = "0.9.4 ROC:22.6.2004"
     try:  
         return self.REQUEST[key]  
     except:  
         return default  
   
       
 class zogiLib_navTemplate(ZopePageTemplate):  
     """pageTemplate Objekt"""  
     meta_type="zogiLib_navTemplate"  
   
     _default_content_fn = os.path.join(package_home(globals()),  
                                        'zpt/zogiLib_NavTemplateDefault.zpt')  
   
     manage_options=ZopePageTemplate.manage_options+(  
         {'label':'Copy to Filesystem','action':'copyContent'},  
        )  
   
     def getPath(self):  
         """get path"""  
         return getPath(self,'thumbtemplate.templ')  
       
   
     def copyContent(self):  
         """copycontent to path"""  
   
         return "copied to:"+copyContent(self,'thumbtemplate.templ')  
           
           
 def manage_addZogiLib_NavTemplateForm(self):  def sendFile(self, filename, type):
     """Form for adding"""      """sends an object or a local file (in the product) as response"""
     pt=PageTemplateFile('Products/zogiLib/zpt/AddZogilib_NavTemplate.zpt').__of__(self)      paths = filename.split('/')
     return pt()      object = self
       # look for an object called filename
       for path in paths:
           if hasattr(object, path):
           object = getattr(object, path)
 def manage_addZogiLib_NavTemplate(self, id,title=None, text=None,  
                            REQUEST=None, submit=None):  
     "Add a Page Template with optional file content."  
   
       
     id = str(id)  
     if REQUEST is None:  
         self._setObject(id, zogilib_NavTemplate(id, text))  
         ob = getattr(self, id)  
          
         if title:  
             ob.pt_setTitle(title)  
         return ob  
     else:  
         file = REQUEST.form.get('file')  
         headers = getattr(file, 'headers', None)  
         if headers is None or not file.filename:  
             zpt = zogilib_NavTemplate(id)  
         else:          else:
             zpt = zogilib_NavTemplate(id, file, headers.get('content_type'))          object = None
           break
         self._setObject(id, zpt)      if object:
         ob = getattr(self, id)      # if the object exists then send it
       return object.index_html(self.REQUEST.REQUEST, self.REQUEST.RESPONSE)
   
         try:  
             u = self.DestinationURL()  
         except AttributeError:  
             u = REQUEST['URL1']  
   
         if submit == " Add and Edit ":  
             u = "%s/%s" % (u, quote(id))  
         REQUEST.RESPONSE.redirect(u+'/manage_main')  
     return ''  
   
   
           
 def readNavTemp(fileName):  
     """navtemp"""  
       
       
     if os.path.exists(fileName+"/index.meta"):  
         dom=xml.dom.minidom.parse(fileName+"/index.meta")  
     else:      else:
         return None      # send a local file with the given content-type
           fn = os.path.join(package_home(globals()), filename)
           self.REQUEST.RESPONSE.setHeader("Content-Type", type)
     try:      self.REQUEST.RESPONSE.write(file(fn).read())
         navTag=getText(dom.getElementsByTagName('zogilibtemplate')[0].childNodes)      return
     except:  
         navTag=None  
     return navTag  
   
 class zogiLib_mainTemplate(ZopePageTemplate):  
     """pageTemplate Objekt"""  
     meta_type="zogiLib_mainTemplate"  
   
       
     def __init__(self, id, text=None, content_type=None, version="book"):  
   
         default_content_string="zpt/zogiLibMain_%s.zpt"%version  def browserCheck(self):
         self._default_content_fn = os.path.join(package_home(globals()),default_content_string)      """check the browsers request to find out the browser type"""
         self.id = str(id)      bt = {}
         self.ZBindings_edit(self._default_bindings)      ua = self.REQUEST.get_header("HTTP_USER_AGENT")
         if text is None:      bt['ua'] = ua
             text = open(self._default_content_fn).read()      bt['isIE'] = string.find(ua, 'MSIE') > -1
         self.pt_edit(text, content_type)      bt['isN4'] = (string.find(ua, 'Mozilla/4.') > -1) and not bt['isIE']
       nav = ua[string.find(ua, '('):]
       ie = string.split(nav, "; ")[1]
       if string.find(ie, "MSIE") > -1:
           bt['versIE'] = string.split(ie, " ")[1]
       bt['isMac'] = string.find(ua, 'Macintosh') > -1
       bt['isWin'] = string.find(ua, 'Windows') > -1
       bt['isIEWin'] = bt['isIE'] and bt['isWin']
       bt['isIEMac'] = bt['isIE'] and bt['isMac']
       bt['staticHTML'] = False
   
       return bt
           
 def manage_addZogiLibMainTemplateForm(self):  def manage_addZogiLibMainTemplateForm(self):
     """Form for adding"""      """Form for adding"""
     pt=PageTemplateFile('Products/ECHO_content/zpt/AddOSAS_thumbTemplate.zpt').__of__(self)      #FIXME:???
       pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/AddOSAS_thumbTemplate.zpt')).__of__(self)
     return pt()      return pt()
   
   
Line 130  def manage_addZogiLibMainTemplateForm(se Line 69  def manage_addZogiLibMainTemplateForm(se
 def manage_addZogiLibMainTemplate(self, id,title=None, text=None,  def manage_addZogiLibMainTemplate(self, id,title=None, text=None,
                            REQUEST=None, submit=None):                             REQUEST=None, submit=None):
     "Add a Page Template with optional file content."      "Add a Page Template with optional file content."
       #FIXME:???
       
     id = str(id)      id = str(id)
     if REQUEST is None:      if REQUEST is None:
         self._setObject(id, zogiLib_mainTemplate(id, text))          self._setObject(id, zogiLib_mainTemplate(id, text))
Line 167  class zogiImage(Image): Line 105  class zogiImage(Image):
     """einzelnes Image"""      """einzelnes Image"""
     meta_type="zogiImage"      meta_type="zogiImage"
   
       manage_options=ZopePageTemplate.manage_options+(
           {'label':'Main config','action':'changeZogiImageForm'},
          )
           
           
     def __init__(self,id,title,baseUrl,queryString,content_type='',precondition=''):      def __init__(self,id,title,baseUrl,queryString,content_type='',precondition=''):
Line 184  class zogiImage(Image): Line 125  class zogiImage(Image):
   
     def changeZogiImageForm(self):      def changeZogiImageForm(self):
         """Main configuration"""          """Main configuration"""
         pt=PageTemplateFile('Products/zogiLib/zpt/changeZogiImageForm.zpt').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/changeZogiImageForm.zpt')).__of__(self)
         return pt()          return pt()
           
     def changeZogiImage(self,title,baseUrl, queryString,RESPONSE=None):      def changeZogiImage(self,title,baseUrl, queryString,RESPONSE=None):
Line 197  class zogiImage(Image): Line 138  class zogiImage(Image):
             RESPONSE.redirect('manage_main')              RESPONSE.redirect('manage_main')
   
   
     manage_options=ZopePageTemplate.manage_options+(  
         {'label':'Main config','action':'changeZogiImageForm'},  
        )  
   
       
   
           
     def index_html(self, REQUEST, RESPONSE):      def index_html(self, REQUEST, RESPONSE):
         """          """
         Modified version of OFS/Image.py          Modified version of OFS/Image.py
Line 470  class zogiImage(Image): Line 404  class zogiImage(Image):
   
 def manage_addZogiImageForm(self):  def manage_addZogiImageForm(self):
     """Form for adding"""      """Form for adding"""
     pt=PageTemplateFile('Products/zogiLib/zpt/addZogiImage.zpt').__of__(self)      pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/addZogiImage.zpt')).__of__(self)
     return pt()      return pt()
   
   
Line 488  class zogiLib(Folder): Line 422  class zogiLib(Folder):
   
     meta_type="zogiLib"      meta_type="zogiLib"
   
     def getDlInfo(self):      manage_options = Folder.manage_options+(
         """DLInfo"""              {'label':'Main Config','action':'changeZogiLibForm'},
               )
   
       def __init__(self, id, title, digilibBaseUrl, localFileBase, version="book", basePath="", dlTarget=None):
           """init"""
   
           self.id=id
           self.title=title
           self.digilibBaseUrl=digilibBaseUrl
           self.localFileBase=localFileBase
           self.basePath=basePath
           self.layout=version
           if dlTarget:
               self.dlTarget = dlTarget
           else:
               self.dlTarget = "digilib"
   
       def version(self):
           """version information"""
           return ZOGIVERSION
   
       def getDLInfo(self):
           """get DLInfo from digilib server"""
         paramH={}          paramH={}
         baseUrl=re.sub("servlet/Scaler","dlInfo-xml.jsp",self.digilibBaseUrl)          baseUrl=re.sub("servlet/Scaler","dlInfo-xml.jsp",self.digilibBaseUrl)
                   try:
         url=urllib.urlopen(baseUrl+self.REQUEST['QUERY_STRING'])          url=urllib.urlopen(baseUrl+self.REQUEST['QUERY_STRING'])
         dom=xml.dom.minidom.parse(url)          dom=xml.dom.minidom.parse(url)
         params=dom.getElementsByTagName('parameter')          params=dom.getElementsByTagName('parameter')
         for param in params:          for param in params:
             paramH[param.getAttribute('name')]=param.getAttribute('value')              paramH[param.getAttribute('name')]=param.getAttribute('value')
         return paramH          return paramH
   
     def getPageNumTotal(self):  
         """pagenums"""  
         return self.getDlInfo()['pt'].encode('utf-8')  
       
       
     def generateImageFolder(self):  
         """images ablegen"""  
         self.manage_addFolder('images')  
         pathName=os.path.join(package_home(globals()),'images')  
         for image in os.listdir(pathName):  
             try:  
                   
                 fn=file(os.path.join(pathName,image))  
                 self.images.manage_addImage(image,fn)  
             except:              except:
                 print "ZOGILIB not imported:",image              return null
                   
                           
                   
       def createHeadJS(self):
           """generate all javascript tags for head"""
       self.checkQuery()
       bt = self.REQUEST.SESSION['browserType']
           if bt['staticHTML']:
               return
   
     def __init__(self, id,title,digilibBaseUrl, localFileBase,version="book"):          pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/zogilib_head_js')).__of__(self)
         """init"""          return pt()
   
         self.id=id      def createParamJS(self):
         self.title=title          """generate javascript for parameters only"""
         self.digilibBaseUrl=digilibBaseUrl      self.checkQuery()
         self.localFileBase=localFileBase      bt = self.REQUEST.SESSION['browserType']
         #self._setObject('topTemplate',zogiLib_navTemplate(id='topTemplate'))          if bt['staticHTML']:
         self._setObject('mainTemplate',zogiLib_mainTemplate(id='mainTemplate',version=version))              return
         self.generateImageFolder()  
   
           pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/zogilib_param_js')).__of__(self)
           return pt()
   
     manage_options = Folder.manage_options+(  
             {'label':'Main Config','action':'changeZogiLibForm'},  
             )  
   
     def option_js(self):      def createScalerImg(self, requestString=None, bottom=0, side=0, width=500, height=500):
         """option_js"""          """generate Scaler IMG Tag"""
         ret="""      self.checkQuery()
           function setDLParam(e) {      bt = self.REQUEST.SESSION['browserType']
           var s;          # override with parameters from session
           if (document.all) {          if  self.REQUEST.SESSION.has_key('scalerDiv'):
             s=e.srcElement;              (requestString, bottom, side, width, height) = self.REQUEST.SESSION['scalerDiv']
           } else {          # if not explicitly defined take normal request
             s=e.target;          if not requestString:
           }              requestString = self.getAllDLParams()
           if (window.opener) {          url = self.digilibBaseUrl+requestString
             window.opener.setParameter(s.name, s.value);          # construct bottom and side insets
             window.opener.display(9);          b_par = ""
           } else {          s_par = ""
             setParameter(s.name, s.value);          if (bottom != 0) or (side != 0):
             display(9);              b_par = "-" + str(int(bottom))
           }              s_par = "-" + str(int(side))
         }"""          tag = ""
         return ret          if bt['staticHTML']:
                                       tag += '<div id="scaler"><img id="pic" src="%s&dw=%i&dh=%i" /></div>'%(url, int(width-side), int(height-bottom))
                                   else:
     def navigation_js(self):              if bt['isN4']:
         """Javascript"""                  # N4 needs layers
         fileName=os.path.join(package_home(globals()),'js/navigation.js')                  tag += '<ilayer id="scaler">'
         return file(fileName).read()              else:
                   tag += '<div id="scaler">'
               tag += '<script type="text/javascript">'
               tag += "var ps = bestPicSize(getElement('scaler'));"
               # write img tag with javascript
               tag += 'document.write(\'<img id="pic" src="%s&dw=\'+(ps.width%s)+\'&dh=\'+(ps.height%s)+\'" />\');'%(url, s_par, b_par)
               tag += '</script>'
               if bt['isN4']:
                   tag += '</ilayer>'
               else:
                   tag += '</div>'
           return tag
   
       def createScalerDiv(self, requestString = None, bottom = 0, side = 0, width=500, height=500):
           """generate scaler img and table with navigation arrows"""
       self.checkQuery()
           if requestString != None or bottom != 0 or side != 0:
               self.REQUEST.SESSION['scalerDiv'] = (requestString, bottom, side, width, height)
           else:
               if self.REQUEST.SESSION.has_key('scalerDiv'):
                   # make shure to remove unused parameter
                   del self.REQUEST.SESSION['scalerDiv']
   
           pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt/zogilib_img_div')).__of__(self)
           return pt()
                           
     def generateTopJavaScript(self):      def createAuxDiv(self):
         """generate script"""          """generate other divs"""
         ret="""      self.checkQuery()
         var baseUrl = '%s'; """% self.REQUEST['URL0']      bt = self.REQUEST.SESSION['browserType']
         ret+="""          if bt['staticHTML']:
         newParameter('fn', '', 1);              return
         newParameter('pn', '1', 1);          if bt['isN4']:
         newParameter('ws', '1.0', 1);              f = 'zpt/zogilib_divsN4.zpt'
         newParameter('mo', '', 1);          else:
         newParameter('mk', '', 3);              f = 'zpt/zogilib_divs.zpt'
         newParameter('wx', '0.0', 2);          pt=PageTemplateFile(os.path.join(package_home(globals()),f)).__of__(self)
         newParameter('wy', '0.0', 2);          return pt()
         newParameter('ww', '1.0', 2);  
         newParameter('wh', '1.0', 2);  
         newParameter('pt', '0', 9);  
         newParameter('brgt', '0.0', 1);  
         newParameter('cont', '0.0', 1);  
         newParameter('rot', '0.0', 1);  
         newParameter('rgba', '', 1);  
         newParameter('rgbm', '', 1);  
         newParameter('ddpix', '', 9);  
         newParameter('ddpiy', '', 9);  
         var picsize = new Size(100, 100);  
         document.id='digilib';  
   
         """  
         return ret  
   
       def option_js(self):
           """javascript"""
           return sendFile(self, 'js/option.js', 'text/plain')
                   
     def generateScalerImg(self,requestString):      def dl_lib_js(self):
         """generate Scaler IMG Tag"""          """javascript"""
         retStr=self.digilibBaseUrl+requestString          return sendFile(self, 'js/dl_lib.js', 'text/plain')
         jS="""<script type="text/javascript">var ps = bestPicSize('scaler');  
         document.write('<img id="pic" src="%s&dw='+ps.width+'&dh='+ps.height+'" />')      def js_lib_js(self):
         </script>"""%retStr          """javascript"""
         return jS          return sendFile(self, 'js/js_lib.js', 'text/plain')
   
     def changeZogiLibForm(self):      def optionwindow(self):
         """Main configuration"""          """showoptions"""
         pt=PageTemplateFile('Products/zogiLib/zpt/changeZogiLibForm.zpt').__of__(self)      self.checkQuery()
       bt = self.REQUEST.SESSION['browserType']
           if bt['staticHTML']:
               pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/optionwindow_static.zpt')).__of__(self)
           else:
               pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/optionwindow.zpt')).__of__(self)
         return pt()          return pt()
           
     def changeZogiLib(self,title,digilibBaseUrl, localFileBase,RESPONSE=None):      def mark1(self):
         """change it"""          """mark image"""
         self.title=title          return sendFile(self, 'images/mark1.gif', 'image/gif')
         self.digilibBaseUrl=digilibBaseUrl  
         self.localFileBase=localFileBase      def mark2(self):
           """mark image"""
         if RESPONSE is not None:          return sendFile(self, 'images/mark2.gif', 'image/gif')
             RESPONSE.redirect('manage_main')  
       def mark3(self):
           """mark image"""
           return sendFile(self, 'images/mark3.gif', 'image/gif')
   
       def mark4(self):
           """mark image"""
           return sendFile(self, 'images/mark4.gif', 'image/gif')
   
       def mark5(self):
           """mark image"""
           return sendFile(self, 'images/mark5.gif', 'image/gif')
   
       def mark6(self):
           """mark image"""
           return sendFile(self, 'images/mark6.gif', 'image/gif')
   
       def mark7(self):
           """mark image"""
           return sendFile(self, 'images/mark7.gif', 'image/gif')
   
       def mark8(self):
           """mark image"""
           return sendFile(self, 'images/mark8.gif', 'image/gif')
   
       def corner1(self):
           """mark image"""
           return sendFile(self, 'images/olinks.gif', 'image/gif')
   
       def corner2(self):
           """mark image"""
           return sendFile(self, 'images/orechts.gif', 'image/gif')
   
       def corner3(self):
           """mark image"""
           return sendFile(self, 'images/ulinks.gif', 'image/gif')
   
       def corner4(self):
           """mark image"""
           return sendFile(self, 'images/urechts.gif', 'image/gif')
   
       def up_img(self):
           """mark image"""
           return sendFile(self, 'images/up.gif', 'image/gif')
   
       def down_img(self):
           """mark image"""
           return sendFile(self, 'images/down.gif', 'image/gif')
   
       def left_img(self):
           """mark image"""
           return sendFile(self, 'images/left.gif', 'image/gif')
   
       def right_img(self):
           """mark image"""
           return sendFile(self, 'images/right.gif', 'image/gif')
                           
     def nav_html(self,fileName):  
         """navigations frame"""  
         ## currently not in use  
         # suche nach index.meta mit zogilib thumb info  
           
         templ=readNavTemp(self.localFileBase+"/"+fileName)  
         if not templ:  
             templ=readNavTemp(self.localFileBase+"/"+fileName.split("/")[0])  
             if not templ:  
                 return self.topTemplate.document_src()  
   
         return urllib.urlopen(templ).read()  
           
           
     def index_html(self):      def index_html(self):
         """main action"""          """main action"""
       self.checkQuery()
       bt = self.REQUEST.SESSION['browserType']
           tp = "zogiLibMainTemplate"
           if hasattr(self, tp):
           pt = getattr(self, tp)
           else:
               tpt = self.layout
               if bt['staticHTML']:
                   tpt = "static"
   
               pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/zogiLibMain_%s'%tpt)).__of__(self)
   
         #pt=PageTemplateFile('Products/zogiLib/zpt/zogiLibMain_image.zpt').__of__(self)          return pt()
         #return pt()  
         return self.mainTemplate()  
   
     def storeQuery(self):  
         """storeQuery in session"""  
         self.REQUEST.SESSION['query']={}  
         for fm in self.REQUEST.form.keys():  
             self.REQUEST.SESSION['query'][fm]=self.REQUEST.form[fm]  
   
         self.REQUEST.SESSION['dlInfo']=self.getDlInfo()  
                   
     def getParam(self,param):      def storeQuery(self, more = None):
         """Gebe Parameter aus"""          """storeQuery in session"""
           dlParams = {}
           for fm in self.REQUEST.form.keys():
               dlParams[fm] = self.REQUEST.form[fm]
           # look for more
           if more:
               for fm in more.split('&'):
         try:          try:
             return self.REQUEST.SESSION['query'][param]                      pv = fm.split('=')
                       dlParams[pv[0]] = pv[1]
         except:          except:
             return None                      pass
   
     def getPageNum(self):          # parse digilib mode parameter
         """PAgenum"""          if 'mo' in dlParams:
         pn=self.getParam('pn')              if len(dlParams['mo']) > 0:
         if pn:                  modes=dlParams['mo'].split(',')
             return pn  
         else:  
             return 1  
   
     def biggerWS(self):  
         """ws+1"""  
         ws=self.getParam('ws')  
         if ws:  
             return int(ws)+1  
         else:          else:
             return 2              modes=[]
   
     def options(self):          self.REQUEST.SESSION['query'] = dlParams
         """showoptions"""          self.REQUEST.SESSION['dlModes'] = modes
         pt=PageTemplateFile('Products/zogiLib/zpt/optionwindow.zpt').__of__(self)          self.REQUEST.SESSION['dlInfo'] = self.getDLInfo()
         return pt()          if not self.REQUEST.SESSION.has_key('browserType'):
               self.REQUEST.SESSION['browserType'] = browserCheck(self)
   
           
     def smallerWS(self):  
         """ws-11"""  
         ws=self.getParam('ws')  
         if ws:  
             if int(ws)==1:  
                 return                  return
             else:  
                 return int(ws)-1  
         else:  
             return 1  
           
           
     def setParam(self,pn=None,ws=None,rot=None,brgt=None,cont=None):  
         """setze Parameter"""  
         ret=""  
   
         if brgt:  
             self.REQUEST.SESSION['query']['brgt']=brgt  
   
         if cont:  
             self.REQUEST.SESSION['query']['cont']=cont  
   
         if pn:  
             self.REQUEST.SESSION['query']['pn']=pn  
   
         if ws:  
             self.REQUEST.SESSION['query']['ws']=ws  
   
         if rot:      def checkQuery(self):
             self.REQUEST.SESSION['query']['rot']=rot      """check if the query has been stored"""
                   if not (self.REQUEST.SESSION and self.REQUEST.SESSION.has_key('query')) :
         for param in self.REQUEST.SESSION['query'].keys():          print "ZOGILIB: have to store query!!"
                       self.storeQuery()
             ret+=param+"="+str(self.REQUEST.SESSION['query'][param])+"&"          return
           
         self.REQUEST.RESPONSE.redirect(self.REQUEST['URL1']+'?'+ret)  
   
       def zogilibPath(self, otherbase=None):
           """returns an URL to the zogiLib instance"""
           url = self.REQUEST['URL1']
           # should end with "/"
           if len(url) > 0 and url[-1] != '/':
               url += '/'
           if type(otherbase) is str:
               url += otherbase
           else:
               url += self.basePath
           # should end with "/"
           if len(url) > 0 and url[-1] != '/':
               url += '/'
           return url
         
     def mirrorPage(self,mi):      def getDLParam(self, param):
         """mirror"""          """returns parameter"""
         ret=""  
         try:          try:
             splitted=self.REQUEST.SESSION['query']['mo'].split(',')              return self.REQUEST.SESSION['query'][param]
         except:          except:
             splitted=[]              return
           
         if mi=="h":  
                                           
             if 'hmir' in splitted:      def setDLParam(self, param, value):
                 splitted.remove('hmir')          """sets parameter"""
             else:          self.REQUEST.SESSION['query'][param] = value
                 splitted.append('hmir')          return
   
         if mi=="v":      def getAllDLParams(self):
           """parameter string for digilib"""
           dlParams = self.REQUEST.SESSION['query']
           # save modes
           modes = self.REQUEST.SESSION['dlModes']
           dlParams['mo'] = string.join(modes, ',')
           # assemble query string
           ret = ""
           for param in dlParams.keys():
               if dlParams[param] is None: continue
               val = str(dlParams[param])
               if val != "":
                   ret += param + "=" + val + "&"
   
             if 'vmir' in splitted:          # omit trailing "&"
                 splitted.remove('vmir')          return ret.rstrip('&')
             else:  
                 splitted.append('vmir')  
   
   
         self.REQUEST.SESSION['query']['mo']=string.join(splitted,",")      def setDLParams(self,pn=None,ws=None,rot=None,brgt=None,cont=None):
           """setze Parameter"""
                   
           self.setDLParam('brgt', brgt)
           self.setDLParam('cont', cont)
           self.setDLParam('ws', ws)
           self.setDLParam('rot', rot)
                   
           if pn:
               # unmark
               self.setDLParam('mk', None)
               self.setDLParam('pn', pn)
               
           return self.display()
                   
                   
         for param in self.REQUEST.SESSION['query'].keys():      def display(self):
           """(re)display page"""
           params = self.getAllDLParams()
           if self.basePath:
               self.REQUEST.RESPONSE.redirect(self.REQUEST['URL2']+'?'+params)
           else:
               self.REQUEST.RESPONSE.redirect(self.REQUEST['URL1']+'?'+params)
                           
             ret+=param+"="+str(self.REQUEST.SESSION['query'][param])+"&"  
                   
         self.REQUEST.RESPONSE.redirect(self.REQUEST['URL1']+'?'+ret)      def setStaticHTML(self, static=True):
           """sets the preference to static HTML"""
           self.checkQuery()
       self.REQUEST.SESSION['browserType']['staticHTML'] = static
           return
                   
     def decode(self,strR):      def isStaticHTML(self):
         """decode &"""          """returns if the page is using static HTML only"""
           self.checkQuery()
       return self.REQUEST.SESSION['browserType']['staticHTML']
                   
         return re.sub('\&amp','\&',strR)      def getPT(self):
           """pagenums"""
           di = self.REQUEST.SESSION['dlInfo']
           if di:
               return int(di['pt'])
           else:
               return 1
           
     def wholePage(self):      def getPN(self):
         """zoom out"""          """Pagenum"""
         ret=""          pn = self.getDLParam('pn')
           try:
               return int(pn)
           except:
               return 1
                   
         self.REQUEST.SESSION['query']['ww']=1      def getBiggerWS(self):
         self.REQUEST.SESSION['query']['wh']=1          """ws+1"""
         self.REQUEST.SESSION['query']['wx']=0          ws = self.getDLParam('ws')
         self.REQUEST.SESSION['query']['wy']=0          try:
               return float(ws)+0.5
           except:
               return 1.5
                           
         for param in self.REQUEST.SESSION['query'].keys():      def getSmallerWS(self):
           """ws-1"""
           ws=self.getDLParam('ws')
           try:
               return max(float(ws)-0.5, 1)
           except:
               return 1
                           
             ret+=param+"="+str(self.REQUEST.SESSION['query'][param])+"&"      def hasMode(self, mode):
           """returns if mode is in the diglib mo parameter"""
           return (mode in self.REQUEST.SESSION['dlModes'])
   
       def hasNextPage(self):
           """returns if there is a next page"""
           pn = self.getPN()
           pt = self.getPT()
           return (pn < pt)
      
       def hasPrevPage(self):
           """returns if there is a previous page"""
           pn = self.getPN()
           return (pn > 1)
   
       def canMoveLeft(self):
           """returns if its possible to move left"""
           wx = float(self.getDLParam('wx') or 0)
           return (wx > 0)
   
       def canMoveRight(self):
           """returns if its possible to move right"""
           wx = float(self.getDLParam('wx') or 0)
           ww = float(self.getDLParam('ww') or 1)
           return (wx + ww < 1)
   
       def canMoveUp(self):
           """returns if its possible to move up"""
           wy = float(self.getDLParam('wy') or 0)
           return (wy > 0)
   
       def canMoveDown(self):
           """returns if its possible to move down"""
           wy = float(self.getDLParam('wy') or 0)
           wh = float(self.getDLParam('wh') or 1)
           return (wy + wh < 1)
   
   
       def dl_StaticHTML(self):
           """set rendering to static HTML"""
           self.checkQuery()
           self.REQUEST.SESSION['browserType']['staticHTML'] = True
           return self.display()
   
       def dl_DynamicHTML(self):
           """set rendering to dynamic HTML"""
           self.checkQuery()
           self.REQUEST.SESSION['browserType']['staticHTML'] = False
           return self.display()
           
       def dl_HMirror(self):
           """mirror action"""
           modes = self.REQUEST.SESSION['dlModes']
           if 'hmir' in modes:
               modes.remove('hmir')
           else:
               modes.append('hmir')
                   
         self.REQUEST.RESPONSE.redirect(self.REQUEST['URL1']+'?'+ret)          return self.display()
                   
     def prevPage(self,pn=None):      def dl_VMirror(self):
         """next page"""          """mirror action"""
         ret=""          modes = self.REQUEST.SESSION['dlModes']
           if 'vmir' in modes:
               modes.remove('vmir')
           else:
               modes.append('vmir')
   
         if pn and pn>0:          return self.display()
             pn=str(int(pn)-1)  
                   
       def dl_Zoom(self, z):
           """general zoom action"""
           ww1 = float(self.getDLParam('ww') or 1)
           wh1 = float(self.getDLParam('wh') or 1)
           wx = float(self.getDLParam('wx') or 0)
           wy = float(self.getDLParam('wy') or 0)
           ww2 = ww1 * z
           wh2 = wh1 * z
           wx += (ww1 - ww2) / 2
           wy += (wh1 - wh2) / 2
           ww2 = max(min(ww2, 1), 0)
           wh2 = max(min(wh2, 1), 0)
           wx = max(min(wx, 1), 0)
           wy = max(min(wy, 1), 0)
           self.setDLParam('ww', ww2)
           self.setDLParam('wh', wh2)
           self.setDLParam('wx', wx)
           self.setDLParam('wy', wy)
           return self.display()
           
       def dl_ZoomIn(self):
           """zoom in action"""
           z = 0.7071
           return self.dl_Zoom(z)
   
       def dl_ZoomOut(self):
           """zoom out action"""
           z = 1.4142
           return self.dl_Zoom(z)
   
       def dl_Move(self, dx, dy):
           """general move action"""
           ww = float(self.getDLParam('ww') or 1)
           wh = float(self.getDLParam('wh') or 1)
           wx = float(self.getDLParam('wx') or 0)
           wy = float(self.getDLParam('wy') or 0)
           wx += dx * 0.5 * ww
           wy += dy * 0.5 * wh
           wx = max(min(wx, 1), 0)
           wy = max(min(wy, 1), 0)
           self.setDLParam('wx', wx)
           self.setDLParam('wy', wy)
           return self.display()
           
       def dl_MoveLeft(self):
           """move left action"""
           return self.dl_Move(-1, 0)
       
       def dl_MoveRight(self):
           """move left action"""
           return self.dl_Move(1, 0)
       
       def dl_MoveUp(self):
           """move left action"""
           return self.dl_Move(0, -1)
       
       def dl_MoveDown(self):
           """move left action"""
           return self.dl_Move(0, 1)
       
       def dl_WholePage(self):
           """zoom out action"""
           self.setDLParam('ww', 1)
           self.setDLParam('wh', 1)
           self.setDLParam('wx', 0)
           self.setDLParam('wy', 0)
           return self.display()
           
       def dl_PrevPage(self):
           """next page action"""
           pn = self.getPN() - 1
           if pn < 1:
               pn = 1
           self.setDLParam('pn', pn)
           # unmark
           self.setDLParam('mk', None)
           return self.display()
           
       def dl_NextPage(self):
           """next page action"""
           pn = self.getPN() + 1
           pt = self.getPT()
           if pn > pt:
               pn = pt
           self.setDLParam('pn', pn)
           # unmark
           self.setDLParam('mk', None)
           return self.display()
   
       def dl_FirstPage(self):
           """first page action"""
           self.setDLParam('pn', 1)
           # unmark
           self.setDLParam('mk', None)
           return self.display()
       
       def dl_LastPage(self):
           """last page action"""
           self.setDLParam('pn', self.getPT())
           # unmark
           self.setDLParam('mk', None)
           return self.display()
   
       def dl_Unmark(self):
           """action to remove last mark"""
           mk = self.getDLParam('mk')
           if mk:
               marks = mk.split(',')
               marks.pop()
               mk = string.join(marks, ',')
               self.setDLParam('mk', mk)
           return self.display()
   
         self.REQUEST.form['pn']=pn  
                   
         for param in self.REQUEST.form.keys():  
                           
             ret+=param+"="+str(self.REQUEST.form[param])+"&"      def changeZogiLibForm(self):
           """Main configuration"""
           pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/changeZogiLibForm.zpt')).__of__(self)
           return pt()
                   
         self.REQUEST.RESPONSE.redirect(self.REQUEST['URL1']+'?'+ret)      def changeZogiLib(self,title,digilibBaseUrl, localFileBase, version, basePath, dlTarget, RESPONSE=None):
           """change it"""
           self.title=title
           self.digilibBaseUrl=digilibBaseUrl
           self.localFileBase=localFileBase
           self.basePath = basePath
           self.layout=version
           if dlTarget:
               self.dlTarget = dlTarget
           else:
               self.dlTarget = "digilib"
   
     def firstPage(self):          if RESPONSE is not None:
         """erste Seite"""              RESPONSE.redirect('manage_main')
         return self.setParam(pn="1")  
           
     def lastPage(self):  
         """letzte Seite"""  
   
   def manage_addZogiLibForm(self):
       """interface for adding zogilib"""
       pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/addZogiLibForm')).__of__(self)
       return pt()
                   
     def nextPage(self,pn=None):  def manage_addZogiLib(self,id,title,digilibBaseUrl, localFileBase,version="book",basePath="",dlTarget="digilib",RESPONSE=None):
         """next page"""      """add dgilib"""
         ret=""      newObj=zogiLib(id,title,digilibBaseUrl, localFileBase, version, basePath, dlTarget)
       self.Destination()._setObject(id,newObj)
       if RESPONSE is not None:
           RESPONSE.redirect('manage_main')
                   
         try:  
             pn=str(int(pn)+1)  
         except:  
             pn=str(2)  
   
         self.REQUEST.form['pn']=pn  class zogiLibPageTemplate(ZopePageTemplate):
       """pageTemplate Objekt"""
       meta_type="zogiLib_pageTemplate"
                   
         for param in self.REQUEST.form.keys():  
             ret+=param+"="+str(self.REQUEST.form[param])+"&"  
                   
         self.REQUEST.RESPONSE.redirect(self.REQUEST['URL1']+'?'+ret)  ## def __init__(self, id, text=None, contentType=None):
   ##         self.id = str(id)
   ##         self.ZBindings_edit(self._default_bindings)
   ##         if text is None:
   ##             text = open(self._default_cont).read()
   ##         self.pt_edit(text, contentType)
   
     def generateDivs(self):  def manage_addZogiLibPageTemplateForm(self):
         """generate divs"""      """Form for adding"""
         pt=PageTemplateFile('Products/zogiLib/zpt/zogilib_divs').__of__(self)      pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/addZogiLibPageTemplateForm')).__of__(self)
         return pt()          return pt()
   
         #divFileName=os.path.join(package_home(globals()),'zpt/zogilib_divs.zpt')  def manage_addZogiLibPageTemplate(self, id='zogiLibMainTemplate', title=None, layout=None, text=None,
         #return open(divFileName).read()                             REQUEST=None, submit=None):
       "Add a Page Template with optional file content."
                       
 def manage_addZogiLibForm(self):      id = str(id)
     """interface for adding zogilib"""      self._setObject(id, zogiLibPageTemplate(id))
     pt=PageTemplateFile('Products/zogiLib/zpt/addZogiLibForm').__of__(self)      ob = getattr(self, id)
     return pt()      if not layout: layout = "book"
       ob.pt_edit(open(os.path.join(package_home(globals()),'zpt/zogiLibMain_%s.zpt'%layout)).read(),None)
       if title:
           ob.pt_setTitle(title)
       try:
           u = self.DestinationURL()
       except AttributeError:
           u = REQUEST['URL1']
   
 def manage_addZogiLib(self,id,title,digilibBaseUrl, localFileBase,version="book",RESPONSE=None):      u = "%s/%s" % (u, urllib.quote(id))
     """add dgilib"""      REQUEST.RESPONSE.redirect(u+'/manage_main')
     newObj=zogiLib(id,title,digilibBaseUrl, localFileBase, version)      return ''
     self.Destination()._setObject(id,newObj)  
     if RESPONSE is not None:  
         RESPONSE.redirect('manage_main')  

Removed from v.1.11  
changed lines
  Added in v.1.29


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>