Annotation of MPIWGWeb/MPIWGTemplate.py, revision 1.1.2.6

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: 
                     38: 
1.1.2.1   dwinter    39: class MPIWGTemplate(ZopePageTemplate):
                     40:     """Create a layout Template for different purposes"""
                     41: 
                     42:     meta_type="MPIWGTemplate"
                     43: 
                     44:     manage_options=ZopePageTemplate.manage_options+(
                     45:         {'label':'Change Weight','action':'changeWeightForm'},
                     46:         )
                     47: 
                     48:     def changeWeightForm(self):
                     49:         """change weight form"""
                     50:         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','MPIWGTemplateChangeWeight.zpt')).__of__(self)
                     51:         return pt()
                     52: 
                     53:     def changeWeight(self,weight,RESPONSE=None):
                     54:         """change weight"""
                     55:         self.weight=weight
                     56:         if RESPONSE is not None:
                     57:             RESPONSE.redirect('manage')
                     58: 
                     59:         
1.1.2.3   casties    60:     def __init__(self, id, text=None, content_type="text/html",MPIWGType=None):
1.1.2.1   dwinter    61:         self.id = str(id)
                     62:         self.ZBindings_edit(self._default_bindings)
                     63:         if text is None:
                     64:             self._default_content_fn = os.path.join(package_home(globals()),
                     65:                                                'zpt/MPIWG_%s_template_standard.zpt'%MPIWGType)
                     66:             text = open(self._default_content_fn).read()
                     67:         self.pt_edit(text, content_type)
                     68: 
                     69:     
                     70:     def isActiveItem(self):
                     71:         """teste ob ausgewaehlt"""
                     72:         if self.absolute_url()==self.REQUEST['URL']:
                     73:             return "aktiv"
                     74:         else:
                     75:             return ""
1.1.2.3   casties    76:     
                     77:     getBreadcrumbs = getBreadcrumbs
                     78:     
                     79:     getSection = getSection
                     80: 
1.1.2.4   dwinter    81:     def harvest_page(self):
                     82:         """harvest main"""
                     83:         try:
                     84:             return self.pt_render()
                     85:         except:
                     86:             logging.error("cannot harvest: %s"%self.absolute_url())
1.1.2.1   dwinter    87:         
1.1.2.4   dwinter    88:         
                     89:                      
1.1.2.1   dwinter    90: def manage_addMPIWGTemplateForm(self):
                     91:     """Form for adding"""
                     92:     pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt/AddMPIWGTemplate.zpt')).__of__(self)
                     93:     return pt()
                     94: 
                     95: 
                     96: 
                     97: def manage_addMPIWGTemplate(self, MPIWGType,id, text="",title=None,weight=0,REQUEST=None):
                     98:     "Add a Page Template with optional file content."
                     99:     if type(MPIWGType)==StringType:
                    100:         MPIWGTypes=[MPIWGType]
                    101:     else:
                    102:         MPIWGTypes=MPIWGType
                    103:         
                    104:     for singleType in MPIWGTypes:
                    105: 
                    106: 
                    107:         if REQUEST is None:
                    108:             self._setObject(id, MPIWGTemplate(id, text,EchoType=singleType))
                    109:             ob = getattr(self, id)
                    110:             
                    111:             if title:
                    112:                 ob.pt_setTitle(title)
                    113:             return ob
                    114:         else:
                    115:             file = REQUEST.form.get('file')
                    116:             headers = getattr(file, 'headers', None)
                    117:             if headers is None or not file.filename:
                    118:                 zpt = MPIWGTemplate(id,MPIWGType=singleType)
                    119:             else:
                    120:                 zpt = MPIWGTemplate(id, file, headers.get('content_type'))
                    121: 
                    122:             self._setObject(id, zpt)
                    123:             ob = getattr(self, id)
                    124:             if title:
                    125:                 ob.pt_setTitle(title)
                    126: 
                    127:             try:
                    128:                 u = self.DestinationURL()
                    129:             except AttributeError:
                    130:                 u = REQUEST['URL1']
                    131: 
                    132:     ob = getattr(self, id)
                    133:     ob.weight=weight
                    134:     
                    135:     REQUEST.RESPONSE.redirect(u+'/manage_main')
                    136:     return ''
                    137: 
