File:  [Repository] / MPIWGWeb / Attic / MPIWGTemplate.py
Revision 1.1.2.6: download - view: text, annotated - select for diffs - revision graph
Thu Sep 4 17:54:33 2008 UTC (15 years, 9 months ago) by casties
Branches: r2
added more thumbs to features

    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: 
   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:         
   60:     def __init__(self, id, text=None, content_type="text/html",MPIWGType=None):
   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 ""
   76:     
   77:     getBreadcrumbs = getBreadcrumbs
   78:     
   79:     getSection = getSection
   80: 
   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())
   87:         
   88:         
   89:                      
   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: 
  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: 
  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:         
  260:     def getFrontpageThumb(self):
  261:         """returns the image object for the frontpage thumbnail"""
  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"""
  272:         img = getattr(self, 'img-thumb.jpg')
  273:         return img
  274:         
  275:     def getThumbImgUrl(self):
  276:         """returns the URL of the image object for the sidebar thumbnail"""
  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: 
  314:     

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