Diff for /zogiLib/zogiLib.py between versions 1.62 and 1.72

version 1.62, 2006/02/01 12:25:11 version 1.72, 2010/06/18 19:45:07
Line 18  import string Line 18  import string
 import urllib  import urllib
 import xml.dom.minidom  import xml.dom.minidom
   
 ZOGIVERSION = "0.10.1b ROC 8.11.2005"  ZOGIVERSION = "0.10.4b ROC 13.11.2006"
   
 def cropf(f):  def cropf(f):
     """returns a float with reduced precision"""      """returns a float with reduced precision"""
Line 57  class zogiImage(SimpleItem): Line 57  class zogiImage(SimpleItem):
     """einzelnes Image"""      """einzelnes Image"""
     meta_type="zogiImage"      meta_type="zogiImage"
   
     manage_options=SimpleItem.manage_options+(      manage_options=(
         {'label':'Main config','action':'changeZogiImageForm'},          {'label':'Main config','action':'changeZogiImageForm'},
        )         )+SimpleItem.manage_options
           
           
     def __init__(self,id,title,baseUrl,queryString,content_type='',precondition=''):      def __init__(self,id,title,baseUrl,queryString,content_type='',precondition=''):
Line 79  class zogiImage(SimpleItem): Line 79  class zogiImage(SimpleItem):
     #    """getUrlData"""      #    """getUrlData"""
     #    return urllib.urlopen(self.baseUrl+self.queryString)      #    return urllib.urlopen(self.baseUrl+self.queryString)
   
     def changeZogiImageForm(self):      changeZogiImageForm = PageTemplateFile('zpt/changeZogiImageForm.zpt', globals())
         """Main configuration"""  
         pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/changeZogiImageForm.zpt')).__of__(self)  
         return pt()  
       
     def changeZogiImage(self,title,baseUrl, queryString,RESPONSE=None):  
         """change it"""  
         self.title=title  
         self.baseUrl=baseUrl  
         self.queryString=queryString  
   
         if RESPONSE is not None:  
             RESPONSE.redirect('manage_main')  
   
     def index_html(self, REQUEST, RESPONSE):      def index_html(self, REQUEST, RESPONSE):
         """service the request by redirecting to digilib server"""          """service the request by redirecting to digilib server"""
         RESPONSE.redirect(self.baseUrl+self.queryString)          # use status 307 = moved temporarily
           RESPONSE.redirect(self.baseUrl+self.queryString, status=307)
         return ''          return ''
                   
   
     def rescale(self,width=None,height=None):      def rescale(self,width=None,height=None):
         """andere parameter im querystring"""          """andere parameter im querystring"""
         qs=cgi.parse_qs(self.queryString)          qs=cgi.parse_qs(self.queryString)
Line 110  class zogiImage(SimpleItem): Line 100  class zogiImage(SimpleItem):
         if height:          if height:
             qs['dh']=height              qs['dh']=height
   
           
         qsneu=urllib.urlencode(qs)          qsneu=urllib.urlencode(qs)
         self.queryString=qsneu          self.queryString=qsneu
         return "done"          return "done"
           
       
       def setWithDigilibURL(self,digilibUrl):
           """take all parameters from digilib URL string"""
           base = re.match('(.*?/Scaler\?)(.*)', digilibUrl)
           if base is not None:
               params = base.group(2).split('&')
               newparams = []
               # filter out the parameters we want
               for p in params:
                   (key, val) = p.split('=')
                   if key in ['fn','pn','dw','dh','ww','wh','wx','wy','mo']:
                       newparams.append(p)
               # set the new parameters
               if len(newparams) > 1:
                   self.baseUrl = base.group(1)
                   self.queryString = '&'.join(newparams)
                   return True
           
           return False
       
       
       def changeZogiImage(self,title,baseUrl, queryString, digilibUrl=None, RESPONSE=None):
           """change it"""
           self.title=title
           self.baseUrl=baseUrl
           self.queryString=queryString
           if digilibUrl is not None and len(digilibUrl) > 0:
               self.setWithDigilibURL(digilibUrl)
               
           if RESPONSE is not None:
               RESPONSE.redirect('manage_main')
   
       
 def manage_addZogiImageForm(self):  def manage_addZogiImageForm(self):
     """Form for adding"""      """Form for adding"""
     pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/addZogiImage.zpt')).__of__(self)      pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/addZogiImage.zpt')).__of__(self)
     return pt()      return pt()
   
   
 def manage_addZogiImage(self,id,title,baseUrl, queryString,RESPONSE=None):  def manage_addZogiImage(self,id,title,baseUrl,queryString,digilibUrl=None,RESPONSE=None):
     """add zogiimage"""      """add zogiimage"""
     newObj=zogiImage(id,title,baseUrl, queryString)      newObj=zogiImage(id,title,baseUrl, queryString)
     self.Destination()._setObject(id,newObj)      self.Destination()._setObject(id,newObj)
       if digilibUrl is not None and len(digilibUrl) > 0:
           newObj.setWithDigilibURL(digilibUrl)
     if RESPONSE is not None:      if RESPONSE is not None:
         RESPONSE.redirect('manage_main')          RESPONSE.redirect('manage_main')
   