1.1.2.3   casties   138: 
                    139: 
                    140: class MPIWGFolder(Folder):
                    141:     """special Folder object for MPIWG website """
                    142: 
                    143:     meta_type="MPIWGFolder"
                    144: 
                    145:     manage_options=Folder.manage_options+(
                    146:         {'label':'Change Weight','action':'changeWeightForm'},
                    147:         {'label':'Main Config','action':'changeForm'},
                    148:         )
                    149: 
                    150:     changeWeightForm = PageTemplateFile('zpt/MPIWGFolderChangeWeight', globals())
                    151:     changeForm = PageTemplateFile('zpt/MPIWGFolderConfig', globals())
                    152: 
                    153:     def __init__(self, id, title=None, weight=0, canonicalName=None):
                    154:         self.id = str(id)
                    155:         self.weight = weight
                    156:         if title is None:
                    157:             self.title = id
                    158:         else:
                    159:             self.title = title
                    160:             
                    161:         if canonicalName is None:
                    162:             self.canonicalName = self.id
                    163:         else:
                    164:             self.canonicalName = canonicalName
                    165: 
                    166:     def changeWeight(self,weight,RESPONSE=None):
                    167:         """change weight"""
                    168:         self.weight=weight
                    169:         if RESPONSE is not None:
                    170:             RESPONSE.redirect('manage_main')
                    171: 
                    172:     def changeMPIWGFolder(self, title=None, weight=None, canonicalName=None, RESPONSE=None):
                    173:         """change everything"""
                    174:         if title is not None:
                    175:             self.title = title
                    176:         if weight is not None:
                    177:             self.weight = weight
                    178:         if canonicalName is not None:
                    179:             self.canonicalName = canonicalName
                    180:         if RESPONSE is not None:
                    181:             RESPONSE.redirect('manage_main')
                    182:        
                    183:     getBreadcrumbs = getBreadcrumbs
                    184:     
                    185:     getSection = getSection
                    186:     
                    187: 
                    188: def manage_addMPIWGFolderForm(self):
                    189:     """Form for adding"""
                    190:     pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt/AddMPIWGFolder.zpt')).__of__(self)
                    191:     return pt()
                    192: 
                    193: def manage_addMPIWGFolder(self, id, title=None,weight=0,RESPONSE=None):
                    194:     "Add a MPIWG Folder."
                    195:     newObj=MPIWGFolder(id,title,weight)
                    196:     self.Destination()._setObject(id,newObj)
                    197:     if RESPONSE is not None:
                    198:         RESPONSE.redirect('manage_main')
                    199: 
