File:  [Repository] / MPIWGWeb / Attic / MPIWGTemplate.py
Revision 1.1.2.3: download - view: text, annotated - select for diffs - revision graph
Thu Aug 28 18:20:09 2008 UTC (15 years, 10 months ago) by casties
Branches: r2
new MPIWGFolders and breadcrumbs

    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:         
   82: def manage_addMPIWGTemplateForm(self):
   83:     """Form for adding"""
   84:     pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt/AddMPIWGTemplate.zpt')).__of__(self)
   85:     return pt()
   86: 
   87: 
   88: 
   89: def manage_addMPIWGTemplate(self, MPIWGType,id, text="",title=None,weight=0,REQUEST=None):
   90:     "Add a Page Template with optional file content."
   91:     if type(MPIWGType)==StringType:
   92:         MPIWGTypes=[MPIWGType]
   93:     else:
   94:         MPIWGTypes=MPIWGType
   95:         
   96:     for singleType in MPIWGTypes:
   97: 
   98: 
   99:         if REQUEST is None:
  100:             self._setObject(id, MPIWGTemplate(id, text,EchoType=singleType))
  101:             ob = getattr(self, id)
  102:             
  103:             if title:
  104:                 ob.pt_setTitle(title)
  105:             return ob
  106:         else:
  107:             file = REQUEST.form.get('file')
  108:             headers = getattr(file, 'headers', None)
  109:             if headers is None or not file.filename:
  110:                 zpt = MPIWGTemplate(id,MPIWGType=singleType)
  111:             else:
  112:                 zpt = MPIWGTemplate(id, file, headers.get('content_type'))
  113: 
  114:             self._setObject(id, zpt)
  115:             ob = getattr(self, id)
  116:             if title:
  117:                 ob.pt_setTitle(title)
  118: 
  119:             try:
  120:                 u = self.DestinationURL()
  121:             except AttributeError:
  122:                 u = REQUEST['URL1']
  123: 
  124:     ob = getattr(self, id)
  125:     ob.weight=weight
  126:     
  127:     REQUEST.RESPONSE.redirect(u+'/manage_main')
  128:     return ''
  129: 
  130: 
  131: 
  132: class MPIWGFolder(Folder):
  133:     """special Folder object for MPIWG website """
  134: 
  135:     meta_type="MPIWGFolder"
  136: 
  137:     manage_options=Folder.manage_options+(
  138:         {'label':'Change Weight','action':'changeWeightForm'},
  139:         {'label':'Main Config','action':'changeForm'},
  140:         )
  141: 
  142:     changeWeightForm = PageTemplateFile('zpt/MPIWGFolderChangeWeight', globals())
  143:     changeForm = PageTemplateFile('zpt/MPIWGFolderConfig', globals())
  144: 
  145:     def __init__(self, id, title=None, weight=0, canonicalName=None):
  146:         self.id = str(id)
  147:         self.weight = weight
  148:         if title is None:
  149:             self.title = id
  150:         else:
  151:             self.title = title
  152:             
  153:         if canonicalName is None:
  154:             self.canonicalName = self.id
  155:         else:
  156:             self.canonicalName = canonicalName
  157: 
  158:     def changeWeight(self,weight,RESPONSE=None):
  159:         """change weight"""
  160:         self.weight=weight
  161:         if RESPONSE is not None:
  162:             RESPONSE.redirect('manage_main')
  163: 
  164:     def changeMPIWGFolder(self, title=None, weight=None, canonicalName=None, RESPONSE=None):
  165:         """change everything"""
  166:         if title is not None:
  167:             self.title = title
  168:         if weight is not None:
  169:             self.weight = weight
  170:         if canonicalName is not None:
  171:             self.canonicalName = canonicalName
  172:         if RESPONSE is not None:
  173:             RESPONSE.redirect('manage_main')
  174:        
  175:     getBreadcrumbs = getBreadcrumbs
  176:     
  177:     getSection = getSection
  178:     
  179: 
  180: def manage_addMPIWGFolderForm(self):
  181:     """Form for adding"""
  182:     pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt/AddMPIWGFolder.zpt')).__of__(self)
  183:     return pt()
  184: 
  185: def manage_addMPIWGFolder(self, id, title=None,weight=0,RESPONSE=None):
  186:     "Add a MPIWG Folder."
  187:     newObj=MPIWGFolder(id,title,weight)
  188:     self.Destination()._setObject(id,newObj)
  189:     if RESPONSE is not None:
  190:         RESPONSE.redirect('manage_main')
  191: 
  192:     

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