Annotation of MPIWGWeb/MPIWGTemplate.py, revision 1.1.2.7

1.1.2.1   dwinter     1: from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate
1.1.2.2   dwinter     2: from Products.PageTemplates.PageTemplateFile import PageTemplateFile
1.1.2.1   dwinter     3: from Globals import package_home
                      4: import string
                      5: import re
                      6: import os
                      7: import logging
                      8: from OFS.Folder import Folder
                      9: from AccessControl import ClassSecurityInfo
                     10: from MPIWGHelper import *
                     11: 
1.1.2.3   casties    12: 
                     13: def getBreadcrumbs(self):
                     14:     """return list of breadcrumbs from here to the root"""
                     15:     crumbs = [(self.title, self.absolute_url(), self)]
                     16:     parent = self.aq_parent
                     17:     if hasattr(parent, 'getBreadcrumbs'):
                     18:         if self.title:
                     19:             return parent.getBreadcrumbs() + crumbs
                     20:         else:
                     21:             # if there's no title, skip this level
                     22:             return parent.getBreadcrumbs()
                     23:         
                     24:     return crumbs
                     25: 
                     26: 
                     27: def getSection(self):
                     28:     """returns the current section name"""
                     29:     p = self
                     30:     sec = None
                     31:     # descend parents to the root (and remember the last id)
                     32:     while p is not None and p.meta_type != 'MPIWGRoot':
                     33:         sec = p.getId()
                     34:         p = p.aq_parent
                     35:     
                     36:     return sec
                     37: 
1.1.2.7 ! casties    38: def getSubSection(self):
        !            39:     """returns the current subsection name"""
        !            40:     p = self
        !            41:     sec = None
        !            42:     subsec = None
        !            43:     # descend parents to the root (and remember the last id)
        !            44:     while p is not None and p.meta_type != 'MPIWGRoot':
        !            45:         subsec = sec
        !            46:         sec = p.getId()
        !            47:         p = p.aq_parent
        !            48:     
        !            49:     return subsec
        !            50: 
1.1.2.3   casties    51: 
1.1.2.1   dwinter    52: class MPIWGTemplate(ZopePageTemplate):
                     53:     """Create a layout Template for different purposes"""
                     54: 
                     55:     meta_type="MPIWGTemplate"
                     56: 
                     57:     manage_options=ZopePageTemplate.manage_options+(
                     58:         {'label':'Change Weight','action':'changeWeightForm'},
                     59:         )
                     60: 
                     61:     def changeWeightForm(self):
                     62:         """change weight form"""
                     63:         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','MPIWGTemplateChangeWeight.zpt')).__of__(self)
                     64:         return pt()
                     65: 
                     66:     def changeWeight(self,weight,RESPONSE=None):
                     67:         """change weight"""
                     68:         self.weight=weight
                     69:         if RESPONSE is not None:
                     70:             RESPONSE.redirect('manage')
                     71: 
                     72:         
1.1.2.3   casties    73:     def __init__(self, id, text=None, content_type="text/html",MPIWGType=None):
1.1.2.1   dwinter    74:         self.id = str(id)
                     75:         self.ZBindings_edit(self._default_bindings)
                     76:         if text is None:
                     77:             self._default_content_fn = os.path.join(package_home(globals()),
                     78:                                                'zpt/MPIWG_%s_template_standard.zpt'%MPIWGType)
                     79:             text = open(self._default_content_fn).read()
                     80:         self.pt_edit(text, content_type)
                     81: 
                     82:     
                     83:     def isActiveItem(self):
                     84:         """teste ob ausgewaehlt"""
                     85:         if self.absolute_url()==self.REQUEST['URL']:
                     86:             return "aktiv"
                     87:         else:
                     88:             return ""
1.1.2.3   casties    89:     
                     90:     getBreadcrumbs = getBreadcrumbs
                     91:     getSection = getSection
1.1.2.7 ! casties    92:     getSubSection = getSubSection
        !            93:     