1.1.2.5   casties   200: 
                    201: 
                    202: class MPIWGFeature(Folder):
                    203:     """special object for feature texts on the MPIWG website """
                    204: 
                    205:     meta_type="MPIWGFeature"
                    206: 
                    207:     manage_options=Folder.manage_options+(
                    208:         {'label':'Change Weight','action':'changeWeightForm'},
                    209:         {'label':'Main Config','action':'changeForm'},
                    210:         )
                    211: 
                    212:     changeWeightForm = PageTemplateFile('zpt/MPIWGFeatureChangeWeight', globals())
                    213:     changeForm = PageTemplateFile('zpt/MPIWGFeatureConfig', globals())
                    214: 
                    215:     def __init__(self, id, title=None, weight=0):
                    216:         self.id = str(id)
                    217:         self.weight = weight
                    218:         if title is None:
                    219:             self.title = id
                    220:         else:
                    221:             self.title = title
                    222: 
                    223:         # add language folder and sample templates
                    224:         self.manage_addFolder('en')
                    225:         folder = getattr(self, 'en')
                    226:         introid = 'intro.pt'
                    227:         folder._setObject(introid, ZopePageTemplate(introid))
                    228:         intro = getattr(folder,introid)
                    229:         intro.pt_edit(open(os.path.join(package_home(globals()),'zpt/MPIWGFeature_template_intro.zpt')).read(),'text/html')
                    230:         mainid = 'main.pt'
                    231:         folder._setObject(mainid, ZopePageTemplate(mainid))
                    232:         main = getattr(folder,mainid)
                    233:         main.pt_edit(open(os.path.join(package_home(globals()),'zpt/MPIWGFeature_template_main.zpt')).read(),'text/html')        
                    234: 
                    235: 
                    236:     def index_html(self):
                    237:         """default index page"""
                    238:         return self.getMain()
                    239: 
                    240:     def getIntro(self, **args):
                    241:         """returns the intro as PageTemplate"""
                    242:         pt = getattr(self.en, 'intro.pt')
                    243:         return pt(**args)
                    244: 
                    245:     def getMain(self, **args):
                    246:         """returns the main part as PageTemplate"""
                    247:         pt = getattr(self.en, 'main.pt')
                    248:         return pt(**args)
                    249:     
                    250:     def getFrontpageImg(self):
                    251:         """returns the image object for the frontpage"""
                    252:         img = getattr(self, 'img-frontpage.jpg')
                    253:         return img
                    254: 
                    255:     def getFrontpageImgUrl(self):
                    256:         """returns the URL of the image object for the frontpage"""
                    257:         img = getattr(self, 'img-frontpage.jpg')
                    258:         return img.absolute_url()
                    259:         
1.1.2.6 ! casties   260:     def getFrontpageThumb(self):
1.1.2.5   casties   261:         """returns the image object for the frontpage thumbnail"""
1.1.2.6 ! casties   262:         img = getattr(self, 'img-frontthumb.jpg')
        !           263:         return img
        !           264:         
        !           265:     def getFrontpageThumbUrl(self):
        !           266:         """returns the URL of the image object for the frontpage thumbnail"""
        !           267:         img = getattr(self, 'img-frontthumb.jpg')
        !           268:         return img.absolute_url()
        !           269:         
        !           270:     def getThumbImg(self):
        !           271:         """returns the image object for the sidebar thumbnail"""
1.1.2.5   casties   272:         img = getattr(self, 'img-thumb.jpg')
                    273:         return img
                    274:         
                    275:     def getThumbImgUrl(self):
1.1.2.6 ! casties   276:         """returns the URL of the image object for the sidebar thumbnail"""
1.1.2.5   casties   277:         img = getattr(self, 'img-thumb.jpg')
                    278:         return img.absolute_url()
                    279:         
                    280: 
                    281:     def changeWeight(self,weight,RESPONSE=None):
                    282:         """change weight"""
                    283:         self.weight=weight
                    284:         if RESPONSE is not None:
                    285:             RESPONSE.redirect('manage_main')
                    286: 
                    287: 
                    288:     def changeMPIWGFeature(self, title=None, weight=None, RESPONSE=None):
                    289:         """change everything"""
                    290:         if title is not None:
                    291:             self.title = title
                    292:         if weight is not None:
                    293:             self.weight = weight
                    294:         if RESPONSE is not None:
                    295:             RESPONSE.redirect('manage_main')
                    296:        
                    297:     getBreadcrumbs = getBreadcrumbs
                    298:     
                    299:     getSection = getSection
                    300:     
                    301: 
                    302: def manage_addMPIWGFeatureForm(self):
                    303:     """Form for adding"""
                    304:     pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt/AddMPIWGFeature.zpt')).__of__(self)
                    305:     return pt()
                    306: 
                    307: def manage_addMPIWGFeature(self, id, title=None,weight=0,RESPONSE=None):
                    308:     "Add a MPIWG Feature object"
                    309:     newObj=MPIWGFeature(id,title,weight)
                    310:     self.Destination()._setObject(id,newObj)
                    311:     if RESPONSE is not None:
                    312:         RESPONSE.redirect('manage_main')
                    313: 
1.1.2.1   dwinter   314:     

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