'
+ else:
+ tag += ''
+ tag += ''
+ if bt.isN4:
+ tag += ''
+ else:
+ tag += '
'
+ return tag
- def changeZogiLibForm(self):
- """Main configuration"""
- pt=PageTemplateFile('Products/zogiLib/zpt/changeZogiLibForm.zpt').__of__(self)
+ def createScalerDiv(self):
+ """generate scaler img and table with navigation arrows"""
+ self.checkQuery()
+ pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt/zogilib_img_div')).__of__(self)
return pt()
-
- def changeZogiLib(self,title,digilibBaseUrl, localFileBase,RESPONSE=None):
- """change it"""
- self.title=title
- self.digilibBaseUrl=digilibBaseUrl
- self.localFileBase=localFileBase
- if RESPONSE is not None:
- RESPONSE.redirect('manage_main')
+ def createAuxDiv(self):
+ """generate other divs"""
+ self.checkQuery()
+ bt = self.REQUEST.SESSION['browserType']
+ if bt.isN4:
+ f = 'zpt/zogilib_divsN4.zpt'
+ else:
+ f = 'zpt/zogilib_divs.zpt'
+ pt=PageTemplateFile(os.path.join(package_home(globals()),f)).__of__(self)
+ return pt()
-
- 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 option_js(self):
+ """option_js"""
+ pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/option_js')).__of__(self)
+ return pt()
+
+ def dl_lib_js(self):
+ """javascript"""
+ return sendFile(self, 'js/dl_lib.js', 'text/plain')
+
+ def js_lib_js(self):
+ """javascript"""
+ return sendFile(self, 'js/js_lib.js', 'text/plain')
+
+ def optionwindow(self):
+ """showoptions"""
+ pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/optionwindow.zpt')).__of__(self)
+ return pt()
+
+ def mark1(self):
+ """mark image"""
+ return sendFile(self, 'images/mark1.gif', 'image/gif')
+
+ def mark2(self):
+ """mark image"""
+ return sendFile(self, 'images/mark2.gif', 'image/gif')
+
+ 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 index_html(self):
"""main action"""
+ tp = "zogiLibMainTemplate"
+ if hasattr(self, tp):
+ pt = getattr(self, tp)
+ else:
+ pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/zogiLibMain_%s'%self.layout)).__of__(self)
+ return pt()
- #pt=PageTemplateFile('Products/zogiLib/zpt/zogiLibMain_image.zpt').__of__(self)
- #return pt()
- return self.mainTemplate()
- def storeQuery(self):
+ def storeQuery(self, more = None):
"""storeQuery in session"""
- self.REQUEST.SESSION['query']={}
+ dlParams = {}
for fm in self.REQUEST.form.keys():
- self.REQUEST.SESSION['query'][fm]=self.REQUEST.form[fm]
+ dlParams[fm] = self.REQUEST.form[fm]
+ # look for more
+ if more:
+ for fm in more.split('&'):
+ try:
+ pv = fm.split('=')
+ dlParams[pv[0]] = pv[1]
+ except:
+ print "ouch!"
+ # parse digilib mode parameter
+ if 'mo' in dlParams:
+ if len(dlParams['mo']) > 0:
+ modes=dlParams['mo'].split(',')
+ else:
+ modes=[]
- self.REQUEST.SESSION['dlInfo']=self.getDlInfo()
+ self.REQUEST.SESSION['query'] = dlParams
+ self.REQUEST.SESSION['dlModes'] = modes
+ self.REQUEST.SESSION['dlInfo'] = self.getDLInfo()
+ self.REQUEST.SESSION['browserType'] = BrowserCheck(self)
+
+ def checkQuery(self):
+ """check if the query has been stored"""
+ if not (self.REQUEST.SESSION):
+ print "ZOGILIB: have to store query!!"
+ storeQuery(self)
+
+ def zogilibPath(self):
+ """returns an URL to the zogiLib instance"""
+ url = self.REQUEST['URL1']
+ url += self.basePath
+ # should end with "/"
+ if len(url) > 0 and url[-1] != '/':
+ url += '/'
+ return url
- def getParam(self,param):
- """Gebe Parameter aus"""
+ def getDLParam(self, param):
+ """returns parameter"""
try:
return self.REQUEST.SESSION['query'][param]
except:
return None
- def getPageNum(self):
- """PAgenum"""
- pn=self.getParam('pn')
+ def setDLParam(self, param, value):
+ """sets parameter"""
+ self.REQUEST.SESSION['query'][param] = value
+ return
+
+ 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():
+ val = str(dlParams[param])
+ if val != "":
+ ret += param + "=" + val + "&"
+ # omit trailing "&"
+ return ret.rstrip('&')
+
+
+ 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()
+
+
+ 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)
+
+ def getPT(self):
+ """pagenums"""
+ di = self.REQUEST.SESSION['dlInfo']
+ if di:
+ return int(di['pt'])
+ else:
+ return 1
+
+ def getPN(self):
+ """Pagenum"""
+ pn = self.getDLParam('pn')
if pn:
- return pn
+ return int(pn)
else:
return 1
- def biggerWS(self):
+ def getBiggerWS(self):
"""ws+1"""
- ws=self.getParam('ws')
+ ws = self.getDLParam('ws')
+ print "ws: ", ws
if ws:
+ print "WS!"
return int(ws)+1
else:
return 2
-
- def options(self):
- """showoptions"""
- pt=PageTemplateFile('Products/zogiLib/zpt/optionwindow.zpt').__of__(self)
- return pt()
-
- def smallerWS(self):
- """ws-11"""
- ws=self.getParam('ws')
+ def getSmallerWS(self):
+ """ws-1"""
+ ws=self.getDLParam('ws')
if ws:
- if int(ws)==1:
- return
- else:
- return int(ws)-1
+ return max(int(ws)-1, 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:
- self.REQUEST.SESSION['query']['rot']=rot
-
- for param in self.REQUEST.SESSION['query'].keys():
-
- ret+=param+"="+str(self.REQUEST.SESSION['query'][param])+"&"
-
- self.REQUEST.RESPONSE.redirect(self.REQUEST['URL1']+'?'+ret)
+ 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 mirrorPage(self,mi):
- """mirror"""
- ret=""
- try:
- splitted=self.REQUEST.SESSION['query']['mo'].split(',')
- except:
- splitted=[]
-
- if mi=="h":
-
- if 'hmir' in splitted:
- splitted.remove('hmir')
- else:
- splitted.append('hmir')
+ 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_HMirror(self):
+ """mirror action"""
+ modes = self.REQUEST.SESSION['dlModes']
+ if 'hmir' in modes:
+ modes.remove('hmir')
+ else:
+ modes.append('hmir')
- if mi=="v":
+ return self.display()
+
+ def dl_VMirror(self):
+ """mirror action"""
+ modes = self.REQUEST.SESSION['dlModes']
+ if 'vmir' in modes:
+ modes.remove('vmir')
+ else:
+ modes.append('vmir')
- if 'vmir' in splitted:
- splitted.remove('vmir')
- else:
- splitted.append('vmir')
+ return self.display()
+ 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.SESSION['query']['mo']=string.join(splitted,",")
-
-
-
-
- for param in self.REQUEST.SESSION['query'].keys():
-
- ret+=param+"="+str(self.REQUEST.SESSION['query'][param])+"&"
-
- self.REQUEST.RESPONSE.redirect(self.REQUEST['URL1']+'?'+ret)
-
- def decode(self,strR):
- """decode &"""
-
- return re.sub('\&','\&',strR)
-
- def wholePage(self):
- """zoom out"""
- ret=""
-
- self.REQUEST.SESSION['query']['ww']=1
- self.REQUEST.SESSION['query']['wh']=1
- self.REQUEST.SESSION['query']['wx']=0
- self.REQUEST.SESSION['query']['wy']=0
-
- for param in self.REQUEST.SESSION['query'].keys():
-
- ret+=param+"="+str(self.REQUEST.SESSION['query'][param])+"&"
-
- self.REQUEST.RESPONSE.redirect(self.REQUEST['URL1']+'?'+ret)
-
- def prevPage(self,pn=None):
- """next page"""
- ret=""
-
- if pn and pn>0:
- pn=str(int(pn)-1)
-
- self.REQUEST.form['pn']=pn
-
- for param in self.REQUEST.form.keys():
-
- ret+=param+"="+str(self.REQUEST.form[param])+"&"
-
- self.REQUEST.RESPONSE.redirect(self.REQUEST['URL1']+'?'+ret)
- def firstPage(self):
- """erste Seite"""
- return self.setParam(pn="1")
+ def changeZogiLibForm(self):
+ """Main configuration"""
+ pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/changeZogiLibForm.zpt')).__of__(self)
+ return pt()
- def lastPage(self):
- """letzte Seite"""
-
-
- def nextPage(self,pn=None):
- """next page"""
- ret=""
-
- try:
- pn=str(int(pn)+1)
- except:
- pn=str(2)
-
- self.REQUEST.form['pn']=pn
-
- for param in self.REQUEST.form.keys():
- ret+=param+"="+str(self.REQUEST.form[param])+"&"
-
- self.REQUEST.RESPONSE.redirect(self.REQUEST['URL1']+'?'+ret)
+ def changeZogiLib(self,title,digilibBaseUrl, localFileBase, version, basePath, RESPONSE=None):
+ """change it"""
+ self.title=title
+ self.digilibBaseUrl=digilibBaseUrl
+ self.localFileBase=localFileBase
+ self.basePath = basePath
+ self.layout=version
- def generateDivs(self):
- """generate divs"""
- pt=PageTemplateFile('Products/zogiLib/zpt/zogilib_divs').__of__(self)
- return pt()
+ if RESPONSE is not None:
+ RESPONSE.redirect('manage_main')
- #divFileName=os.path.join(package_home(globals()),'zpt/zogilib_divs.zpt')
- #return open(divFileName).read()
def manage_addZogiLibForm(self):
"""interface for adding zogilib"""
- pt=PageTemplateFile('Products/zogiLib/zpt/addZogiLibForm').__of__(self)
+ pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/addZogiLibForm')).__of__(self)
return pt()
-def manage_addZogiLib(self,id,title,digilibBaseUrl, localFileBase,version="book",RESPONSE=None):
+def manage_addZogiLib(self,id,title,digilibBaseUrl, localFileBase,version="book",basePath="",RESPONSE=None):
"""add dgilib"""
- newObj=zogiLib(id,title,digilibBaseUrl, localFileBase, version)
+ newObj=zogiLib(id,title,digilibBaseUrl, localFileBase, version, basePath)
self.Destination()._setObject(id,newObj)
if RESPONSE is not None:
RESPONSE.redirect('manage_main')