File:  [Repository] / MPIWGWeb / Attic / MPIWGTemplate.py
Revision 1.1.2.7: download - view: text, annotated - select for diffs - revision graph
Mon Sep 8 08:40:05 2008 UTC (15 years, 9 months ago) by casties
Branches: r2
added language switch for Feature

    1: from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate
    2: from Products.PageTemplates.PageTemplateFile import PageTemplateFile
    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: 
   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: 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: 
   51: 
   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:         
   73:     def __init__(self, id, text=None, content_type="text/html",MPIWGType=None):
   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 ""
   89:     
   90:     getBreadcrumbs = getBreadcrumbs
   91:     getSection = getSection
   92:     getSubSection = getSubSection
   93:     
   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())
  100:         
  101:         
  102:                      
  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: 
  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
  199: 
  200:     getSubSection = getSubSection
  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: 
  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()
  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
  266: 
  267:     def getIntro(self, **args):
  268:         """returns the intro as PageTemplate"""
  269:         # get Language from MPIWGRoot
  270:         lang = self.getLang()
  271:         dir = getattr(self, lang, self.en)
  272:         pt = getattr(dir, 'intro.pt')
  273:         return pt(**args)
  274: 
  275:     def getMain(self, **args):
  276:         """returns the main part as PageTemplate"""
  277:         # get Language from MPIWGRoot
  278:         lang = self.getLang()
  279:         dir = getattr(self, lang, self.en)
  280:         pt = getattr(dir, 'main.pt')
  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:         
  293:     def getFrontpageThumb(self):
  294:         """returns the image object for the frontpage thumbnail"""
  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"""
  305:         img = getattr(self, 'img-thumb.jpg')
  306:         return img
  307:         
  308:     def getThumbImgUrl(self):
  309:         """returns the URL of the image object for the sidebar thumbnail"""
  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:        
  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
  340:     
  341:     getSection = getSection
  342: 
  343:     getSubSection = getSubSection
  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: 
  358:     

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