Line 163  class zogiLib(Folder): Line 187  class zogiLib(Folder):
     main_book      = PageTemplateFile('zpt/main_book', globals())      main_book      = PageTemplateFile('zpt/main_book', globals())
     main_image     = PageTemplateFile('zpt/main_image', globals())      main_image     = PageTemplateFile('zpt/main_image', globals())
     main_metaData  = PageTemplateFile('zpt/main_metadata', globals())      main_metaData  = PageTemplateFile('zpt/main_metadata', globals())
       main_embed      = PageTemplateFile('zpt/main_embed', globals())
     #main_static    = PageTemplateFile('zpt/main_static', globals())      #main_static    = PageTemplateFile('zpt/main_static', globals())
     options        = PageTemplateFile('zpt/options', globals())      options        = PageTemplateFile('zpt/options', globals())
     changeForm     = PageTemplateFile('zpt/changeForm', globals())      #changeForm     = PageTemplateFile('zpt/changeForm', globals())
   
 # display templates  # display templates
     aux_divs       = PageTemplateFile('zpt/aux_divs', globals())      aux_divs       = PageTemplateFile('zpt/aux_divs', globals())
Line 334  class zogiLib(Folder): Line 359  class zogiLib(Folder):
             return {}              return {}
   
   
     def zogilibPath(self, otherbase=None):      def zogilibPathOLD(self, otherbase=None):
         """returns an URL to the zogiLib instance"""          """returns an URL to the zogiLib instance"""
         url = self.REQUEST['URL1']          url = self.REQUEST['URL1']
         # should end with "/"          # should end with "/"
Line 349  class zogiLib(Folder): Line 374  class zogiLib(Folder):
             url += '/'              url += '/'
         return url          return url
   
       def zogilibPath(self, otherbase=None):
           """returns an URL to the zogiLib instance"""
           url = self.absolute_url()
           # should end with "/"
           if len(url) > 0 and url[-1] != '/':
               url += '/'
           if type(otherbase) is str:
               url += otherbase
           else:
               url += self.basePath
           # should still end with "/"
           if len(url) > 0 and url[-1] != '/':
               url += '/'
           return url
     def zogilibAction(self, action, otherbase=None):      def zogilibAction(self, action, otherbase=None):
         """returns a URL with zogilib path and action"""          """returns a URL with zogilib path and action"""
         url = self.zogilibPath(otherbase)          url = self.zogilibPath(otherbase)
Line 372  class zogiLib(Folder): Line 411  class zogiLib(Folder):
   
     def getScalerUrl(self,requestString=""):      def getScalerUrl(self,requestString=""):
         """send scaler url"""          """send scaler url"""
           if requestString is None:
               requestString = ""
         if self.dlServerURL[-1] == '?':          if self.dlServerURL[-1] == '?':
             # full Servlet URL              # full Servlet URL
             return self.dlServerURL + requestString              return self.dlServerURL + requestString
Line 389  class zogiLib(Folder): Line 430  class zogiLib(Folder):
         return True          return True
           
                   
     def createScalerImg(self, requestString=None, bottom=0, side=0, width=500, height=500):      def createScalerImg(self, requestString=None, bottom=0, side=0, width=500, height=500, options=None):
         """generate Scaler IMG Tag"""          """generate Scaler IMG Tag"""
         self.checkQuery()          self.checkQuery()
         bt = self.REQUEST.SESSION['browserType']          bt = self.getBrowserType()
         # override with parameters from session          # override with parameters from session
         if  self.REQUEST.SESSION.has_key('scalerDiv'):          if  self.REQUEST.SESSION.has_key('scalerDiv'):
             (requestString, bottom, side, width, height) = self.REQUEST.SESSION['scalerDiv']              (requestString, bottom, side, width, height) = self.REQUEST.SESSION['scalerDiv']
         # if not explicitly defined take normal request          # if not explicitly defined take normal request
         if not requestString:  
             requestString = self.getAllDLParams()  
         url = self.getScalerUrl(requestString=requestString)          url = self.getScalerUrl(requestString=requestString)
           # take insets from options if present
           if options is not None:
               side = options.get('side', side)
               bottom = options.get('bottom', bottom)
         # construct bottom and side insets          # construct bottom and side insets
         b_par = ""          b_par = ""
         s_par = ""          s_par = ""
