|
|
| version 1.34, 2004/07/21 17:44:51 | version 1.43, 2004/08/25 16:31:28 |
|---|---|
| Line 14 import urllib | Line 14 import urllib |
| import types | import types |
| from Globals import package_home | from Globals import package_home |
| ZOGIVERSION = "0.9.7 ROC:21.7.2004" | ZOGIVERSION = "0.9.8 ROC:27.7.2004" |
| def cropf(f): | def cropf(f): |
| """returns a float with reduced precision""" | """returns a float with reduced precision""" |
| Line 388 class zogiLib(Folder): | Line 388 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: | if dlTarget: |
| self.dlTarget = dlTarget | self.dlTarget = dlTarget |
| else: | else: |
| self.dlTarget = "digilib" | self.dlTarget = "digilib" |
| if dlToolbarBaseURL: | |
| self.dlToolbarBaseURL = dlToolbarBaseURL | |
| else: | |
| self.dlToolbarBaseURL = dlServerURL + "/digimage.jsp?" | |
| def version(self): | def version(self): |
| """version information""" | """version information""" |
| return ZOGIVERSION | return ZOGIVERSION |
| Line 453 class zogiLib(Folder): | Line 454 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 475 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 522 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 566 class zogiLib(Folder): | Line 569 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 635 class zogiLib(Folder): | Line 638 class zogiLib(Folder): |
| def optionwindow(self): | def optionwindow(self): |
| """showoptions""" | """showoptions""" |
| self.checkQuery() | self.checkQuery() |
| if self.REQUEST.has_key('frametarget'): | |
| self.dlTarget = self.REQUEST['frametarget'] | |
| bt = self.REQUEST.SESSION['browserType'] | bt = self.REQUEST.SESSION['browserType'] |
| 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 754 class zogiLib(Folder): | Line 759 class zogiLib(Folder): |
| else: | else: |
| modes=[] | modes=[] |
| self.REQUEST.SESSION['query'] = dlParams | self.REQUEST.SESSION['ZogiLibQuery'] = dlParams |
| self.REQUEST.SESSION['dlModes'] = modes | self.REQUEST.SESSION['dlModes'] = modes |
| self.REQUEST.SESSION['dlInfo'] = self.getDLInfo() | self.REQUEST.SESSION['dlInfo'] = self.getDLInfo() |
| if not self.REQUEST.SESSION.has_key('browserType'): | if not self.REQUEST.SESSION.has_key('browserType'): |
| Line 764 class zogiLib(Folder): | Line 769 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.REQUEST.SESSION.has_key('ZogiLibQuery')) : |
| print "ZOGILIB: have to store query!!" | print "ZOGILIB: have to store query!!" |
| self.storeQuery() | self.storeQuery() |
| return | return |
| Line 787 class zogiLib(Folder): | Line 792 class zogiLib(Folder): |
| def getDLParam(self, param): | def getDLParam(self, param): |
| """returns parameter""" | """returns parameter""" |
| try: | try: |
| return self.REQUEST.SESSION['query'][param] | return self.REQUEST.SESSION['ZogiLibQuery'][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 | self.REQUEST.SESSION['ZogiLibQuery'][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.REQUEST.SESSION['ZogiLibQuery'] |
| # save modes | # save modes |
| modes = self.REQUEST.SESSION['dlModes'] | modes = self.REQUEST.SESSION['dlModes'] |
| dlParams['mo'] = string.join(modes, ',') | dlParams['mo'] = string.join(modes, ',') |
| Line 844 class zogiLib(Folder): | Line 849 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): |
| Line 1094 class zogiLib(Folder): | Line 1099 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: | if dlTarget: |
| Line 1106 class zogiLib(Folder): | Line 1110 class zogiLib(Folder): |
| else: | else: |
| self.dlTarget = "digilib" | self.dlTarget = "digilib" |
| if dlToolbarBaseURL: | |
| self.dlToolbarBaseURL = dlToolbarBaseURL | |
| else: | |
| self.dlToolbarBaseURL = dlServerURL + "/digimage.jsp?" | |
| if RESPONSE is not None: | if RESPONSE is not None: |
| RESPONSE.redirect('manage_main') | RESPONSE.redirect('manage_main') |
| ## | |
| ## odd stuff | |
| ## | |
| 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="digilib",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 1203 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 '' |