--- zogiLib/zogiLib.py 2004/10/27 11:35:44 1.51 +++ zogiLib/zogiLib.py 2005/10/11 20:06:05 1.58 @@ -1,9 +1,9 @@ +from OFS.SimpleItem import SimpleItem from Products.PageTemplates.PageTemplateFile import PageTemplateFile from Products.PageTemplates.PageTemplate import PageTemplate from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate from OFS.Image import Image -from webdav.common import rfc1123_date - +from AccessControl import ClassSecurityInfo import xml.dom.minidom from OFS.Folder import Folder from xml_helpers import getUniqueElementText,getText @@ -11,11 +11,12 @@ import os import re import string import urllib -import types +from types import * import random +import cgi from Globals import package_home -ZOGIVERSION = "0.9.12b ROC:27.10.2004" +ZOGIVERSION = "0.9.15b DW:22.2.2005" def cropf(f): """returns a float with reduced precision""" @@ -29,18 +30,18 @@ def sendFile(self, filename, type): # look for an object called filename for path in paths: if hasattr(object, path): - object = getattr(object, path) - else: - object = None - break + object = getattr(object, path) + else: + object = None + break if object: - # if the object exists then send it - return object.index_html(self.REQUEST.REQUEST, self.REQUEST.RESPONSE) + # if the object exists then send it + return object.index_html(self.REQUEST.REQUEST, self.REQUEST.RESPONSE) else: - # send a local file with the given content-type - fn = os.path.join(package_home(globals()), filename) - self.REQUEST.RESPONSE.setHeader("Content-Type", type) - self.REQUEST.RESPONSE.write(file(fn).read()) + # send a local file with the given content-type + fn = os.path.join(package_home(globals()), filename) + self.REQUEST.RESPONSE.setHeader("Content-Type", type) + self.REQUEST.RESPONSE.write(file(fn).read()) return def browserCheck(self): @@ -71,11 +72,11 @@ def browserCheck(self): return bt -class zogiImage(Image): +class zogiImage(SimpleItem): """einzelnes Image""" meta_type="zogiImage" - manage_options=ZopePageTemplate.manage_options+( + manage_options=SimpleItem.manage_options+( {'label':'Main config','action':'changeZogiImageForm'}, ) @@ -93,9 +94,9 @@ class zogiImage(Image): self.content_type=content_type self.precondition=precondition - def getData(self): - """getUrlData""" - return urllib.urlopen(self.baseUrl+self.queryString) + #def getData(self): + # """getUrlData""" + # return urllib.urlopen(self.baseUrl+self.queryString) def changeZogiImageForm(self): """Main configuration""" @@ -116,8 +117,23 @@ class zogiImage(Image): RESPONSE.redirect(self.baseUrl+self.queryString) return '' + def rescale(self,width=None,height=None): + """andere parameter im querystring""" + qs=cgi.parse_qs(self.queryString) + for x in qs.keys(): + if type(qs[x]) is ListType: + qs[x]=qs[x][0] + + if width: + qs['dw']=width + if height: + qs['dh']=height - + + qsneu=urllib.urlencode(qs) + self.queryString=qsneu + return "done" + def manage_addZogiImageForm(self): """Form for adding""" pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/addZogiImage.zpt')).__of__(self) @@ -138,7 +154,8 @@ class zogiLib(Folder): meta_type="zogiLib" #xxxx - + security=ClassSecurityInfo() + manage_options = Folder.manage_options+( {'label':'Main Config','action':'changeZogiLibForm'}, ) @@ -158,7 +175,11 @@ class zogiLib(Folder): else: self.dlToolbarBaseURL = dlServerURL + "/digimage.jsp?" - + security.declareProtected('View','getLayout') + def getLayout(self): + """get Layout""" + return self.layout + def version(self): """version information""" return ZOGIVERSION @@ -293,8 +314,8 @@ class zogiLib(Folder): def createHeadJS(self): """generate all javascript tags for head""" - self.checkQuery() - bt = self.REQUEST.SESSION.get('browserType', {}) + self.checkQuery() + bt = self.REQUEST.SESSION.get('browserType', {}) if bt['staticHTML']: return @@ -303,19 +324,37 @@ class zogiLib(Folder): def createParamJS(self): """generate javascript for parameters only""" - self.checkQuery() - bt = self.REQUEST.SESSION['browserType'] + self.checkQuery() + bt = self.REQUEST.SESSION['browserType'] if bt['staticHTML']: return pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/zogilib_param_js')).__of__(self) return pt() - + + def getScalerUrl(self,requestString=None): + """send scaler url""" + if requestString: + return self.dlServerURL+'/servlet/Scaler?'+requestString + else: + return self.dlServerURL+'/servlet/Scaler?' + + def scaledImage(self,requestString=None): + """scaled Image""" + + if not requestString: + requestString=self.REQUEST['QUERY_STRING'] + + self.REQUEST.RESPONSE.redirect(self.getScalerUrl(requestString)) + + return True + + def createScalerImg(self, requestString=None, bottom=0, side=0, width=500, height=500): """generate Scaler IMG Tag""" - self.checkQuery() - bt = self.REQUEST.SESSION['browserType'] + self.checkQuery() + bt = self.REQUEST.SESSION['browserType'] # override with parameters from session if self.REQUEST.SESSION.has_key('scalerDiv'): (requestString, bottom, side, width, height) = self.REQUEST.SESSION['scalerDiv'] @@ -351,7 +390,7 @@ class zogiLib(Folder): def createScalerDiv(self, requestString = None, bottom = 0, side = 0, width=500, height=500): """generate scaler img and table with navigation arrows""" - self.checkQuery() + self.checkQuery() if requestString != None or bottom != 0 or side != 0: self.REQUEST.SESSION['scalerDiv'] = (requestString, bottom, side, width, height) else: @@ -364,14 +403,14 @@ class zogiLib(Folder): def createAuxDiv(self): """generate other divs""" - self.checkQuery() - bt = self.REQUEST.SESSION['browserType'] + self.checkQuery() + bt = self.REQUEST.SESSION['browserType'] if bt['staticHTML']: return if bt['isN4']: f = 'zpt/zogilib_divsN4.zpt' else: - f = 'zpt/zogilib_divs.zpt' + f = 'zpt/zogiLib_divs.zpt' pt=PageTemplateFile(os.path.join(package_home(globals()),f)).__of__(self) return pt() @@ -390,15 +429,15 @@ class zogiLib(Folder): def optionwindow(self): """showoptions""" - self.checkQuery() - bt = self.REQUEST.SESSION['browserType'] + 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: tp = "viewingTools.zpt" if hasattr(self, tp): pt = getattr(self, tp) - else: + else: pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/optionwindow.zpt')).__of__(self) return pt() @@ -471,12 +510,12 @@ class zogiLib(Folder): def index_html(self): """main action""" - self.checkQuery() - bt = self.REQUEST.SESSION['browserType'] + self.checkQuery() + bt = self.REQUEST.SESSION['browserType'] tp = "zogiLibMainTemplate" if hasattr(self, tp): - pt = getattr(self, tp) + pt = getattr(self, tp) else: tpt = self.layout @@ -520,10 +559,10 @@ class zogiLib(Folder): return def checkQuery(self): - """check if the query has been stored""" - if not (self.REQUEST.SESSION and self.getSubSession('dlQuery')) : - print "ZOGILIB: have to store query!!" - self.storeQuery() + """check if the query has been stored""" + if not (self.REQUEST.SESSION and self.getSubSession('dlQuery')) : + print "ZOGILIB: have to store query!!" + self.storeQuery() return def zogilibPath(self, otherbase=None): @@ -570,12 +609,12 @@ class zogiLib(Folder): print "new WID:", wid return wid - def getDLParam(self, param): - """returns parameter""" + def getDLParam(self, param, default=None): + """returns parameter or default""" try: - return self.getSubSession('dlQuery').get(param) + return self.getSubSession('dlQuery').get(param, default) except: - return + return default def setDLParam(self, param, value): """sets parameter""" @@ -658,13 +697,13 @@ class zogiLib(Folder): def setStaticHTML(self, static=True): """sets the preference to static HTML""" self.checkQuery() - self.REQUEST.SESSION['browserType']['staticHTML'] = static + self.REQUEST.SESSION['browserType']['staticHTML'] = static return def isStaticHTML(self): """returns if the page is using static HTML only""" self.checkQuery() - return self.REQUEST.SESSION['browserType']['staticHTML'] + return self.REQUEST.SESSION['browserType']['staticHTML'] def getPT(self): """pagenums"""