Annotation of zogiLib/zogiLib.py, revision 1.3

1.1       dwinter     1: from Products.PageTemplates.PageTemplateFile import PageTemplateFile
                      2: from Products.PageTemplates.PageTemplate import PageTemplate
                      3: from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate
                      4: 
                      5: 
                      6: import xml.dom.minidom
                      7: from OFS.Folder import Folder
                      8: from xml_helpers import getText
                      9: import os
                     10: import re
                     11: import string
                     12: import urllib
                     13: from Globals import package_home
                     14: 
                     15: def getString(self,key,default=''):
                     16:     try:
                     17:         return self.REQUEST[key]
                     18:     except:
                     19:         return default
                     20: 
                     21:     
                     22: class zogiLib_navTemplate(ZopePageTemplate):
                     23:     """pageTemplate Objekt"""
                     24:     meta_type="zogiLib_navTemplate"
                     25: 
                     26:     _default_content_fn = os.path.join(package_home(globals()),
                     27:                                        'zpt/zogiLib_NavTemplateDefault.zpt')
                     28: 
                     29:     manage_options=ZopePageTemplate.manage_options+(
                     30:         {'label':'Copy to Filesystem','action':'copyContent'},
                     31:        )
                     32: 
                     33:     def getPath(self):
                     34:         """get path"""
                     35:         return getPath(self,'thumbtemplate.templ')
                     36:     
                     37:     ## def changeECHO_pageTemplateWeightForm(self):
                     38: ##         """change"""
                     39: ##         pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_pageTemplateWeight.zpt').__of__(self)
                     40: ##         return pt()
                     41: 
                     42: ##     def changeECHO_pageTemplateWeight(self,weight,content_type,RESPONSE=None):
                     43: ##         """change"""
                     44: ##         self.weight=weight
                     45: ##         self.content_type=content_type
                     46: 
                     47: ##         if RESPONSE is not None:
                     48: ##             RESPONSE.redirect('manage_main')
                     49:         
                     50: 
                     51:     def copyContent(self):
                     52:         """copycontent to path"""
                     53: 
                     54:         return "copied to:"+copyContent(self,'thumbtemplate.templ')
                     55:         
                     56:     
                     57: def manage_addZogiLib_NavTemplateForm(self):
                     58:     """Form for adding"""
1.3     ! dwinter    59:     pt=PageTemplateFile('Products/zogiLib/zpt/AddZogilib_NavTemplate.zpt').__of__(self)
1.1       dwinter    60:     return pt()
                     61: 
                     62: 
                     63: 
                     64: 
                     65: def manage_addZogiLib_NavTemplate(self, id,title=None, text=None,
                     66:                            REQUEST=None, submit=None):
                     67:     "Add a Page Template with optional file content."
                     68: 
                     69:     
                     70:     id = str(id)
                     71:     if REQUEST is None:
                     72:         self._setObject(id, zogilib_NavTemplate(id, text))
                     73:         ob = getattr(self, id)
                     74:        
                     75:         if title:
                     76:             ob.pt_setTitle(title)
                     77:         return ob
                     78:     else:
                     79:         file = REQUEST.form.get('file')
                     80:         headers = getattr(file, 'headers', None)
                     81:         if headers is None or not file.filename:
                     82:             zpt = zogilib_NavTemplate(id)
                     83:         else:
                     84:             zpt = zogilib_NavTemplate(id, file, headers.get('content_type'))
                     85: 
                     86:         self._setObject(id, zpt)
                     87:         ob = getattr(self, id)
                     88: 
                     89: 
                     90:         try:
                     91:             u = self.DestinationURL()
                     92:         except AttributeError:
                     93:             u = REQUEST['URL1']
                     94: 
                     95:         if submit == " Add and Edit ":
                     96:             u = "%s/%s" % (u, quote(id))
                     97:         REQUEST.RESPONSE.redirect(u+'/manage_main')
                     98:     return ''
                     99: 
1.3     ! dwinter   100: 
        !           101:         
1.1       dwinter   102: def readNavTemp(fileName):
                    103:     """navtemp"""
