version 1.1.1.1, 2004/03/25 18:07:37
|
version 1.7, 2004/04/16 14:07:08
|
Line 1
|
Line 1
|
from Products.PageTemplates.PageTemplateFile import PageTemplateFile |
from Products.PageTemplates.PageTemplateFile import PageTemplateFile |
from Products.PageTemplates.PageTemplate import PageTemplate |
from Products.PageTemplates.PageTemplate import PageTemplate |
from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate |
from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate |
|
from OFS.Image import Image |
|
from webdav.common import rfc1123_date |
|
|
import xml.dom.minidom |
import xml.dom.minidom |
from OFS.Folder import Folder |
from OFS.Folder import Folder |
Line 56 class zogiLib_navTemplate(ZopePageTempla
|
Line 57 class zogiLib_navTemplate(ZopePageTempla
|
|
|
def manage_addZogiLib_NavTemplateForm(self): |
def manage_addZogiLib_NavTemplateForm(self): |
"""Form for adding""" |
"""Form for adding""" |
pt=PageTemplateFile('Products/ECHO_content/zpt/AddZogilib_NavTemplate.zpt').__of__(self) |
pt=PageTemplateFile('Products/zogiLib/zpt/AddZogilib_NavTemplate.zpt').__of__(self) |
return pt() |
return pt() |
|
|
|
|
Line 97 def manage_addZogiLib_NavTemplate(self,
|
Line 98 def manage_addZogiLib_NavTemplate(self,
|
REQUEST.RESPONSE.redirect(u+'/manage_main') |
REQUEST.RESPONSE.redirect(u+'/manage_main') |
return '' |
return '' |
|
|
|
|
|
|
def readNavTemp(fileName): |
def readNavTemp(fileName): |
"""navtemp""" |
"""navtemp""" |
print "HI reading",fileName |
|
|
|
if os.path.exists(fileName+"/index.meta"): |
if os.path.exists(fileName+"/index.meta"): |
dom=xml.dom.minidom.parse(fileName+"/index.meta") |
dom=xml.dom.minidom.parse(fileName+"/index.meta") |
else: |
else: |
return None |
return None |
|
|
print "dom",dom |
|
try: |
try: |
navTag=getText(dom.getElementsByTagName('zogilibtemplate')[0].childNodes) |
navTag=getText(dom.getElementsByTagName('zogilibtemplate')[0].childNodes) |
except: |
except: |
navTag=None |
navTag=None |
return navTag |
return navTag |
|
|
|
class zogiLib_mainTemplate(ZopePageTemplate): |
|
"""pageTemplate Objekt""" |
|
meta_type="zogiLib_mainTemplate" |
|
|
|
|
|
def __init__(self, id, text=None, content_type=None, version="book"): |
|
|
|
default_content_string="zpt/zogiLibMain_%s.zpt"%version |
|
self._default_content_fn = os.path.join(package_home(globals()),default_content_string) |
|
self.id = str(id) |
|
self.ZBindings_edit(self._default_bindings) |
|
if text is None: |
|
text = open(self._default_content_fn).read() |
|
self.pt_edit(text, content_type) |
|
|
|
|
|
def manage_addZogiLibMainTemplateForm(self): |
|
"""Form for adding""" |
|
pt=PageTemplateFile('Products/ECHO_content/zpt/AddOSAS_thumbTemplate.zpt').__of__(self) |
|
return pt() |
|
|
|
|
|
|
|
|
|
def manage_addZogiLibMainTemplate(self, id,title=None, text=None, |
|
REQUEST=None, submit=None): |
|
"Add a Page Template with optional file content." |
|
|
|
|
|
id = str(id) |
|
if REQUEST is None: |
|
self._setObject(id, zogiLib_mainTemplate(id, text)) |
|
ob = getattr(self, id) |
|
|
|
if title: |
|
ob.pt_setTitle(title) |
|
return ob |
|
else: |
|
file = REQUEST.form.get('file') |
|
headers = getattr(file, 'headers', None) |
|
if headers is None or not file.filename: |
|
zpt = zogiLib_mainTemplate(id) |
|
else: |
|
zpt = zogiLib_mainTemplate(id, file, headers.get('content_type')) |
|
|
|
self._setObject(id, zpt) |
|
ob = getattr(self, id) |
|
|
|
|
|
try: |
|
u = self.DestinationURL() |
|
except AttributeError: |
|
u = REQUEST['URL1'] |
|
|
|
if submit == " Add and Edit ": |
|
u = "%s/%s" % (u, quote(id)) |
|
REQUEST.RESPONSE.redirect(u+'/manage_main') |
|
return '' |
|
|
|
|
|
class zogiImage(Image): |
|
"""einzelnes Image""" |
|
meta_type="zogiImage" |
|
|
|
|
|
|
|
def __init__(self,id,title,baseUrl,queryString,content_type='',precondition=''): |
|
"""init""" |
|
self.id=id |
|
self.title=title |
|
self.baseUrl=baseUrl |
|
self.queryString=queryString |
|
self.content_type=content_type |
|
self.precondition=precondition |
|
|
|
def getData(self): |
|
"""getUrlData""" |
|
return urllib.urlopen(self.baseUrl+self.queryString) |
|
|
|
def changeZogiImageForm(self): |
|
"""Main configuration""" |
|
pt=PageTemplateFile('Products/zogiLib/zpt/changeZogiImageForm.zpt').__of__(self) |
|
return pt() |
|
|
|
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') |
|
|
|
|
|
manage_options=ZopePageTemplate.manage_options+( |
|
{'label':'Main config','action':'changeZogiImageForm'}, |
|
) |
|
|
|
|
|
|
|
|
|
def index_html(self, REQUEST, RESPONSE): |
|
""" |
|
Modified version of OFS/Image.py |
|
|
|
The default view of the contents of a File or Image. |
|
|
|
Returns the contents of the file or image. Also, sets the |
|
Content-Type HTTP header to the objects content type. |
|
""" |
|
|
|
# HTTP If-Modified-Since header handling. |
|
header=REQUEST.get_header('If-Modified-Since', None) |
|
if header is not None: |
|
header=header.split( ';')[0] |
|
# Some proxies seem to send invalid date strings for this |
|
# header. If the date string is not valid, we ignore it |
|
# rather than raise an error to be generally consistent |
|
# with common servers such as Apache (which can usually |
|
# understand the screwy date string as a lucky side effect |
|
# of the way they parse it). |
|
# This happens to be what RFC2616 tells us to do in the face of an |
|
# invalid date. |
|
try: mod_since=long(DateTime(header).timeTime()) |
|
except: mod_since=None |
|
if mod_since is not None: |
|
if self._p_mtime: |
|
last_mod = long(self._p_mtime) |
|
else: |
|
last_mod = long(0) |
|
if last_mod > 0 and last_mod <= mod_since: |
|
# Set header values since apache caching will return Content-Length |
|
# of 0 in response if size is not set here |
|
RESPONSE.setHeader('Last-Modified', rfc1123_date(self._p_mtime)) |
|
RESPONSE.setHeader('Content-Type', self.content_type) |
|
RESPONSE.setHeader('Content-Length', self.size) |
|
RESPONSE.setHeader('Accept-Ranges', 'bytes') |
|
self.ZCacheable_set(None) |
|
RESPONSE.setStatus(304) |
|
return '' |
|
|
|
if self.precondition and hasattr(self,self.precondition): |
|
# Grab whatever precondition was defined and then |
|
# execute it. The precondition will raise an exception |
|
# if something violates its terms. |
|
c=getattr(self,self.precondition) |
|
if hasattr(c,'isDocTemp') and c.isDocTemp: |
|
c(REQUEST['PARENTS'][1],REQUEST) |
|
else: |
|
c() |
|
|
|
# HTTP Range header handling |
|
range = REQUEST.get_header('Range', None) |
|
request_range = REQUEST.get_header('Request-Range', None) |
|
if request_range is not None: |
|
# Netscape 2 through 4 and MSIE 3 implement a draft version |
|
# Later on, we need to serve a different mime-type as well. |
|
range = request_range |
|
if_range = REQUEST.get_header('If-Range', None) |
|
if range is not None: |
|
ranges = HTTPRangeSupport.parseRange(range) |
|
|
|
if if_range is not None: |
|
# Only send ranges if the data isn't modified, otherwise send |
|
# the whole object. Support both ETags and Last-Modified dates! |
|
if len(if_range) > 1 and if_range[:2] == 'ts': |
|
# ETag: |
|
if if_range != self.http__etag(): |
|
# Modified, so send a normal response. We delete |
|
# the ranges, which causes us to skip to the 200 |
|
# response. |
|
ranges = None |
|
else: |
|
# Date |
|
date = if_range.split( ';')[0] |
|
try: mod_since=long(DateTime(date).timeTime()) |
|
except: mod_since=None |
|
if mod_since is not None: |
|
if self._p_mtime: |
|
last_mod = long(self._p_mtime) |
|
else: |
|
last_mod = long(0) |
|
if last_mod > mod_since: |
|
# Modified, so send a normal response. We delete |
|
# the ranges, which causes us to skip to the 200 |
|
# response. |
|
ranges = None |
|
|
|
if ranges: |
|
# Search for satisfiable ranges. |
|
satisfiable = 0 |
|
for start, end in ranges: |
|
if start < self.size: |
|
satisfiable = 1 |
|
break |
|
|
|
if not satisfiable: |
|
RESPONSE.setHeader('Content-Range', |
|
'bytes */%d' % self.size) |
|
RESPONSE.setHeader('Accept-Ranges', 'bytes') |
|
RESPONSE.setHeader('Last-Modified', |
|
rfc1123_date(self._p_mtime)) |
|
RESPONSE.setHeader('Content-Type', self.content_type) |
|
RESPONSE.setHeader('Content-Length', self.size) |
|
RESPONSE.setStatus(416) |
|
return '' |
|
|
|
ranges = HTTPRangeSupport.expandRanges(ranges, self.size) |
|
|
|
if len(ranges) == 1: |
|
# Easy case, set extra header and return partial set. |
|
start, end = ranges[0] |
|
size = end - start |
|
|
|
RESPONSE.setHeader('Last-Modified', |
|
rfc1123_date(self._p_mtime)) |
|
RESPONSE.setHeader('Content-Type', self.content_type) |
|
RESPONSE.setHeader('Content-Length', size) |
|
RESPONSE.setHeader('Accept-Ranges', 'bytes') |
|
RESPONSE.setHeader('Content-Range', |
|
'bytes %d-%d/%d' % (start, end - 1, self.size)) |
|
RESPONSE.setStatus(206) # Partial content |
|
|
|
data = urllib.urlopen(self.baseUrl+self.queryString).read() |
|
if type(data) is StringType: |
|
return data[start:end] |
|
|
|
# Linked Pdata objects. Urgh. |
|
pos = 0 |
|
while data is not None: |
|
l = len(data.data) |
|
pos = pos + l |
|
if pos > start: |
|
# We are within the range |
|
lstart = l - (pos - start) |
|
|
|
if lstart < 0: lstart = 0 |
|
|
|
# find the endpoint |
|
if end <= pos: |
|
lend = l - (pos - end) |
|
|
|
# Send and end transmission |
|
RESPONSE.write(data[lstart:lend]) |
|
break |
|
|
|
# Not yet at the end, transmit what we have. |
|
RESPONSE.write(data[lstart:]) |
|
|
|
data = data.next |
|
|
|
return '' |
|
|
|
else: |
|
boundary = choose_boundary() |
|
|
|
# Calculate the content length |
|
size = (8 + len(boundary) + # End marker length |
|
len(ranges) * ( # Constant lenght per set |
|
49 + len(boundary) + len(self.content_type) + |
|
len('%d' % self.size))) |
|
for start, end in ranges: |
|
# Variable length per set |
|
size = (size + len('%d%d' % (start, end - 1)) + |
|
end - start) |
|
|
|
|
|
# Some clients implement an earlier draft of the spec, they |
|
# will only accept x-byteranges. |
|
draftprefix = (request_range is not None) and 'x-' or '' |
|
|
|
RESPONSE.setHeader('Content-Length', size) |
|
RESPONSE.setHeader('Accept-Ranges', 'bytes') |
|
RESPONSE.setHeader('Last-Modified', |
|
rfc1123_date(self._p_mtime)) |
|
RESPONSE.setHeader('Content-Type', |
|
'multipart/%sbyteranges; boundary=%s' % ( |
|
draftprefix, boundary)) |
|
RESPONSE.setStatus(206) # Partial content |
|
|
|
data = urllib.urlopen(self.baseUrl+self.queryString).read() |
|
# The Pdata map allows us to jump into the Pdata chain |
|
# arbitrarily during out-of-order range searching. |
|
pdata_map = {} |
|
pdata_map[0] = data |
|
|
|
for start, end in ranges: |
|
RESPONSE.write('\r\n--%s\r\n' % boundary) |
|
RESPONSE.write('Content-Type: %s\r\n' % |
|
self.content_type) |
|
RESPONSE.write( |
|
'Content-Range: bytes %d-%d/%d\r\n\r\n' % ( |
|
start, end - 1, self.size)) |
|
|
|
if type(data) is StringType: |
|
RESPONSE.write(data[start:end]) |
|
|
|
else: |
|
# Yippee. Linked Pdata objects. The following |
|
# calculations allow us to fast-forward through the |
|
# Pdata chain without a lot of dereferencing if we |
|
# did the work already. |
|
first_size = len(pdata_map[0].data) |
|
if start < first_size: |
|
closest_pos = 0 |
|
else: |
|
closest_pos = ( |
|
((start - first_size) >> 16 << 16) + |
|
first_size) |
|
pos = min(closest_pos, max(pdata_map.keys())) |
|
data = pdata_map[pos] |
|
|
|
while data is not None: |
|
l = len(data.data) |
|
pos = pos + l |
|
if pos > start: |
|
# We are within the range |
|
lstart = l - (pos - start) |
|
|
|
if lstart < 0: lstart = 0 |
|
|
|
# find the endpoint |
|
if end <= pos: |
|
lend = l - (pos - end) |
|
|
|
# Send and loop to next range |
|
RESPONSE.write(data[lstart:lend]) |
|
break |
|
|
|
# Not yet at the end, transmit what we have. |
|
RESPONSE.write(data[lstart:]) |
|
|
|
data = data.next |
|
# Store a reference to a Pdata chain link so we |
|
# don't have to deref during this request again. |
|
pdata_map[pos] = data |
|
|
|
# Do not keep the link references around. |
|
del pdata_map |
|
|
|
RESPONSE.write('\r\n--%s--\r\n' % boundary) |
|
return '' |
|
|
|
RESPONSE.setHeader('Last-Modified', rfc1123_date(self._p_mtime)) |
|
RESPONSE.setHeader('Content-Type', self.content_type) |
|
RESPONSE.setHeader('Content-Length', self.size) |
|
RESPONSE.setHeader('Accept-Ranges', 'bytes') |
|
|
|
# Don't cache the data itself, but provide an opportunity |
|
# for a cache manager to set response headers. |
|
self.ZCacheable_set(None) |
|
|
|
data=urllib.urlopen(self.baseUrl+self.queryString).read() |
|
|
|
if type(data) is type(''): |
|
RESPONSE.setBase(None) |
|
return data |
|
|
|
while data is not None: |
|
RESPONSE.write(data.data) |
|
data=data.next |
|
|
|
return '' |
|
|
|
|
|
def manage_addZogiImageForm(self): |
|
"""Form for adding""" |
|
pt=PageTemplateFile('Products/zogiLib/zpt/addZogiImage.zpt').__of__(self) |
|
return pt() |
|
|
|
|
|
def manage_addZogiImage(self,id,title,baseUrl, queryString,RESPONSE=None): |
|
"""add dgilib""" |
|
newObj=zogiImage(id,title,baseUrl, queryString) |
|
self.Destination()._setObject(id,newObj) |
|
if RESPONSE is not None: |
|
RESPONSE.redirect('manage_main') |
|
|
|
|
|
|
class zogiLib(Folder): |
class zogiLib(Folder): |
"""StandardElement""" |
"""StandardElement""" |
|
|
meta_type="zogiLib" |
meta_type="zogiLib" |
|
|
|
def getDlInfo(self): |
|
"""DLInfo""" |
|
paramH={} |
|
baseUrl=re.sub("servlet/Scaler","dlInfo-xml.jsp",self.digilibBaseUrl) |
|
|
|
url=urllib.urlopen(baseUrl+self.REQUEST['QUERY_STRING']) |
|
dom=xml.dom.minidom.parse(url) |
|
params=dom.getElementsByTagName('parameter') |
|
for param in params: |
|
paramH[param.getAttribute('name')]=param.getAttribute('value') |
|
return paramH |
|
|
|
def getPageNumTotal(self): |
|
"""pagenums""" |
|
return self.getDlInfo()['pt'] |
|
|
|
|
def generateImageFolder(self): |
def generateImageFolder(self): |
"""images ablegen""" |
"""images ablegen""" |
self.manage_addFolder('images') |
self.manage_addFolder('images') |
for image in os.listdir("../lib/python/Products/zogiLib/images"): |
pathName=os.path.join(package_home(globals()),'images') |
fn=file("../lib/python/Products/zogiLib/images/"+image) |
for image in os.listdir(pathName): |
print fn |
try: |
|
|
|
fn=file(os.path.join(pathName,image)) |
self.images.manage_addImage(image,fn) |
self.images.manage_addImage(image,fn) |
|
except: |
|
print "ZOGILIB not imported:",image |
|
|
|
|
|
|
def __init__(self, id,title,zogilibBaseUrl, localFileBase): |
|
|
def __init__(self, id,title,digilibBaseUrl, localFileBase,version="book"): |
"""init""" |
"""init""" |
|
|
self.id=id |
self.id=id |
self.title=title |
self.title=title |
self.zogilibBaseUrl=zogilibBaseUrl |
self.digilibBaseUrl=digilibBaseUrl |
self.localFileBase=localFileBase |
self.localFileBase=localFileBase |
self._setObject('topTemplate',zogiLib_navTemplate(id='topTemplate')) |
#self._setObject('topTemplate',zogiLib_navTemplate(id='topTemplate')) |
|
self._setObject('mainTemplate',zogiLib_mainTemplate(id='mainTemplate',version=version)) |
self.generateImageFolder() |
self.generateImageFolder() |
|
|
|
|
Line 143 class zogiLib(Folder):
|
Line 549 class zogiLib(Folder):
|
{'label':'Main Config','action':'changeZogiLibForm'}, |
{'label':'Main Config','action':'changeZogiLibForm'}, |
) |
) |
|
|
|
def option_js(self): |
|
"""option_js""" |
|
ret="""function setDLParam(e) { |
|
if (document.all) { |
|
s=e.srcElement; |
|
} else { |
|
s=e.target; |
|
} |
|
if (window.opener) { |
|
window.opener.setParameter(s.name, s.value); |
|
window.opener.display(9); |
|
} else { |
|
document.setParameter(s.name, s.value); |
|
document.display(9); |
|
} |
|
}""" |
|
return ret |
|
|
|
|
def navigation_js(self): |
def navigation_js(self): |
"""Javascript""" |
"""Javascript""" |
|
fileName=os.path.join(package_home(globals()),'js/navigation.js') |
|
return file(fileName).read() |
|
|
return file("../lib/python/Products/zogiLib/js/navigation.js").read() |
|
|
|
|
|
def generateTopJavaScript(self): |
def generateTopJavaScript(self): |
"""generate script""" |
"""generate script""" |
ret="""var baseUrl = '%s'; """% self.REQUEST['URL0'] |
ret=""" |
ret+="""newParameter('fn', '%s', '', 1); |
var baseUrl = '%s'; """% self.REQUEST['URL0'] |
newParameter('pn', '%s', '1', 1); |
|
newParameter('ws', '%s', '1.0', 1); |
|
newParameter('mo', '%s', '', 1); |
|
newParameter('mk', '%s', '', 3); |
|
newParameter('wx', '%s', '0.0', 2); |
|
newParameter('wy', '%s', '0.0', 2); |
|
newParameter('ww', '%s', '1.0', 2); |
|
newParameter('wh', '%s', '1.0', 2); |
|
newParameter('pt', '%s', '%s', 9); |
|
newParameter('brgt', '%s', '0.0', 1); |
|
newParameter('cont', '%s', '0.0', 1); |
|
newParameter('rot', '%s', '0.0', 1); |
|
newParameter('rgba', '%s', '', 1); |
|
newParameter('rgbm', '%s', '', 1); |
|
newParameter('ddpix', '%s', '', 9); |
|
newParameter('ddpiy', '%s', '', 9);"""%(getString(self,'fn'), |
|
getString(self,'pn',1), |
|
getString(self,'ws',1.0), |
|
getString(self,'mo',''), |
|
getString(self,'mk',''), |
|
getString(self,'wx',0.0), |
|
getString(self,'wy',0.0), |
|
getString(self,'ww',1.0), |
|
getString(self,'wh',1.0), |
|
getString(self,'pt',100),getString(self,'pt',100), |
|
getString(self,'brgt',0.0), |
|
getString(self,'cont',0.0), |
|
getString(self,'rot',0.0), |
|
getString(self,'rgba','0/0/0'), |
|
getString(self,'rgbm','0/0/0'), |
|
getString(self,'ddpix',0.0), |
|
getString(self,'ddpiy',0.0) |
|
) |
|
|
|
ret+=""" |
ret+=""" |
|
newParameter('fn', '', 1); |
var wwidth, wheight; |
newParameter('pn', '1', 1); |
if (self.innerHeight) // all except Explorer |
newParameter('ws', '1.0', 1); |
{ |
newParameter('mo', '', 1); |
wwidth = self.innerWidth; |
newParameter('mk', '', 3); |
wheight = self.innerHeight; |
newParameter('wx', '0.0', 2); |
} |
newParameter('wy', '0.0', 2); |
else if (document.documentElement && document.documentElement.clientHeight) |
newParameter('ww', '1.0', 2); |
// Explorer 6 Strict Mode |
newParameter('wh', '1.0', 2); |
{ |
newParameter('pt', '0', 9); |
wwidth = document.documentElement.clientWidth; |
newParameter('brgt', '0.0', 1); |
wheight = document.documentElement.clientHeight; |
newParameter('cont', '0.0', 1); |
} |
newParameter('rot', '0.0', 1); |
else if (document.body) // other Explorers |
newParameter('rgba', '', 1); |
{ |
newParameter('rgbm', '', 1); |
wwidth = document.body.clientWidth; |
newParameter('ddpix', '', 9); |
wheight = document.body.clientHeight; |
newParameter('ddpiy', '', 9); |
} |
var picsize = new Size(100, 100); |
|
document.id='digilib'; |
|
|
""" |
""" |
return ret |
return ret |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def generateScalerImg(self,requestString): |
def generateScalerImg(self,requestString): |
"""generate Scaler Tag""" |
"""generate Scaler IMG Tag""" |
retStr=self.zogilibBaseUrl+requestString |
retStr=self.digilibBaseUrl+requestString |
jS="""<script type="text/javascript"> |
jS="""<script type="text/javascript">picsize = bestPicSize('scaler'); |
document.write("<img id=\\\"pic\\\" src=\\\"%s&dw="+wwidth+"&dh="+wheight+"\\\"/>")</script>"""%retStr |
document.write('<img id="pic" src="%s&dw='+picsize.width+'&dh='+picsize.height+'" />') |
|
</script>"""%retStr |
return jS |
return jS |
|
|
def changeZogiLibForm(self): |
def changeZogiLibForm(self): |
Line 229 class zogiLib(Folder):
|
Line 616 class zogiLib(Folder):
|
pt=PageTemplateFile('Products/zogiLib/zpt/changeZogiLibForm.zpt').__of__(self) |
pt=PageTemplateFile('Products/zogiLib/zpt/changeZogiLibForm.zpt').__of__(self) |
return pt() |
return pt() |
|
|
def changeZogiLib(self,title,zogilibBaseUrl, localFileBase,RESPONSE=None): |
def changeZogiLib(self,title,digilibBaseUrl, localFileBase,RESPONSE=None): |
"""change it""" |
"""change it""" |
self.title=title |
self.title=title |
self.zogilibBaseUrl=zogilibBaseUrl |
self.digilibBaseUrl=digilibBaseUrl |
self.localFileBase=localFileBase |
self.localFileBase=localFileBase |
|
|
if RESPONSE is not None: |
if RESPONSE is not None: |
Line 241 class zogiLib(Folder):
|
Line 628 class zogiLib(Folder):
|
|
|
def nav_html(self,fileName): |
def nav_html(self,fileName): |
"""navigations frame""" |
"""navigations frame""" |
|
## currently not in use |
# suche nach index.meta mit zogilib thumb info |
# suche nach index.meta mit zogilib thumb info |
|
|
templ=readNavTemp(self.localFileBase+"/"+fileName) |
templ=readNavTemp(self.localFileBase+"/"+fileName) |
Line 257 class zogiLib(Folder):
|
Line 644 class zogiLib(Folder):
|
"""main action""" |
"""main action""" |
|
|
|
|
pt=PageTemplateFile('Products/zogiLib/zpt/zogiLibMain.zpt').__of__(self) |
#pt=PageTemplateFile('Products/zogiLib/zpt/zogiLibMain_image.zpt').__of__(self) |
return pt() |
#return pt() |
|
return self.mainTemplate() |
|
|
def storeQuery(self): |
def storeQuery(self): |
"""storeQuery in session""" |
"""storeQuery in session""" |
Line 266 class zogiLib(Folder):
|
Line 654 class zogiLib(Folder):
|
for fm in self.REQUEST.form.keys(): |
for fm in self.REQUEST.form.keys(): |
self.REQUEST.SESSION['query'][fm]=self.REQUEST.form[fm] |
self.REQUEST.SESSION['query'][fm]=self.REQUEST.form[fm] |
|
|
def setParam(self,pn=None,ws=None,rot=None): |
self.REQUEST.SESSION['dlInfo']=self.getDlInfo() |
"""gotopage""" |
|
|
def getParam(self,param): |
|
"""Gebe Parameter aus""" |
|
try: |
|
return self.REQUEST.SESSION['query'][param] |
|
except: |
|
return None |
|
|
|
def getPageNum(self): |
|
"""PAgenum""" |
|
pn=self.getParam('pn') |
|
if pn: |
|
return pn |
|
else: |
|
return 1 |
|
|
|
def biggerWS(self): |
|
"""ws+1""" |
|
ws=self.getParam('ws') |
|
if 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') |
|
if ws: |
|
if int(ws)==1: |
|
return |
|
else: |
|
return int(ws)-1 |
|
else: |
|
return 1 |
|
|
|
|
|
def setParam(self,pn=None,ws=None,rot=None,brgt=None,cont=None): |
|
"""setze Parameter""" |
ret="" |
ret="" |
|
|
|
if brgt: |
|
self.REQUEST.SESSION['query']['brgt']=brgt |
|
|
|
if cont: |
|
self.REQUEST.SESSION['query']['cont']=cont |
|
|
if pn: |
if pn: |
self.REQUEST.SESSION['query']['pn']=pn |
self.REQUEST.SESSION['query']['pn']=pn |
|
|
Line 285 class zogiLib(Folder):
|
Line 722 class zogiLib(Folder):
|
|
|
self.REQUEST.RESPONSE.redirect(self.REQUEST['URL1']+'?'+ret) |
self.REQUEST.RESPONSE.redirect(self.REQUEST['URL1']+'?'+ret) |
|
|
|
|
def mirrorPage(self,mi): |
def mirrorPage(self,mi): |
"""mirror""" |
"""mirror""" |
ret="" |
ret="" |
Line 321 class zogiLib(Folder):
|
Line 759 class zogiLib(Folder):
|
|
|
def decode(self,strR): |
def decode(self,strR): |
"""decode &""" |
"""decode &""" |
print re.sub('\&','\&',strR) |
|
return re.sub('\&','\&',strR) |
return re.sub('\&','\&',strR) |
|
|
def wholePage(self): |
def wholePage(self): |
Line 348 class zogiLib(Folder):
|
Line 786 class zogiLib(Folder):
|
|
|
|
|
self.REQUEST.form['pn']=pn |
self.REQUEST.form['pn']=pn |
print "hi",self.REQUEST.form.keys() |
|
for param in self.REQUEST.form.keys(): |
for param in self.REQUEST.form.keys(): |
print param |
|
ret+=param+"="+str(self.REQUEST.form[param])+"&" |
ret+=param+"="+str(self.REQUEST.form[param])+"&" |
|
|
self.REQUEST.RESPONSE.redirect(self.REQUEST['URL1']+'?'+ret) |
self.REQUEST.RESPONSE.redirect(self.REQUEST['URL1']+'?'+ret) |
|
|
|
def firstPage(self): |
|
"""erste Seite""" |
|
return self.setParam(pn="1") |
|
|
|
def lastPage(self): |
|
"""letzte Seite""" |
|
|
|
|
def nextPage(self,pn=None): |
def nextPage(self,pn=None): |
"""next page""" |
"""next page""" |
Line 366 class zogiLib(Folder):
|
Line 811 class zogiLib(Folder):
|
pn=str(2) |
pn=str(2) |
|
|
self.REQUEST.form['pn']=pn |
self.REQUEST.form['pn']=pn |
print "hi",self.REQUEST.form.keys() |
|
for param in self.REQUEST.form.keys(): |
for param in self.REQUEST.form.keys(): |
print param |
|
ret+=param+"="+str(self.REQUEST.form[param])+"&" |
ret+=param+"="+str(self.REQUEST.form[param])+"&" |
|
|
self.REQUEST.RESPONSE.redirect(self.REQUEST['URL1']+'?'+ret) |
self.REQUEST.RESPONSE.redirect(self.REQUEST['URL1']+'?'+ret) |
Line 379 def manage_addZogiLibForm(self):
|
Line 823 def manage_addZogiLibForm(self):
|
pt=PageTemplateFile('Products/zogiLib/zpt/addZogiLibForm').__of__(self) |
pt=PageTemplateFile('Products/zogiLib/zpt/addZogiLibForm').__of__(self) |
return pt() |
return pt() |
|
|
def manage_addZogiLib(self,id,title,zogilibBaseUrl, localFileBase,RESPONSE=None): |
def manage_addZogiLib(self,id,title,digilibBaseUrl, localFileBase,version="book",RESPONSE=None): |
"""add dgilib""" |
"""add dgilib""" |
newObj=zogiLib(id,title,zogilibBaseUrl, localFileBase) |
newObj=zogiLib(id,title,digilibBaseUrl, localFileBase, version) |
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') |