Annotation of zogiLib/zogiLib.py, revision 1.2

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"""
                     59:     pt=PageTemplateFile('Products/ECHO_content/zpt/AddZogilib_NavTemplate.zpt').__of__(self)
                     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: 
                    100: def readNavTemp(fileName):
                    101:     """navtemp"""
                    102:     print "HI reading",fileName
                    103:     
                    104:     if os.path.exists(fileName+"/index.meta"):
                    105:         dom=xml.dom.minidom.parse(fileName+"/index.meta")
                    106:     else:
                    107:         return None
                    108:     
                    109:     print "dom",dom
                    110:     try:
                    111:         navTag=getText(dom.getElementsByTagName('zogilibtemplate')[0].childNodes)
                    112:     except:
                    113:         navTag=None
                    114:     return navTag
                    115:     
                    116:         
                    117: class zogiLib(Folder):
                    118:     """StandardElement"""
                    119: 
                    120:     meta_type="zogiLib"
                    121: 
                    122:     def generateImageFolder(self):
                    123:         """images ablegen"""
                    124:         self.manage_addFolder('images')
                    125:         for image in os.listdir("../lib/python/Products/zogiLib/images"):
                    126:             fn=file("../lib/python/Products/zogiLib/images/"+image)
                    127:             print fn
                    128:             self.images.manage_addImage(image,fn)
                    129:         
                    130: 
1.2     ! dwinter   131:     def __init__(self, id,title,digilibBaseUrl, localFileBase):
1.1       dwinter   132:         """init"""
                    133: 
                    134:         self.id=id
                    135:         self.title=title
1.2     ! dwinter   136:         self.digilibBaseUrl=digilibBaseUrl
1.1       dwinter   137:         self.localFileBase=localFileBase
                    138:         self._setObject('topTemplate',zogiLib_navTemplate(id='topTemplate'))
                    139:         self.generateImageFolder()
                    140: 
                    141: 
                    142:     manage_options = Folder.manage_options+(
                    143:             {'label':'Main Config','action':'changeZogiLibForm'},
                    144:             )
                    145: 
                    146:     def navigation_js(self):
                    147:         """Javascript"""
                    148:         
                    149:         return file("../lib/python/Products/zogiLib/js/navigation.js").read()
                    150: 
                    151:             
                    152:     def generateTopJavaScript(self):
                    153:         """generate script"""
                    154:         ret="""var baseUrl = '%s'; """% self.REQUEST['URL0']
                    155:         ret+="""newParameter('fn', '%s', '', 1);
                    156:                 newParameter('pn', '%s', '1', 1);
                    157:                 newParameter('ws', '%s', '1.0', 1);
                    158:                 newParameter('mo', '%s', '', 1);
                    159:                 newParameter('mk', '%s', '', 3);
                    160:                 newParameter('wx', '%s', '0.0', 2);
                    161:                 newParameter('wy', '%s', '0.0', 2);
                    162:                 newParameter('ww', '%s', '1.0', 2);
                    163:                 newParameter('wh', '%s', '1.0', 2);
                    164:                 newParameter('pt', '%s', '%s', 9);
                    165:                 newParameter('brgt', '%s', '0.0', 1);
                    166:                 newParameter('cont', '%s', '0.0', 1);
                    167:                 newParameter('rot', '%s', '0.0', 1);
                    168:                 newParameter('rgba', '%s', '', 1);
                    169:                 newParameter('rgbm', '%s', '', 1);
                    170:                 newParameter('ddpix', '%s', '', 9);
                    171:                 newParameter('ddpiy', '%s', '', 9);"""%(getString(self,'fn'),
                    172:                  getString(self,'pn',1),
                    173:                  getString(self,'ws',1.0),
                    174:                  getString(self,'mo',''),
                    175:                  getString(self,'mk',''),
                    176:                  getString(self,'wx',0.0),
                    177:                  getString(self,'wy',0.0),
                    178:                  getString(self,'ww',1.0),
                    179:                  getString(self,'wh',1.0),
                    180:                  getString(self,'pt',100),getString(self,'pt',100),
                    181:                  getString(self,'brgt',0.0),
                    182:                  getString(self,'cont',0.0),
                    183:                  getString(self,'rot',0.0),
                    184:                  getString(self,'rgba','0/0/0'),
                    185:                  getString(self,'rgbm','0/0/0'),
                    186:                  getString(self,'ddpix',0.0),
                    187:                  getString(self,'ddpiy',0.0)
                    188:                  )
                    189: 
                    190:         ret+="""
                    191: 
                    192:         var wwidth, wheight;
                    193:         if (self.innerHeight) // all except Explorer
                    194:         {
                    195:         wwidth = self.innerWidth;
                    196:         wheight = self.innerHeight;
                    197:         }
                    198:         else if (document.documentElement && document.documentElement.clientHeight)
                    199:         // Explorer 6 Strict Mode
                    200:         {
                    201:         wwidth = document.documentElement.clientWidth;
                    202:         wheight = document.documentElement.clientHeight;
                    203:         }
                    204:         else if (document.body) // other Explorers
                    205:         {
                    206:         wwidth = document.body.clientWidth;
                    207:         wheight = document.body.clientHeight;
                    208:         }
                    209: 
                    210:         
                    211:         """
                    212:         return ret
                    213: 
                    214: 
                    215:     
                    216:                 
                    217:                 
                    218:         
                    219:         
                    220:     def generateScalerImg(self,requestString):
                    221:         """generate Scaler Tag"""
1.2     ! dwinter   222:         retStr=self.digilibBaseUrl+requestString
1.1       dwinter   223:         jS="""<script type="text/javascript">
                    224:         document.write("<img id=\\\"pic\\\" src=\\\"%s&dw="+wwidth+"&dh="+wheight+"\\\"/>")</script>"""%retStr
                    225:         return jS
                    226: 
                    227:     def changeZogiLibForm(self):
                    228:         """Main configuration"""
                    229:         pt=PageTemplateFile('Products/zogiLib/zpt/changeZogiLibForm.zpt').__of__(self)
                    230:         return pt()
                    231:     
1.2     ! dwinter   232:     def changeZogiLib(self,title,digilibBaseUrl, localFileBase,RESPONSE=None):
1.1       dwinter   233:         """change it"""
                    234:         self.title=title
1.2     ! dwinter   235:         self.digilibBaseUrl=digilibBaseUrl
1.1       dwinter   236:         self.localFileBase=localFileBase
                    237: 
                    238:         if RESPONSE is not None:
                    239:             RESPONSE.redirect('manage_main')
                    240: 
                    241:             
                    242:     def nav_html(self,fileName):
                    243:         """navigations frame"""
                    244: 
                    245:         # suche nach index.meta mit zogilib thumb info
                    246:         
                    247:         templ=readNavTemp(self.localFileBase+"/"+fileName)
                    248:         if not templ:
                    249:             templ=readNavTemp(self.localFileBase+"/"+fileName.split("/")[0])
                    250:             if not templ:
                    251:                 return self.topTemplate.document_src()
                    252: 
                    253:         return urllib.urlopen(templ).read()
                    254:     
                    255:     
                    256:     def index_html(self):
                    257:         """main action"""
                    258: 
                    259: 
                    260:         pt=PageTemplateFile('Products/zogiLib/zpt/zogiLibMain.zpt').__of__(self)
                    261:         return pt()
                    262: 
                    263:     def storeQuery(self):
                    264:         """storeQuery in session"""
                    265:         self.REQUEST.SESSION['query']={}
                    266:         for fm in self.REQUEST.form.keys():
                    267:             self.REQUEST.SESSION['query'][fm]=self.REQUEST.form[fm]
                    268: 
                    269:     def setParam(self,pn=None,ws=None,rot=None):
                    270:         """gotopage"""
                    271:         ret=""
                    272: 
                    273:         if pn:
                    274:             self.REQUEST.SESSION['query']['pn']=pn
                    275: 
                    276:         if ws:
                    277:             self.REQUEST.SESSION['query']['ws']=ws
                    278: 
                    279:         if rot:
                    280:             self.REQUEST.SESSION['query']['rot']=rot
                    281:             
                    282:         for param in self.REQUEST.SESSION['query'].keys():
                    283:             
                    284:             ret+=param+"="+str(self.REQUEST.SESSION['query'][param])+"&"
                    285:         
                    286:         self.REQUEST.RESPONSE.redirect(self.REQUEST['URL1']+'?'+ret)
                    287: 
                    288:     def mirrorPage(self,mi):
                    289:         """mirror"""
                    290:         ret=""
                    291:         try:
                    292:             splitted=self.REQUEST.SESSION['query']['mo'].split(',')
                    293:         except:
                    294:             splitted=[]
                    295:         
                    296:         if mi=="h":
                    297:                     
                    298:             if 'hmir' in splitted:
                    299:                 splitted.remove('hmir')
                    300:             else:
                    301:                 splitted.append('hmir')
                    302: 
                    303:         if mi=="v":
                    304: 
                    305:             if 'vmir' in splitted:
                    306:                 splitted.remove('vmir')
                    307:             else:
                    308:                 splitted.append('vmir')
                    309: 
                    310: 
                    311:         self.REQUEST.SESSION['query']['mo']=string.join(splitted,",")
                    312:         
                    313:         
                    314:         
                    315:         
                    316:         for param in self.REQUEST.SESSION['query'].keys():
                    317:             
                    318:             ret+=param+"="+str(self.REQUEST.SESSION['query'][param])+"&"
                    319:         
                    320:         self.REQUEST.RESPONSE.redirect(self.REQUEST['URL1']+'?'+ret)
                    321:         
                    322:     def decode(self,strR):
                    323:         """decode &"""
                    324:         print re.sub('\&amp','\&',strR)
                    325:         return re.sub('\&amp','\&',strR)
                    326:     
                    327:     def wholePage(self):
                    328:         """zoom out"""
                    329:         ret=""
                    330:         
                    331:         self.REQUEST.SESSION['query']['ww']=1
                    332:         self.REQUEST.SESSION['query']['wh']=1
                    333:         self.REQUEST.SESSION['query']['wx']=0
                    334:         self.REQUEST.SESSION['query']['wy']=0
                    335:             
                    336:         for param in self.REQUEST.SESSION['query'].keys():
                    337:             
                    338:             ret+=param+"="+str(self.REQUEST.SESSION['query'][param])+"&"
                    339:         
                    340:         self.REQUEST.RESPONSE.redirect(self.REQUEST['URL1']+'?'+ret)
                    341:         
                    342:     def prevPage(self,pn=None):
                    343:         """next page"""
                    344:         ret=""
                    345: 
                    346:         if pn and pn>0:
                    347:             pn=str(int(pn)-1)
                    348:         
                    349: 
                    350:         self.REQUEST.form['pn']=pn
                    351:         print "hi",self.REQUEST.form.keys()
                    352:         for param in self.REQUEST.form.keys():
                    353:             print param
                    354:             ret+=param+"="+str(self.REQUEST.form[param])+"&"
                    355:         
                    356:         self.REQUEST.RESPONSE.redirect(self.REQUEST['URL1']+'?'+ret)
                    357: 
                    358:     
                    359:     def nextPage(self,pn=None):
                    360:         """next page"""
                    361:         ret=""
                    362:         
                    363:         try:
                    364:             pn=str(int(pn)+1)
                    365:         except:
                    366:             pn=str(2)
                    367: 
                    368:         self.REQUEST.form['pn']=pn
                    369:         print "hi",self.REQUEST.form.keys()
                    370:         for param in self.REQUEST.form.keys():
                    371:             print param
                    372:             ret+=param+"="+str(self.REQUEST.form[param])+"&"
                    373:         
                    374:         self.REQUEST.RESPONSE.redirect(self.REQUEST['URL1']+'?'+ret)
                    375: 
                    376:         
                    377: def manage_addZogiLibForm(self):
                    378:     """interface for adding zogilib"""
                    379:     pt=PageTemplateFile('Products/zogiLib/zpt/addZogiLibForm').__of__(self)
                    380:     return pt()
                    381: 
1.2     ! dwinter   382: def manage_addZogiLib(self,id,title,digilibBaseUrl, localFileBase,RESPONSE=None):
1.1       dwinter   383:     """add dgilib"""
1.2     ! dwinter   384:     newObj=zogiLib(id,title,digilibBaseUrl, localFileBase)
1.1       dwinter   385:     self.Destination()._setObject(id,newObj)
                    386:     if RESPONSE is not None:
                    387:         RESPONSE.redirect('manage_main')

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