1.3     ! dwinter   104:     
1.1       dwinter   105:     
                    106:     if os.path.exists(fileName+"/index.meta"):
                    107:         dom=xml.dom.minidom.parse(fileName+"/index.meta")
                    108:     else:
                    109:         return None
                    110:     
1.3     ! dwinter   111:     
1.1       dwinter   112:     try:
                    113:         navTag=getText(dom.getElementsByTagName('zogilibtemplate')[0].childNodes)
                    114:     except:
                    115:         navTag=None
                    116:     return navTag
                    117:     
                    118:         
                    119: class zogiLib(Folder):
                    120:     """StandardElement"""
                    121: 
                    122:     meta_type="zogiLib"
                    123: 
1.3     ! dwinter   124:     def getDlInfo(self):
        !           125:         """DLInfo"""
        !           126:         paramH={}
        !           127:         baseUrl=re.sub("servlet/Scaler","/dlInfo-xml.jsp",self.digilibBaseUrl)
        !           128:         
        !           129:         url=urllib.urlopen(baseUrl+self.REQUEST['QUERY_STRING'])
        !           130:         dom=xml.dom.minidom.parse(url)
        !           131:         params=dom.getElementsByTagName('parameter')
        !           132:         for param in params:
        !           133:             paramH[param.getAttribute('name')]=param.getAttribute('value')
        !           134:         return paramH
        !           135: 
        !           136:     def getPageNumTotal(self):
        !           137:         """pagenums"""
        !           138:         return self.getDlInfo()['pt']
        !           139:     
        !           140:     
1.1       dwinter   141:     def generateImageFolder(self):
                    142:         """images ablegen"""
                    143:         self.manage_addFolder('images')
                    144:         for image in os.listdir("../lib/python/Products/zogiLib/images"):
                    145:             fn=file("../lib/python/Products/zogiLib/images/"+image)
1.3     ! dwinter   146:             
1.1       dwinter   147:             self.images.manage_addImage(image,fn)
                    148:         
                    149: 
1.2       dwinter   150:     def __init__(self, id,title,digilibBaseUrl, localFileBase):
1.1       dwinter   151:         """init"""
                    152: 
                    153:         self.id=id
                    154:         self.title=title
1.2       dwinter   155:         self.digilibBaseUrl=digilibBaseUrl
1.1       dwinter   156:         self.localFileBase=localFileBase
                    157:         self._setObject('topTemplate',zogiLib_navTemplate(id='topTemplate'))
                    158:         self.generateImageFolder()
                    159: 
                    160: 
                    161:     manage_options = Folder.manage_options+(
                    162:             {'label':'Main Config','action':'changeZogiLibForm'},
                    163:             )
                    164: 
1.3     ! dwinter   165:     def option_js(self):
        !           166:         """option_js"""
        !           167:         ret="""function setParam(e) {
        !           168:         if (document.all) s=e.srcElement;
        !           169:                    else s=e.target;
        !           170:                         if (window.opener) location=window.opener.location
        !           171:                         else location=document.location
        !           172:                         location=" %s/setParam?"+s.name+'='+s.value;
        !           173:                         }"""%self.REQUEST['URL1']
        !           174:         return ret
        !           175:                         
        !           176:                         
1.1       dwinter   177:     def navigation_js(self):
                    178:         """Javascript"""
                    179:         
                    180:         return file("../lib/python/Products/zogiLib/js/navigation.js").read()
                    181: 
