--- zogiLib/zogiLib.py 2006/02/01 12:25:11 1.62 +++ zogiLib/zogiLib.py 2006/11/14 09:47:20 1.67 @@ -18,7 +18,7 @@ import string import urllib import xml.dom.minidom -ZOGIVERSION = "0.10.1b ROC 8.11.2005" +ZOGIVERSION = "0.10.4b ROC 13.11.2006" def cropf(f): """returns a float with reduced precision""" @@ -57,9 +57,9 @@ class zogiImage(SimpleItem): """einzelnes Image""" meta_type="zogiImage" - manage_options=SimpleItem.manage_options+( + manage_options=( {'label':'Main config','action':'changeZogiImageForm'}, - ) + )+SimpleItem.manage_options def __init__(self,id,title,baseUrl,queryString,content_type='',precondition=''): @@ -79,25 +79,15 @@ class zogiImage(SimpleItem): # """getUrlData""" # return urllib.urlopen(self.baseUrl+self.queryString) - def changeZogiImageForm(self): - """Main configuration""" - pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/changeZogiImageForm.zpt')).__of__(self) - return pt() + changeZogiImageForm = PageTemplateFile('zpt/changeZogiImageForm.zpt', globals()) - 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): """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 '' + def rescale(self,width=None,height=None): """andere parameter im querystring""" qs=cgi.parse_qs(self.queryString) @@ -109,22 +99,56 @@ class zogiImage(SimpleItem): qs['dw']=width if height: qs['dh']=height - qsneu=urllib.urlencode(qs) self.queryString=qsneu 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): """Form for adding""" pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/addZogiImage.zpt')).__of__(self) 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""" newObj=zogiImage(id,title,baseUrl, queryString) self.Destination()._setObject(id,newObj) + if digilibUrl is not None and len(digilibUrl) > 0: + newObj.setWithDigilibURL(digilibUrl) if RESPONSE is not None: RESPONSE.redirect('manage_main') @@ -144,11 +168,11 @@ class zogiLib(Folder): def __init__(self, id, title, dlServerURL, layout="book", basePath="", dlTarget=None, dlToolbarBaseURL=None): """init""" - self.id=id - self.title=title + self.id = id + self.title = title self.dlServerURL = dlServerURL - self.basePath=basePath - self.layout=layout + self.basePath = basePath + self.layout = layout self.dlTarget = dlTarget if dlToolbarBaseURL: @@ -159,25 +183,25 @@ class zogiLib(Folder): self.manage_addFolder('template') -# form templates + # form templates main_book = PageTemplateFile('zpt/main_book', globals()) main_image = PageTemplateFile('zpt/main_image', globals()) main_metaData = PageTemplateFile('zpt/main_metadata', globals()) #main_static = PageTemplateFile('zpt/main_static', 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_divsN4 = PageTemplateFile('zpt/aux_divsN4', globals()) img_div = PageTemplateFile('zpt/img_div', globals()) -# javascripts + # javascripts head_js = PageTemplateFile('zpt/head_js', globals()) jslib_js = PageTemplateFile('js/baselib.js', globals()) dllib_js = PageTemplateFile('js/dllib.js', globals()) -# graphic files + # graphic files arr_right = ImageFile('images/right.gif', globals()) arr_left = ImageFile('images/left.gif', globals()) arr_up = ImageFile('images/up.gif', globals()) @@ -389,10 +413,10 @@ class zogiLib(Folder): 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""" self.checkQuery() - bt = self.REQUEST.SESSION['browserType'] + bt = self.getBrowserType() # override with parameters from session if self.REQUEST.SESSION.has_key('scalerDiv'): (requestString, bottom, side, width, height) = self.REQUEST.SESSION['scalerDiv'] @@ -400,6 +424,10 @@ class zogiLib(Folder): if not requestString: requestString = self.getAllDLParams() 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 b_par = "" s_par = "" @@ -457,9 +485,6 @@ class zogiLib(Folder): """make shure that the query has been saved""" if not self.REQUEST.has_key('dlParams'): 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): """parse query parameters into a hash in REQUEST""" @@ -542,6 +567,15 @@ class zogiLib(Folder): 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): """(re)display page""" @@ -635,13 +669,13 @@ class zogiLib(Folder): def dl_StaticHTML(self): """set rendering to static HTML""" self.checkQuery() - self.REQUEST.SESSION['browserType']['staticHTML'] = True + self.getBrowserType()['staticHTML'] = True return self.display() def dl_DynamicHTML(self): """set rendering to dynamic HTML""" self.checkQuery() - self.REQUEST.SESSION['browserType']['staticHTML'] = False + self.getBrowserType()['staticHTML'] = False return self.display() def dl_HMirror(self): @@ -859,23 +893,23 @@ def manage_addZogiLibPageTemplateForm(se pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/addZogiLibPageTemplateForm')).__of__(self) 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): "Add a Page Template with optional file content." if not layout: layout = "book" - if not id: id = "main_%s"%layout; + id = 'main_%s'%layout self._setObject(id, zogiLibPageTemplate(id)) ob = getattr(self, id) ob.pt_edit(open(os.path.join(package_home(globals()),'zpt/main_%s.zpt'%layout)).read(),None) if title: ob.pt_setTitle(title) try: - u = self.DestinationURL() + url = self.DestinationURL() except AttributeError: - u = REQUEST['URL1'] + url = REQUEST['URL1'] - u = "%s/%s" % (u, urllib.quote(id)) - REQUEST.RESPONSE.redirect(u+'/manage_main') + url = "%s/%s" % (url, urllib.quote(id)) + REQUEST.RESPONSE.redirect(url+'/manage_main') return ''