1.1.2.4   dwinter    94:     def harvest_page(self):
                     95:         """harvest main"""
                     96:         try:
                     97:             return self.pt_render()
                     98:         except:
                     99:             logging.error("cannot harvest: %s"%self.absolute_url())
1.1.2.1   dwinter   100:         
1.1.2.4   dwinter   101:         
                    102:                      
1.1.2.1   dwinter   103: def manage_addMPIWGTemplateForm(self):
                    104:     """Form for adding"""
                    105:     pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt/AddMPIWGTemplate.zpt')).__of__(self)
                    106:     return pt()
                    107: 
                    108: 
                    109: 
                    110: def manage_addMPIWGTemplate(self, MPIWGType,id, text="",title=None,weight=0,REQUEST=None):
                    111:     "Add a Page Template with optional file content."
                    112:     if type(MPIWGType)==StringType:
                    113:         MPIWGTypes=[MPIWGType]
                    114:     else:
                    115:         MPIWGTypes=MPIWGType
                    116:         
                    117:     for singleType in MPIWGTypes:
                    118: 
                    119: 
                    120:         if REQUEST is None:
                    121:             self._setObject(id, MPIWGTemplate(id, text,EchoType=singleType))
                    122:             ob = getattr(self, id)
                    123:             
                    124:             if title:
                    125:                 ob.pt_setTitle(title)
                    126:             return ob
                    127:         else:
                    128:             file = REQUEST.form.get('file')
                    129:             headers = getattr(file, 'headers', None)
                    130:             if headers is None or not file.filename:
                    131:                 zpt = MPIWGTemplate(id,MPIWGType=singleType)
                    132:             else:
                    133:                 zpt = MPIWGTemplate(id, file, headers.get('content_type'))
                    134: 
                    135:             self._setObject(id, zpt)
                    136:             ob = getattr(self, id)
                    137:             if title:
                    138:                 ob.pt_setTitle(title)
                    139: 
                    140:             try:
                    141:                 u = self.DestinationURL()
                    142:             except AttributeError:
                    143:                 u = REQUEST['URL1']
                    144: 
                    145:     ob = getattr(self, id)
                    146:     ob.weight=weight
                    147:     
                    148:     REQUEST.RESPONSE.redirect(u+'/manage_main')
                    149:     return ''
                    150: 
1.1.2.3   casties   151: 
                    152: 
                    153: class MPIWGFolder(Folder):
                    154:     """special Folder object for MPIWG website """
                    155: 
                    156:     meta_type="MPIWGFolder"
                    157: 
                    158:     manage_options=Folder.manage_options+(
                    159:         {'label':'Change Weight','action':'changeWeightForm'},
                    160:         {'label':'Main Config','action':'changeForm'},
                    161:         )
                    162: 
                    163:     changeWeightForm = PageTemplateFile('zpt/MPIWGFolderChangeWeight', globals())
                    164:     changeForm = PageTemplateFile('zpt/MPIWGFolderConfig', globals())
                    165: 
                    166:     def __init__(self, id, title=None, weight=0, canonicalName=None):
                    167:         self.id = str(id)
                    168:         self.weight = weight
                    169:         if title is None:
                    170:             self.title = id
                    171:         else:
                    172:             self.title = title
                    173:             
                    174:         if canonicalName is None:
                    175:             self.canonicalName = self.id
                    176:         else:
                    177:             self.canonicalName = canonicalName
                    178: 
                    179:     def changeWeight(self,weight,RESPONSE=None):
                    180:         """change weight"""
                    181:         self.weight=weight
                    182:         if RESPONSE is not None:
                    183:             RESPONSE.redirect('manage_main')
                    184: 
                    185:     def changeMPIWGFolder(self, title=None, weight=None, canonicalName=None, RESPONSE=None):
                    186:         """change everything"""
                    187:         if title is not None:
                    188:             self.title = title
                    189:         if weight is not None:
                    190:             self.weight = weight
                    191:         if canonicalName is not None:
                    192:             self.canonicalName = canonicalName
                    193:         if RESPONSE is not None:
                    194:             RESPONSE.redirect('manage_main')
                    195:        
                    196:     getBreadcrumbs = getBreadcrumbs
                    197:     
                    198:     getSection = getSection
