Annotation of ECHO_content/ECHO_Nav.py~, revision 1.1

1.1     ! dwinter     1: # Objekte zur Erzeugung von Navigationselementen
        !             2: 
        !             3: 
        !             4: from OFS.Folder import Folder
        !             5: from OFS.SimpleItem import SimpleItem
        !             6: from Products.PageTemplates.PageTemplateFile import PageTemplateFile
        !             7: from Products.PageTemplates.PageTemplate import PageTemplate
        !             8: import re
        !             9: import string
        !            10: from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate
        !            11: import os.path
        !            12: from Globals import package_home
        !            13: 
        !            14: class ECHO_sqlElement(SimpleItem):
        !            15:     """Erzeuge navigation aus sql-abfrage"""
        !            16:     meta_type="ECHO_sqlElement"
        !            17: 
        !            18:     def __init__(self,id,title,query):
        !            19:         """init"""
        !            20:         self.id=id
        !            21:         self.title=title
        !            22:         self.query=query
        !            23: 
        !            24:     manage_options= SimpleItem.manage_options+(
        !            25:         {'label':'Main Config','action':'changeECHO_sqlElementForm'},
        !            26:         )
        !            27: 
        !            28:     def changeECHO_sqlElementForm(self):
        !            29:         """change"""
        !            30:         pt=PageTemplateFile('Products/ECHO_content/ChangeECHO_sqlElement.zpt').__of__(self)
        !            31:         return pt()
        !            32: 
        !            33:     def changeECHO_sqlElement(self,title,query,RESPONSE=None):
        !            34:         """change"""
        !            35:         self.title=title
        !            36:         self.query=query
        !            37: 
        !            38:         if RESPONSE is not None:
        !            39:             RESPONSE.redirect('manage_main')
        !            40: 
        !            41:     #def getList
        !            42: 
        !            43: def manage_AddECHO_sqlElementForm(self):
        !            44:     """Form for adding"""
        !            45:     pt=PageTemplateFile('Products/ECHO_content/AddECHO_sqlElement.zpt').__of__(self)
        !            46:     return pt()
        !            47: 
        !            48: def manage_AddECHO_sqlElement(self,id,title,query,RESPONSE=None):
        !            49:     """Add an ECHO_sqlelement"""
        !            50:     self._setObject(id,ECHO_sqlElement(id,title,query))
        !            51:     
        !            52:     if RESPONSE is not None:
        !            53:         RESPONSE.redirect('manage_main')
        !            54: 
        !            55: 
        !            56: class ECHO_pageTemplate(ZopePageTemplate):
        !            57:     """pageTemplate Objekt"""
        !            58:     meta_type="ECHO_pageTemplate"
        !            59: 
        !            60:     _default_content_fn = os.path.join(package_home(globals()),
        !            61:                                        'ECHO_pageTemplateDefault.html')
        !            62: 
        !            63: 
        !            64:     ## def __init__(self, id, text=None, content_type=None):
        !            65: ##         self.id = str(id)
        !            66: ##         self.ZBindings_edit(self._default_bindings)
        !            67: ##         if text is None:
        !            68: ##             text = open(self._default_cont).read()
        !            69: ##         self.pt_edit(text, content_type)
        !            70: 
        !            71: def manage_AddECHO_pageTemplateForm(self):
        !            72:     """Form for adding"""
        !            73:     pt=PageTemplateFile('Products/ECHO_content/AddECHO_pageTemplate.zpt').__of__(self)
        !            74:     return pt()
        !            75: 
        !            76: from urllib import quote
        !            77: 
        !            78: 
        !            79: def manage_AddECHO_pageTemplate(self, id, title=None, text=None,
        !            80:                            REQUEST=None, submit=None):
        !            81:     "Add a Page Template with optional file content."
        !            82: 
        !            83:     
        !            84:     id = str(id)
        !            85:     if REQUEST is None:
        !            86:         self._setObject(id, ECHO_pageTemplate(id, text))
        !            87:         ob = getattr(self, id)
        !            88:         if title:
        !            89:             ob.pt_setTitle(title)
        !            90:         return ob
        !            91:     else:
        !            92:         file = REQUEST.form.get('file')
        !            93:         headers = getattr(file, 'headers', None)
        !            94:         if headers is None or not file.filename:
        !            95:             zpt = ECHO_pageTemplate(id)
        !            96:         else:
        !            97:             zpt = ECHO_pageTemplate(id, file, headers.get('content_type'))
        !            98: 
        !            99:         self._setObject(id, zpt)
        !           100: 
        !           101:         try:
        !           102:             u = self.DestinationURL()
        !           103:         except AttributeError:
        !           104:             u = REQUEST['URL1']
        !           105: 
        !           106:         if submit == " Add and Edit ":
        !           107:             u = "%s/%s" % (u, quote(id))
        !           108:         REQUEST.RESPONSE.redirect(u+'/manage_main')
        !           109:     return ''
        !           110: 
        !           111: 
        !           112: class ECHO_navigation(Folder):
        !           113:     """Navigations Element"""
        !           114:     meta_type="ECHO_Navigation"
        !           115: 
        !           116:     displayedMetaTypes=['ECHO_collection','ECHO_pageTemplate','ZSQLExtendFolder']
        !           117:     
        !           118:     def __init__(self,id,title,pathToHierarchy):
        !           119:         """init"""
        !           120:         self.id=id
        !           121:         self.title=title
        !           122:         self.pathToHierarchy=pathToHierarchy
        !           123: 
        !           124:     manage_options = Folder.manage_options+(
        !           125:         {'label':'Main Config','action':'ECHO_navigationConfigForm'},
        !           126:         )
        !           127: 
        !           128:     def ECHO_navigationConfigForm(self):
        !           129:         """configForm"""
        !           130:         pt=PageTemplateFile('Products/ECHO_content/ChangeECHO_navigation.zpt').__of__(self)
        !           131:         return pt()
        !           132:     
        !           133:     def ECHO_navigationConfig(self,title,pathToHierarchy,RESPONSE=None):
        !           134:         """config"""
        !           135:         self.title=title
        !           136:         self.pathToHierarchy=pathToHierarchy
        !           137: 
        !           138:         if RESPONSE is not None:
        !           139:             RESPONSE.redirect('manage_main')
        !           140: 
        !           141: 
        !           142:     def getColls(self,obj,depth):
        !           143:         nav={}
        !           144:         #print "HERE",obj.
        !           145:         for keys in obj.__dict__.keys():
        !           146:             x=getattr(obj,keys)
        !           147:             if hasattr(x,"meta_type"):
        !           148:                 if x.meta_type in self.displayedMetaTypes:
        !           149:                     if depth>1:
        !           150:                         nav[x.getId()]=(self.getColls(x,depth-1),x)
        !           151:                     else:
        !           152:                         nav[x.getId()]=(None,x)
        !           153:         return nav
        !           154:     
        !           155:     def createNavHash(self,depth):
        !           156:         """Auslesen des Hierarchiebuames"""
        !           157:         temp=self.pathToHierarchy[0:]
        !           158:         temp=re.sub("/",".",temp)
        !           159:         temp="self.aq_parent"+temp
        !           160:         
        !           161:         objtemp=eval(temp)
        !           162:         nav={}
        !           163:         obj=objtemp
        !           164:         
        !           165:         #exec(obj)
        !           166: 
        !           167:         #objtemp = compile(temp,'<string>','single')
        !           168:         #obj=eval(objtemp)
        !           169:         print obj 
        !           170:         
        !           171:         #print obj.__dict__.keys()
        !           172:         
        !           173:         for keys in obj.__dict__.keys():
        !           174:             x=getattr(obj,keys)
        !           175:             if hasattr(x,"meta_type"):
        !           176:                 #print x.meta_type
        !           177:                 if x.meta_type in self.displayedMetaTypes:
        !           178:                     if depth>1:
        !           179:                         nav[x.getId()]=(self.getColls(x,int(depth)-1),x)
        !           180:                     else:
        !           181:                         nav[x.getId()]=(None,x)
        !           182:                     
        !           183: 
        !           184:         #print nav
        !           185:         return nav
        !           186: 
        !           187:     def barFromHash(self,hash,start=None):
        !           188:         """Erzeuge Navigations Element"""
        !           189:         print "hash",hash
        !           190:         if not start:
        !           191:             listNav=[(hash[x][1].title,self.absolute_url()+createPath(hash[x][1].absolute_url())) for x in hash.keys()]
        !           192:         else: # list mit pfad zum hash
        !           193:             temp=hash
        !           194:             for x in start:
        !           195:                 temp=temp[x][0]
        !           196:             listNav=[(temp[x][1].title,self.absolute_url()+createPath(temp[x][1].absolute_url())) for x in temp.keys()]
        !           197:         #print listNav
        !           198: 
        !           199:         #html=""
        !           200:         #for k in listNav:
        !           201:         #    print k
        !           202:         #    html=html+"<a href='%s'>%s</a>   "% (self.absolute_url()+createPath(k[1][1].absolute_url()),k[0])
        !           203: 
        !           204:         return listNav
        !           205: 
        !           206: 
        !           207:     def buttonsFromHash(self,hash,start=None,orientation="horizontal"):
        !           208:         
        !           209:         """Generate Buttons"""
        !           210:         if orientation=="horizontal":
        !           211:             html="<table><tr>"
        !           212:             startTag="<td>"
        !           213:             endTag="</td>"
        !           214:             endHtml="</tr></table>"
        !           215: 
        !           216:         else:
        !           217:             html="<table>"
        !           218:             startTag="<tr><td>"
        !           219:             endTag="</td></tr>"
        !           220:             endHtml="</table>"
        !           221:             
        !           222:         if not start:
        !           223:             temp=hash
        !           224:         else:
        !           225:             temp=hash
        !           226:             for x in start:
        !           227:                 temp=temp[x][0]
        !           228:                 #print temp
        !           229:         
        !           230:         for key in temp.keys():
        !           231:             
        !           232:             description=temp[x][1].title
        !           233:             url=self.absolute_url()+createPath(temp[key][1].absolute_url())
        !           234:             
        !           235:             if (self.REQUEST['URL']==url) | (self.REQUEST['URL']==url+"/index_html"):
        !           236:                 html=html+startTag+"[%s]" % description+endTag
        !           237:             else:                
        !           238:                 html=html+startTag+"[<a href='%s'>%s</a>]" % (url,description)+endTag
        !           239:             
        !           240: 
        !           241:         html=html+endHtml
        !           242:         
        !           243:         return html
        !           244: 
        !           245:     def mainNavBar(self):
        !           246:         """print main navigation bar"""
        !           247:         keys=""
        !           248:         try:
        !           249:             keys=self.buttonsFromHash(self.createNavHash(0))
        !           250:         except:
        !           251:             keys=""
        !           252:             
        !           253:         return keys
        !           254: 
        !           255:     def mainNavElements(self):
        !           256:         """print main navigation bar"""
        !           257:         keys=""
        !           258: 
        !           259:         try:
        !           260:             keys=self.barFromHash(self.createNavHash(0))
        !           261:         except:
        !           262:             keys=""
        !           263:             
        !           264:         return keys
        !           265:     
        !           266:     def secondNavElements(self):
        !           267:         """Zweite Ordnung"""
        !           268:         
        !           269:         hash=self.createNavHash(2)
        !           270:         actual_url=self.REQUEST['URL']
        !           271:         
        !           272:         ult_temp=re.sub(self.absolute_url(),"",actual_url)
        !           273:         #print ult_temp
        !           274: 
        !           275:         splitted=ult_temp.split("/")
        !           276:         
        !           277: 
        !           278:         ## if splitted[len(splitted)-1]=="index_html":
        !           279: ##             start=[splitted[len(splitted)-2]]
        !           280: ##         else:
        !           281: ##             start=[splitted[len(splitted)-1]]
        !           282: 
        !           283:         start=[splitted[2]]
        !           284:         #print start
        !           285:         
        !           286:         keys=self.barFromHash(hash,start=start)
        !           287:         
        !           288:         
        !           289:         return keys
        !           290: 
        !           291: 
        !           292:     def secondNavBar(self):
        !           293:         """Zweite Ordnung"""
        !           294: 
        !           295:         hash=self.createNavHash(2)
        !           296:         actual_url=self.REQUEST['URL']
        !           297:         
        !           298:         ult_temp=re.sub(self.absolute_url(),"",actual_url)
        !           299:         #print ult_temp
        !           300: 
        !           301:         splitted=ult_temp.split("/")
        !           302:         
        !           303: 
        !           304:         ## if splitted[len(splitted)-1]=="index_html":
        !           305: ##             start=[splitted[len(splitted)-2]]
        !           306: ##         else:
        !           307: ##             start=[splitted[len(splitted)-1]]
        !           308: 
        !           309:         start=[splitted[2]]
        !           310:         #print start
        !           311:         
        !           312:         keys=self.buttonsFromHash(hash,start=start,orientation="vertical")
        !           313:         
        !           314:         
        !           315:         return keys
        !           316: 
        !           317: def manage_AddECHO_navigationForm(self):
        !           318:     """Form for adding"""
        !           319:     pt=PageTemplateFile('Products/ECHO_content/AddECHO_navigation.zpt').__of__(self)
        !           320:     return pt()
        !           321: 
        !           322: def manage_AddECHO_navigation(self,id,title,pathToHierarchy,RESPONSE=None):
        !           323:     """Add an ECHO_root"""
        !           324:     self._setObject(id,ECHO_navigation(id,title,pathToHierarchy))
        !           325:     
        !           326:     if RESPONSE is not None:
        !           327:         RESPONSE.redirect('manage_main')
        !           328: 
        !           329: 
        !           330: #helpers
        !           331: 
        !           332: def createPath(url):
        !           333:     temp=url.split("/")
        !           334:     del temp[0]
        !           335:     del temp[1]
        !           336:     return string.join(temp,"/")
        !           337:     

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