1.3     ! dwinter   182: 
1.1       dwinter   183:             
                    184:     def generateTopJavaScript(self):
                    185:         """generate script"""
                    186:         ret="""var baseUrl = '%s'; """% self.REQUEST['URL0']
                    187:         ret+="""newParameter('fn', '%s', '', 1);
                    188:                 newParameter('pn', '%s', '1', 1);
                    189:                 newParameter('ws', '%s', '1.0', 1);
                    190:                 newParameter('mo', '%s', '', 1);
                    191:                 newParameter('mk', '%s', '', 3);
                    192:                 newParameter('wx', '%s', '0.0', 2);
                    193:                 newParameter('wy', '%s', '0.0', 2);
                    194:                 newParameter('ww', '%s', '1.0', 2);
                    195:                 newParameter('wh', '%s', '1.0', 2);
                    196:                 newParameter('pt', '%s', '%s', 9);
                    197:                 newParameter('brgt', '%s', '0.0', 1);
                    198:                 newParameter('cont', '%s', '0.0', 1);
                    199:                 newParameter('rot', '%s', '0.0', 1);
                    200:                 newParameter('rgba', '%s', '', 1);
                    201:                 newParameter('rgbm', '%s', '', 1);
                    202:                 newParameter('ddpix', '%s', '', 9);
                    203:                 newParameter('ddpiy', '%s', '', 9);"""%(getString(self,'fn'),
                    204:                  getString(self,'pn',1),
                    205:                  getString(self,'ws',1.0),
                    206:                  getString(self,'mo',''),
                    207:                  getString(self,'mk',''),
                    208:                  getString(self,'wx',0.0),
                    209:                  getString(self,'wy',0.0),
                    210:                  getString(self,'ww',1.0),
                    211:                  getString(self,'wh',1.0),
                    212:                  getString(self,'pt',100),getString(self,'pt',100),
                    213:                  getString(self,'brgt',0.0),
                    214:                  getString(self,'cont',0.0),
                    215:                  getString(self,'rot',0.0),
                    216:                  getString(self,'rgba','0/0/0'),
                    217:                  getString(self,'rgbm','0/0/0'),
                    218:                  getString(self,'ddpix',0.0),
                    219:                  getString(self,'ddpiy',0.0)
                    220:                  )
                    221: 
                    222:         ret+="""
                    223: 
                    224:         var wwidth, wheight;
                    225:         if (self.innerHeight) // all except Explorer
                    226:         {
                    227:         wwidth = self.innerWidth;
                    228:         wheight = self.innerHeight;
                    229:         }
                    230:         else if (document.documentElement && document.documentElement.clientHeight)
                    231:         // Explorer 6 Strict Mode
                    232:         {
                    233:         wwidth = document.documentElement.clientWidth;
                    234:         wheight = document.documentElement.clientHeight;
                    235:         }
                    236:         else if (document.body) // other Explorers
                    237:         {
                    238:         wwidth = document.body.clientWidth;
                    239:         wheight = document.body.clientHeight;
                    240:         }
                    241: 
1.3     ! dwinter   242:         document.id="digilib"
1.1       dwinter   243:         
                    244:         """
                    245:         return ret
                    246: 
                    247: 
                    248:     
                    249:                 
                    250:                 
                    251:         
                    252:         
                    253:     def generateScalerImg(self,requestString):
                    254:         """generate Scaler Tag"""
1.2       dwinter   255:         retStr=self.digilibBaseUrl+requestString
1.1       dwinter   256:         jS="""<script type="text/javascript">
                    257:         document.write("<img id=\\\"pic\\\" src=\\\"%s&dw="+wwidth+"&dh="+wheight+"\\\"/>")</script>"""%retStr
                    258:         return jS
                    259: 
                    260:     def changeZogiLibForm(self):
                    261:         """Main configuration"""
                    262:         pt=PageTemplateFile('Products/zogiLib/zpt/changeZogiLibForm.zpt').__of__(self)
                    263:         return pt()
                    264:     
1.2       dwinter   265:     def changeZogiLib(self,title,digilibBaseUrl, localFileBase,RESPONSE=None):
1.1       dwinter   266:         """change it"""
                    267:         self.title=title
1.2       dwinter   268:         self.digilibBaseUrl=digilibBaseUrl
1.1       dwinter   269:         self.localFileBase=localFileBase
                    270: 
                    271:         if RESPONSE is not None:
                    272:             RESPONSE.redirect('manage_main')
                    273: 
                    274:             
                    275:     def nav_html(self,fileName):
                    276:         """navigations frame"""
                    277: 
                    278:         # suche nach index.meta mit zogilib thumb info
                    279:         
                    280:         templ=readNavTemp(self.localFileBase+"/"+fileName)
                    281:         if not templ:
                    282:             templ=readNavTemp(self.localFileBase+"/"+fileName.split("/")[0])
                    283:             if not templ:
                    284:                 return self.topTemplate.document_src()
                    285: 
                    286:         return urllib.urlopen(templ).read()
                    287:     
                    288:     
                    289:     def index_html(self):
                    290:         """main action"""
                    291: 
                    292: 