1.1.2.7 ! casties   199: 
        !           200:     getSubSection = getSubSection
1.1.2.3   casties   201:     
                    202: 
                    203: def manage_addMPIWGFolderForm(self):
                    204:     """Form for adding"""
                    205:     pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt/AddMPIWGFolder.zpt')).__of__(self)
                    206:     return pt()
                    207: 
                    208: def manage_addMPIWGFolder(self, id, title=None,weight=0,RESPONSE=None):
                    209:     "Add a MPIWG Folder."
                    210:     newObj=MPIWGFolder(id,title,weight)
                    211:     self.Destination()._setObject(id,newObj)
                    212:     if RESPONSE is not None:
                    213:         RESPONSE.redirect('manage_main')
                    214: 
1.1.2.5   casties   215: 
                    216: 
                    217: class MPIWGFeature(Folder):
                    218:     """special object for feature texts on the MPIWG website """
                    219: 
                    220:     meta_type="MPIWGFeature"
                    221: 
                    222:     manage_options=Folder.manage_options+(
                    223:         {'label':'Change Weight','action':'changeWeightForm'},
                    224:         {'label':'Main Config','action':'changeForm'},
                    225:         )
                    226: 
                    227:     changeWeightForm = PageTemplateFile('zpt/MPIWGFeatureChangeWeight', globals())
                    228:     changeForm = PageTemplateFile('zpt/MPIWGFeatureConfig', globals())
                    229: 
                    230:     def __init__(self, id, title=None, weight=0):
                    231:         self.id = str(id)
                    232:         self.weight = weight
                    233:         if title is None:
                    234:             self.title = id
                    235:         else:
                    236:             self.title = title
                    237: 
                    238:         # add language folder and sample templates
                    239:         self.manage_addFolder('en')
                    240:         folder = getattr(self, 'en')
                    241:         introid = 'intro.pt'
                    242:         folder._setObject(introid, ZopePageTemplate(introid))
                    243:         intro = getattr(folder,introid)
                    244:         intro.pt_edit(open(os.path.join(package_home(globals()),'zpt/MPIWGFeature_template_intro.zpt')).read(),'text/html')
                    245:         mainid = 'main.pt'
                    246:         folder._setObject(mainid, ZopePageTemplate(mainid))
                    247:         main = getattr(folder,mainid)
                    248:         main.pt_edit(open(os.path.join(package_home(globals()),'zpt/MPIWGFeature_template_main.zpt')).read(),'text/html')        
                    249: 
                    250: 
                    251:     def index_html(self):
                    252:         """default index page"""
                    253:         return self.getMain()
1.1.2.7 ! casties   254:     
        !           255:     def getFullTitle(self):
        !           256:         """returns the full title (from main.pt)"""
        !           257:         # get Language from MPIWGRoot
        !           258:         lang = self.getLang()
        !           259:         dir = getattr(self, lang, self.en)
        !           260:         pt = getattr(dir, 'main.pt')
        !           261:         t = pt.title
        !           262:         if not t:
        !           263:             t = self.title
        !           264:             
        !           265:         return t
1.1.2.5   casties   266: 
                    267:     def getIntro(self, **args):
                    268:         """returns the intro as PageTemplate"""
1.1.2.7 ! casties   269:         # get Language from MPIWGRoot
        !           270:         lang = self.getLang()
        !           271:         dir = getattr(self, lang, self.en)
        !           272:         pt = getattr(dir, 'intro.pt')
1.1.2.5   casties   273:         return pt(**args)
                    274: 
                    275:     def getMain(self, **args):
                    276:         """returns the main part as PageTemplate"""