Line 418  class zogiLib(Folder): Line 461  class zogiLib(Folder):
             tag += '<script type="text/javascript">'              tag += '<script type="text/javascript">'
             tag += "var ps = bestPicSize(getElement('scaler'));"              tag += "var ps = bestPicSize(getElement('scaler'));"
             # write img tag with javascript              # write img tag with javascript
               if requestString:
                   # take all parameters from requestString
             tag += 'document.write(\'<img id="pic" src="%s&dw=\'+(ps.width%s)+\'&dh=\'+(ps.height%s)+\'" />\');'%(url, s_par, b_par)              tag += 'document.write(\'<img id="pic" src="%s&dw=\'+(ps.width%s)+\'&dh=\'+(ps.height%s)+\'" />\');'%(url, s_par, b_par)
               else:
                   # use javascript to filter digilib parameters
                   tag += """document.write('<img id="pic" src="%s'+getAllParameters(31)+'&dw='+(ps.width%s)+'&dh='+(ps.height%s)+'" />');"""%(url, s_par, b_par)
                   
             tag += '</script>'              tag += '</script>'
             if bt['isN4']:              if bt['isN4']:
                 tag += '</ilayer>'                  tag += '</ilayer>'
Line 436  class zogiLib(Folder): Line 485  class zogiLib(Folder):
                 # make shure to remove unused parameter                  # make shure to remove unused parameter
                 del self.REQUEST.SESSION['scalerDiv']                  del self.REQUEST.SESSION['scalerDiv']
                                   
         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt/zogilib_img_div')).__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt/img_div')).__of__(self)
         return pt()          return pt()
   
     def index_html(self):      def index_html(self):
Line 457  class zogiLib(Folder): Line 506  class zogiLib(Folder):
         """make shure that the query has been saved"""          """make shure that the query has been saved"""
         if not self.REQUEST.has_key('dlParams'):          if not self.REQUEST.has_key('dlParams'):
             self.storeQuery()              self.storeQuery()
         if not self.REQUEST.SESSION.has_key('browserType'):  
             bt = browserCheck(self)  
             self.REQUEST.SESSION.set('browserType', bt)              
   
     def storeQuery(self, more=None, withpt=False):      def storeQuery(self, more=None, withpt=False):
         """parse query parameters into a hash in REQUEST"""          """parse query parameters into a hash in REQUEST"""
Line 542  class zogiLib(Folder): Line 588  class zogiLib(Folder):
                           
         return self.display()          return self.display()
   
       def getBrowserType(self):
           """get browser type object"""
           if self.REQUEST.SESSION.has_key('browserType'):
               return self.REQUEST.SESSION['browserType']
           else:
               bt = browserCheck(self)
               self.REQUEST.SESSION.set('browserType', bt)                        
               return bt
   
   
     def display(self):      def display(self):
         """(re)display page"""          """(re)display page"""
Line 635  class zogiLib(Folder): Line 690  class zogiLib(Folder):
     def dl_StaticHTML(self):      def dl_StaticHTML(self):
         """set rendering to static HTML"""          """set rendering to static HTML"""
         self.checkQuery()          self.checkQuery()
         self.REQUEST.SESSION['browserType']['staticHTML'] = True          self.getBrowserType()['staticHTML'] = True
         return self.display()          return self.display()
   
     def dl_DynamicHTML(self):      def dl_DynamicHTML(self):
         """set rendering to dynamic HTML"""          """set rendering to dynamic HTML"""
         self.checkQuery()          self.checkQuery()
         self.REQUEST.SESSION['browserType']['staticHTML'] = False          self.getBrowserType()['staticHTML'] = False
         return self.display()          return self.display()
                   
     def dl_HMirror(self):      def dl_HMirror(self):
Line 859  def manage_addZogiLibPageTemplateForm(se Line 914  def manage_addZogiLibPageTemplateForm(se
     pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/addZogiLibPageTemplateForm')).__of__(self)      pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/addZogiLibPageTemplateForm')).__of__(self)
     return pt()      return pt()
   
 def manage_addZogiLibPageTemplate(self, id=None, title=None, layout=None, text=None,  def manage_addZogiLibPageTemplate(self, title=None, layout=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."
   
     if not layout: layout = "book"      if not layout: layout = "book"
     if not id: id = "main_%s"%layout;      id = 'main_%s'%layout
     self._setObject(id, zogiLibPageTemplate(id))      self._setObject(id, zogiLibPageTemplate(id))
     ob = getattr(self, id)      ob = getattr(self, id)
     ob.pt_edit(open(os.path.join(package_home(globals()),'zpt/main_%s.zpt'%layout)).read(),None)      ob.pt_edit(open(os.path.join(package_home(globals()),'zpt/main_%s.zpt'%layout)).read(),'text/html')
     if title:      if title:
         ob.pt_setTitle(title)          ob.pt_setTitle(title)
     try:      try:
         u = self.DestinationURL()          url = self.DestinationURL()
     except AttributeError:      except AttributeError:
         u = REQUEST['URL1']          url = REQUEST['URL1']
                   
     u = "%s/%s" % (u, urllib.quote(id))      url = "%s/%s" % (url, urllib.quote(id))
     REQUEST.RESPONSE.redirect(u+'/manage_main')      REQUEST.RESPONSE.redirect(url+'/manage_main')
     return ''      return ''
   

Removed from v.1.62  
changed lines
  Added in v.1.72


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