1.3     ! dwinter   293:         pt=PageTemplateFile('Products/zogiLib/zpt/zogiLibMain_book.zpt').__of__(self)
1.1       dwinter   294:         return pt()
                    295: 
                    296:     def storeQuery(self):
                    297:         """storeQuery in session"""
                    298:         self.REQUEST.SESSION['query']={}
                    299:         for fm in self.REQUEST.form.keys():
                    300:             self.REQUEST.SESSION['query'][fm]=self.REQUEST.form[fm]
                    301: 
1.3     ! dwinter   302:         self.REQUEST.SESSION['dlInfo']=self.getDlInfo()
        !           303:         
        !           304:     def getParam(self,param):
        !           305:         """Gebe Parameter aus"""
        !           306:         try:
        !           307:             return self.REQUEST.SESSION['query'][param]
        !           308:         except:
        !           309:             return None
        !           310: 
        !           311:     def getPageNum(self):
        !           312:         """PAgenum"""
        !           313:         pn=self.getParam('pn')
        !           314:         if pn:
        !           315:             return pn
        !           316:         else:
        !           317:             return 1
        !           318: 
        !           319:     def biggerWS(self):
        !           320:         """ws+1"""
        !           321:         ws=self.getParam('ws')
        !           322:         if ws:
        !           323:             return int(ws)+1
        !           324:         else:
        !           325:             return 2
        !           326: 
        !           327:     def options(self):
        !           328:         """showoptions"""
        !           329:         pt=PageTemplateFile('Products/zogiLib/zpt/optionwindow.zpt').__of__(self)
        !           330:         return pt()
        !           331: 
        !           332:         
        !           333:     def smallerWS(self):
        !           334:         """ws-11"""
        !           335:         ws=self.getParam('ws')
        !           336:         if ws:
        !           337:             if int(ws)==1:
        !           338:                 return
        !           339:             else:
        !           340:                 return int(ws)-1
        !           341:         else:
        !           342:             return 1
        !           343:         
        !           344:         
        !           345:     def setParam(self,pn=None,ws=None,rot=None,brgt=None,cont=None):
        !           346:         """setze Parameter"""
1.1       dwinter   347:         ret=""
                    348: 
1.3     ! dwinter   349:         if brgt:
        !           350:             self.REQUEST.SESSION['query']['brgt']=brgt
        !           351: 
        !           352:         if cont:
        !           353:             self.REQUEST.SESSION['query']['cont']=cont
        !           354: 
1.1       dwinter   355:         if pn:
                    356:             self.REQUEST.SESSION['query']['pn']=pn
                    357: 
                    358:         if ws:
                    359:             self.REQUEST.SESSION['query']['ws']=ws
                    360: 
                    361:         if rot:
                    362:             self.REQUEST.SESSION['query']['rot']=rot
                    363:             
                    364:         for param in self.REQUEST.SESSION['query'].keys():
                    365:             
                    366:             ret+=param+"="+str(self.REQUEST.SESSION['query'][param])+"&"
                    367:         
                    368:         self.REQUEST.RESPONSE.redirect(self.REQUEST['URL1']+'?'+ret)
                    369: 