1.1.2.7 ! casties   277:         # get Language from MPIWGRoot
        !           278:         lang = self.getLang()
        !           279:         dir = getattr(self, lang, self.en)
        !           280:         pt = getattr(dir, 'main.pt')
1.1.2.5   casties   281:         return pt(**args)
                    282:     
                    283:     def getFrontpageImg(self):
                    284:         """returns the image object for the frontpage"""
                    285:         img = getattr(self, 'img-frontpage.jpg')
                    286:         return img
                    287: 
                    288:     def getFrontpageImgUrl(self):
                    289:         """returns the URL of the image object for the frontpage"""
                    290:         img = getattr(self, 'img-frontpage.jpg')
                    291:         return img.absolute_url()
                    292:         
1.1.2.6   casties   293:     def getFrontpageThumb(self):
1.1.2.5   casties   294:         """returns the image object for the frontpage thumbnail"""
1.1.2.6   casties   295:         img = getattr(self, 'img-frontthumb.jpg')
                    296:         return img
                    297:         
                    298:     def getFrontpageThumbUrl(self):
                    299:         """returns the URL of the image object for the frontpage thumbnail"""
                    300:         img = getattr(self, 'img-frontthumb.jpg')
                    301:         return img.absolute_url()
                    302:         
                    303:     def getThumbImg(self):
                    304:         """returns the image object for the sidebar thumbnail"""
1.1.2.5   casties   305:         img = getattr(self, 'img-thumb.jpg')
                    306:         return img
                    307:         
                    308:     def getThumbImgUrl(self):
1.1.2.6   casties   309:         """returns the URL of the image object for the sidebar thumbnail"""
1.1.2.5   casties   310:         img = getattr(self, 'img-thumb.jpg')
                    311:         return img.absolute_url()
                    312: 
                    313:     def changeWeight(self,weight,RESPONSE=None):
                    314:         """change weight"""
                    315:         self.weight=weight
                    316:         if RESPONSE is not None:
                    317:             RESPONSE.redirect('manage_main')
                    318: 
                    319:     def changeMPIWGFeature(self, title=None, weight=None, RESPONSE=None):
                    320:         """change everything"""
                    321:         if title is not None:
                    322:             self.title = title
                    323:         if weight is not None:
                    324:             self.weight = weight
                    325:         if RESPONSE is not None:
                    326:             RESPONSE.redirect('manage_main')
                    327:        
1.1.2.7 ! casties   328:     def getBreadcrumbs(self):
        !           329:         """return list of breadcrumbs from here to the root"""
        !           330:         crumbs = [(self.getFullTitle(), self.absolute_url(), self)]
        !           331:         parent = self.aq_parent
        !           332:         if hasattr(parent, 'getBreadcrumbs'):
        !           333:             if self.title:
        !           334:                 return parent.getBreadcrumbs() + crumbs
        !           335:             else:
        !           336:                 # if there's no title, skip this level
        !           337:                 return parent.getBreadcrumbs()
        !           338:             
        !           339:         return crumbs
1.1.2.5   casties   340:     
                    341:     getSection = getSection
1.1.2.7 ! casties   342: 
        !           343:     getSubSection = getSubSection
1.1.2.5   casties   344:     
                    345: 
                    346: def manage_addMPIWGFeatureForm(self):
                    347:     """Form for adding"""
                    348:     pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt/AddMPIWGFeature.zpt')).__of__(self)
                    349:     return pt()
                    350: 
                    351: def manage_addMPIWGFeature(self, id, title=None,weight=0,RESPONSE=None):
                    352:     "Add a MPIWG Feature object"
                    353:     newObj=MPIWGFeature(id,title,weight)
                    354:     self.Destination()._setObject(id,newObj)
                    355:     if RESPONSE is not None:
                    356:         RESPONSE.redirect('manage_main')
                    357: 
1.1.2.1   dwinter   358:     

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