version 1.34, 2004/07/21 17:44:51
|
version 1.44, 2004/08/28 20:08:07
|
Line 12 import re
|
Line 12 import re
|
import string |
import string |
import urllib |
import urllib |
import types |
import types |
|
import random |
from Globals import package_home |
from Globals import package_home |
|
|
ZOGIVERSION = "0.9.7 ROC:21.7.2004" |
ZOGIVERSION = "0.9.9 ROC:28.8.2004" |
|
|
def cropf(f): |
def cropf(f): |
"""returns a float with reduced precision""" |
"""returns a float with reduced precision""" |
Line 22 def cropf(f):
|
Line 23 def cropf(f):
|
|
|
|
|
def sendFile(self, filename, type): |
def sendFile(self, filename, type): |
"""sends an object or a local file (in the product) as response""" |
"""sends an object or a local file (from the product) as response""" |
paths = filename.split('/') |
paths = filename.split('/') |
object = self |
object = self |
# look for an object called filename |
# look for an object called filename |
Line 388 class zogiLib(Folder):
|
Line 389 class zogiLib(Folder):
|
{'label':'Main Config','action':'changeZogiLibForm'}, |
{'label':'Main Config','action':'changeZogiLibForm'}, |
) |
) |
|
|
def __init__(self, id, title, digilibBaseURL,localFileBase, version="book", basePath="", dlTarget=None, dlServerURL=None): |
def __init__(self, id, title, dlServerURL, layout="book", basePath="", dlTarget=None, dlToolbarBaseURL=None): |
"""init""" |
"""init""" |
|
|
self.id=id |
self.id=id |
self.title=title |
self.title=title |
self.digilibBaseURL=digilibBaseURL |
|
self.dlServerURL = dlServerURL |
self.dlServerURL = dlServerURL |
if digilibBaseURL and not dlServerURL: |
|
self.dlServerURL = re.sub("/servlet/Scaler\?","",self.digilibBaseURL) |
|
|
|
self.localFileBase=localFileBase |
|
self.basePath=basePath |
self.basePath=basePath |
self.layout=version |
self.layout=layout |
if dlTarget: |
|
self.dlTarget = dlTarget |
self.dlTarget = dlTarget |
|
|
|
if dlToolbarBaseURL: |
|
self.dlToolbarBaseURL = dlToolbarBaseURL |
else: |
else: |
self.dlTarget = "digilib" |
self.dlToolbarBaseURL = dlServerURL + "/digimage.jsp?" |
|
|
|
|
def version(self): |
def version(self): |
"""version information""" |
"""version information""" |
Line 453 class zogiLib(Folder):
|
Line 452 class zogiLib(Folder):
|
except: |
except: |
return ret |
return ret |
|
|
def formatHTML(self,url,label=None,viewUrl=None): |
|
|
|
|
def formatHTML(self,url,label=None,viewUrl=None): |
|
|
sets=xml.dom.minidom.parse(urllib.urlopen(url)).getElementsByTagName('dataset') |
sets=xml.dom.minidom.parse(urllib.urlopen(url)).getElementsByTagName('dataset') |
ret="" |
ret="" |
Line 474 class zogiLib(Folder):
|
Line 473 class zogiLib(Folder):
|
ret+="</table>" |
ret+="</table>" |
return ret |
return ret |
|
|
|
|
def getMetaData(self): |
def getMetaData(self): |
"""getMetaData""" |
"""getMetaData""" |
try: |
try: |
Line 520 class zogiLib(Folder):
|
Line 520 class zogiLib(Folder):
|
return self.formatHTML(link+'fn=%s&pn=%s&object=%s'%(fn,pn,ob),label,url) |
return self.formatHTML(link+'fn=%s&pn=%s&object=%s'%(fn,pn,ob),label,url) |
return ret |
return ret |
|
|
|
|
def getDLInfo(self): |
def getDLInfo(self): |
"""get DLInfo from digilib server""" |
"""get DLInfo from digilib server""" |
paramH={} |
paramH={} |
baseUrl=self.dlServerURL+"/dlInfo-xml.jsp" |
baseUrl=self.dlServerURL+"/dlInfo-xml.jsp" |
try: |
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: |
Line 538 class zogiLib(Folder):
|
Line 539 class zogiLib(Folder):
|
def createHeadJS(self): |
def createHeadJS(self): |
"""generate all javascript tags for head""" |
"""generate all javascript tags for head""" |
self.checkQuery() |
self.checkQuery() |
bt = self.REQUEST.SESSION['browserType'] |
bt = self.REQUEST.SESSION.get('browserType', {}) |
if bt['staticHTML']: |
if bt['staticHTML']: |
return |
return |
|
|
Line 566 class zogiLib(Folder):
|
Line 567 class zogiLib(Folder):
|
# if not explicitly defined take normal request |
# if not explicitly defined take normal request |
if not requestString: |
if not requestString: |
requestString = self.getAllDLParams() |
requestString = self.getAllDLParams() |
url = self.digilibBaseURL+requestString |
url = self.dlServerURL+'/servlet/Scaler?'+requestString |
# construct bottom and side insets |
# construct bottom and side insets |
b_par = "" |
b_par = "" |
s_par = "" |
s_par = "" |
Line 639 class zogiLib(Folder):
|
Line 640 class zogiLib(Folder):
|
if bt['staticHTML']: |
if bt['staticHTML']: |
pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/optionwindow_static.zpt')).__of__(self) |
pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/optionwindow_static.zpt')).__of__(self) |
else: |
else: |
finds=self.ZopeFind(self,obj_ids=['viewingTools.zpt']) |
tp = "viewingTools.zpt" |
if finds: |
if hasattr(self, tp): |
|
pt = getattr(self, tp) |
return finds[0][1]() |
|
else: |
else: |
pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/optionwindow.zpt')).__of__(self) |
pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/optionwindow.zpt')).__of__(self) |
|
|
return pt() |
return pt() |
|
|
def mark1(self): |
def mark1(self): |
Line 732 class zogiLib(Folder):
|
Line 733 class zogiLib(Folder):
|
return pt() |
return pt() |
|
|
|
|
|
|
def storeQuery(self, more = None): |
def storeQuery(self, more = None): |
"""storeQuery in session""" |
"""storeQuery in session""" |
dlParams = {} |
dlParams = {} |
Line 754 class zogiLib(Folder):
|
Line 754 class zogiLib(Folder):
|
else: |
else: |
modes=[] |
modes=[] |
|
|
self.REQUEST.SESSION['query'] = dlParams |
wid = self.getWID() |
self.REQUEST.SESSION['dlModes'] = modes |
self.REQUEST.set('wid', wid) |
self.REQUEST.SESSION['dlInfo'] = self.getDLInfo() |
self.setSubSession('dlQuery', dlParams) |
|
self.setSubSession('dlModes', modes) |
|
self.setSubSession('dlInfo', self.getDLInfo()) |
if not self.REQUEST.SESSION.has_key('browserType'): |
if not self.REQUEST.SESSION.has_key('browserType'): |
self.REQUEST.SESSION['browserType'] = browserCheck(self) |
self.REQUEST.SESSION['browserType'] = browserCheck(self) |
|
|
Line 764 class zogiLib(Folder):
|
Line 766 class zogiLib(Folder):
|
|
|
def checkQuery(self): |
def checkQuery(self): |
"""check if the query has been stored""" |
"""check if the query has been stored""" |
if not (self.REQUEST.SESSION and self.REQUEST.SESSION.has_key('query')) : |
if not (self.REQUEST.SESSION and self.getSubSession('dlQuery')) : |
print "ZOGILIB: have to store query!!" |
print "ZOGILIB: have to store query!!" |
self.storeQuery() |
self.storeQuery() |
return |
return |
Line 784 class zogiLib(Folder):
|
Line 786 class zogiLib(Folder):
|
url += '/' |
url += '/' |
return url |
return url |
|
|
|
def zogilibAction(self, action, otherbase=None, wid=None): |
|
"""returns a URL with zogilib path, action and wid""" |
|
url = self.zogilibPath(otherbase) |
|
url += action |
|
if wid: |
|
url += '?wid=' + wid |
|
else: |
|
url += '?wid=' + self.getWID() |
|
return url |
|
|
|
def getSubSession(self, key, default=None): |
|
"""returns an element from a session with a wid""" |
|
wid = self.getWID() |
|
return self.REQUEST.SESSION.get(key+'_'+wid, default) |
|
|
|
def setSubSession(self, key, value): |
|
"""puts an element in a session with a wid""" |
|
wid = self.getWID() |
|
self.REQUEST.SESSION.set(key+'_'+wid, value) |
|
return |
|
|
|
def getWID(self): |
|
"""returns a (new) window id""" |
|
wid = self.REQUEST.get('wid') |
|
if not wid: |
|
wid = 'digi_'+str(int(random.random()*10000)) |
|
print "new WID:", wid |
|
return wid |
|
|
def getDLParam(self, param): |
def getDLParam(self, param): |
"""returns parameter""" |
"""returns parameter""" |
try: |
try: |
return self.REQUEST.SESSION['query'][param] |
return self.getSubSession('dlQuery').get(param) |
except: |
except: |
return |
return |
|
|
def setDLParam(self, param, value): |
def setDLParam(self, param, value): |
"""sets parameter""" |
"""sets parameter""" |
self.REQUEST.SESSION['query'][param] = value |
dlParams = self.getSubSession('dlQuery') |
|
#try: |
|
dlParams[param] = value |
|
#except: |
|
# self.setSubSession('dlQuery', {param: value}) |
return |
return |
|
|
def getAllDLParams(self): |
def getAllDLParams(self): |
"""parameter string for digilib""" |
"""parameter string for digilib""" |
dlParams = self.REQUEST.SESSION['query'] |
dlParams = self.getSubSession('dlQuery') |
# save modes |
# save modes |
modes = self.REQUEST.SESSION['dlModes'] |
modes = self.getSubSession('dlModes') |
dlParams['mo'] = string.join(modes, ',') |
dlParams['mo'] = string.join(modes, ',') |
# assemble query string |
# assemble query string |
ret = "" |
ret = "" |
Line 832 class zogiLib(Folder):
|
Line 867 class zogiLib(Folder):
|
|
|
def display(self): |
def display(self): |
"""(re)display page""" |
"""(re)display page""" |
|
if not self.getDLParam('wid'): |
|
wid = self.getWID() |
|
self.setDLParam('wid', wid) |
|
|
params = self.getAllDLParams() |
params = self.getAllDLParams() |
|
|
if self.basePath: |
if self.basePath: |
self.REQUEST.RESPONSE.redirect(self.REQUEST['URL2']+'?'+params) |
self.REQUEST.RESPONSE.redirect(self.REQUEST['URL2']+'?'+params) |
else: |
else: |
Line 844 class zogiLib(Folder):
|
Line 884 class zogiLib(Folder):
|
|
|
def getToolbarPageURL(self): |
def getToolbarPageURL(self): |
"""returns a toolbar-enabled page URL""" |
"""returns a toolbar-enabled page URL""" |
url=self.dlServerURL+'/digimage.jsp?'+self.getAllDLParams() |
url=self.dlToolbarBaseURL+self.getAllDLParams() |
return url |
return url |
|
|
def getDLTarget(self): |
def getDLTarget(self): |
"""returns dlTarget""" |
"""returns dlTarget""" |
self.checkQuery() |
self.checkQuery() |
s = self.dlTarget |
s = self.dlTarget |
|
if s == None: |
|
s = "" |
# s = 'dl' |
# s = 'dl' |
# if self.getDLParam('fn'): |
# if self.getDLParam('fn'): |
# s += "_" + self.getDLParam('fn') |
# s += "_" + self.getDLParam('fn') |
Line 871 class zogiLib(Folder):
|
Line 913 class zogiLib(Folder):
|
|
|
def getPT(self): |
def getPT(self): |
"""pagenums""" |
"""pagenums""" |
di = self.REQUEST.SESSION['dlInfo'] |
di = self.getSubSession('dlInfo_') |
if di: |
if di: |
return int(di['pt']) |
return int(di['pt']) |
else: |
else: |
Line 903 class zogiLib(Folder):
|
Line 945 class zogiLib(Folder):
|
|
|
def hasMode(self, mode): |
def hasMode(self, mode): |
"""returns if mode is in the diglib mo parameter""" |
"""returns if mode is in the diglib mo parameter""" |
return (mode in self.REQUEST.SESSION['dlModes']) |
wid = self.getWID() |
|
return (mode in self.REQUEST.SESSION['dlModes_'+wid]) |
|
|
def hasNextPage(self): |
def hasNextPage(self): |
"""returns if there is a next page""" |
"""returns if there is a next page""" |
Line 953 class zogiLib(Folder):
|
Line 996 class zogiLib(Folder):
|
|
|
def dl_HMirror(self): |
def dl_HMirror(self): |
"""mirror action""" |
"""mirror action""" |
modes = self.REQUEST.SESSION['dlModes'] |
modes = self.getSubSession('dlModes') |
if 'hmir' in modes: |
if 'hmir' in modes: |
modes.remove('hmir') |
modes.remove('hmir') |
else: |
else: |
Line 963 class zogiLib(Folder):
|
Line 1006 class zogiLib(Folder):
|
|
|
def dl_VMirror(self): |
def dl_VMirror(self): |
"""mirror action""" |
"""mirror action""" |
modes = self.REQUEST.SESSION['dlModes'] |
modes = self.getSubSession('dlModes') |
if 'vmir' in modes: |
if 'vmir' in modes: |
modes.remove('vmir') |
modes.remove('vmir') |
else: |
else: |
Line 1094 class zogiLib(Folder):
|
Line 1137 class zogiLib(Folder):
|
pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/changeZogiLibForm.zpt')).__of__(self) |
pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/changeZogiLibForm.zpt')).__of__(self) |
return pt() |
return pt() |
|
|
def changeZogiLib(self,title,digilibBaseURL, localFileBase, version, basePath, dlTarget, RESPONSE=None): |
def changeZogiLib(self,title,dlServerURL, version, basePath, dlTarget, dlToolbarBaseURL, RESPONSE=None): |
"""change it""" |
"""change it""" |
self.title=title |
self.title=title |
self.digilibBaseURL=digilibBaseURL |
self.dlServerURL=dlServerURL |
self.localFileBase=localFileBase |
|
self.basePath = basePath |
self.basePath = basePath |
self.layout=version |
self.layout=version |
if dlTarget: |
|
self.dlTarget = dlTarget |
self.dlTarget = dlTarget |
|
|
|
if dlToolbarBaseURL: |
|
self.dlToolbarBaseURL = dlToolbarBaseURL |
else: |
else: |
self.dlTarget = "digilib" |
self.dlToolbarBaseURL = dlServerURL + "/digimage.jsp?" |
|
|
if RESPONSE is not None: |
if RESPONSE is not None: |
RESPONSE.redirect('manage_main') |
RESPONSE.redirect('manage_main') |
|
|
|
|
|
|
|
## |
|
## odds and ends |
|
## |
|
|
|
def repairZogilib(self, obj=None): |
|
"""change stuff that broke on upgrading""" |
|
|
|
msg = "" |
|
|
|
if not obj: |
|
obj = self.getPhysicalRoot() |
|
|
|
print "starting in ", obj |
|
|
|
entries=obj.ZopeFind(obj,obj_metatypes=['zogiLib'],search_sub=1) |
|
|
|
for entry in entries: |
|
print " found ", entry |
|
# |
|
# replace digilibBaseUrl by dlServerURL |
|
if hasattr(entry[1], 'digilibBaseUrl'): |
|
msg += " fixing digilibBaseUrl in "+entry[0]+"\n" |
|
entry[1].dlServerURL = re.sub('/servlet/Scaler\?','',entry[1].digilibBaseUrl) |
|
del entry[1].digilibBaseUrl |
|
|
|
# |
|
# add dlToolbarBaseURL |
|
if not hasattr(entry[1], 'dlToolbarBaseURL'): |
|
msg += " fixing dlToolbarBaseURL in "+entry[0]+"\n" |
|
entry[1].dlToolbarBaseURL = entry[1].dlServerURL + "/digimage.jsp?" |
|
|
|
return msg+"\n\nfixed all zogilib instances in: "+obj.title |
|
|
|
|
def manage_addZogiLibForm(self): |
def manage_addZogiLibForm(self): |
"""interface for adding zogilib""" |
"""interface for adding zogilib""" |
pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/addZogiLibForm')).__of__(self) |
pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/addZogiLibForm')).__of__(self) |
return pt() |
return pt() |
|
|
def manage_addZogiLib(self,id,title,digilibBaseURL, localFileBase,version="book",basePath="",dlTarget="digilib",RESPONSE=None): |
def manage_addZogiLib(self,id,title,dlServerURL,version="book",basePath="",dlTarget=None,dlToolbarBaseURL=None,RESPONSE=None): |
"""add dgilib""" |
"""add dgilib""" |
newObj=zogiLib(id,title,digilibBaseURL, localFileBase, version, basePath, dlTarget) |
newObj=zogiLib(id,title,dlServerURL, version, basePath, dlTarget, dlToolbarBaseURL) |
self.Destination()._setObject(id,newObj) |
self.Destination()._setObject(id,newObj) |
if RESPONSE is not None: |
if RESPONSE is not None: |
RESPONSE.redirect('manage_main') |
RESPONSE.redirect('manage_main') |
Line 1159 def manage_addZogiLibPageTemplate(self,
|
Line 1238 def manage_addZogiLibPageTemplate(self,
|
u = "%s/%s" % (u, urllib.quote(id)) |
u = "%s/%s" % (u, urllib.quote(id)) |
REQUEST.RESPONSE.redirect(u+'/manage_main') |
REQUEST.RESPONSE.redirect(u+'/manage_main') |
return '' |
return '' |
|
|