1.3     ! dwinter   370:    
1.1       dwinter   371:     def mirrorPage(self,mi):
                    372:         """mirror"""
                    373:         ret=""
                    374:         try:
                    375:             splitted=self.REQUEST.SESSION['query']['mo'].split(',')
                    376:         except:
                    377:             splitted=[]
                    378:         
                    379:         if mi=="h":
                    380:                     
                    381:             if 'hmir' in splitted:
                    382:                 splitted.remove('hmir')
                    383:             else:
                    384:                 splitted.append('hmir')
                    385: 
                    386:         if mi=="v":
                    387: 
                    388:             if 'vmir' in splitted:
                    389:                 splitted.remove('vmir')
                    390:             else:
                    391:                 splitted.append('vmir')
                    392: 
                    393: 
                    394:         self.REQUEST.SESSION['query']['mo']=string.join(splitted,",")
                    395:         
                    396:         
                    397:         
                    398:         
                    399:         for param in self.REQUEST.SESSION['query'].keys():
                    400:             
                    401:             ret+=param+"="+str(self.REQUEST.SESSION['query'][param])+"&"
                    402:         
                    403:         self.REQUEST.RESPONSE.redirect(self.REQUEST['URL1']+'?'+ret)
                    404:         
                    405:     def decode(self,strR):
                    406:         """decode &"""
1.3     ! dwinter   407:         
1.1       dwinter   408:         return re.sub('\&amp','\&',strR)
                    409:     
                    410:     def wholePage(self):
                    411:         """zoom out"""
                    412:         ret=""
                    413:         
                    414:         self.REQUEST.SESSION['query']['ww']=1
                    415:         self.REQUEST.SESSION['query']['wh']=1
                    416:         self.REQUEST.SESSION['query']['wx']=0
                    417:         self.REQUEST.SESSION['query']['wy']=0
                    418:             
                    419:         for param in self.REQUEST.SESSION['query'].keys():
                    420:             
                    421:             ret+=param+"="+str(self.REQUEST.SESSION['query'][param])+"&"
                    422:         
                    423:         self.REQUEST.RESPONSE.redirect(self.REQUEST['URL1']+'?'+ret)
                    424:         
                    425:     def prevPage(self,pn=None):
                    426:         """next page"""
                    427:         ret=""
                    428: 
                    429:         if pn and pn>0:
                    430:             pn=str(int(pn)-1)
                    431:         
                    432: 
                    433:         self.REQUEST.form['pn']=pn
1.3     ! dwinter   434:         
1.1       dwinter   435:         for param in self.REQUEST.form.keys():
1.3     ! dwinter   436:             
1.1       dwinter   437:             ret+=param+"="+str(self.REQUEST.form[param])+"&"
                    438:         
                    439:         self.REQUEST.RESPONSE.redirect(self.REQUEST['URL1']+'?'+ret)
                    440: 
1.3     ! dwinter   441:     def firstPage(self):
        !           442:         """erste Seite"""
        !           443:         return self.setParam(pn="1")
1.1       dwinter   444:     
1.3     ! dwinter   445:     def lastPage(self):
        !           446:         """letzte Seite"""
        !           447: 
        !           448:         
1.1       dwinter   449:     def nextPage(self,pn=None):
                    450:         """next page"""
                    451:         ret=""
                    452:         
                    453:         try:
                    454:             pn=str(int(pn)+1)
                    455:         except:
                    456:             pn=str(2)
                    457: 
                    458:         self.REQUEST.form['pn']=pn
1.3     ! dwinter   459:         
1.1       dwinter   460:         for param in self.REQUEST.form.keys():
                    461:             ret+=param+"="+str(self.REQUEST.form[param])+"&"
                    462:         
                    463:         self.REQUEST.RESPONSE.redirect(self.REQUEST['URL1']+'?'+ret)
                    464: 
                    465:         
                    466: def manage_addZogiLibForm(self):
                    467:     """interface for adding zogilib"""
                    468:     pt=PageTemplateFile('Products/zogiLib/zpt/addZogiLibForm').__of__(self)
                    469:     return pt()
                    470: 
1.2       dwinter   471: def manage_addZogiLib(self,id,title,digilibBaseUrl, localFileBase,RESPONSE=None):
1.1       dwinter   472:     """add dgilib"""
1.2       dwinter   473:     newObj=zogiLib(id,title,digilibBaseUrl, localFileBase)
1.1       dwinter   474:     self.Destination()._setObject(id,newObj)
                    475:     if RESPONSE is not None:
                    476:         RESPONSE.redirect('manage_main')

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>