File:  [Repository] / MPIWGWeb / Attic / MPIWGTemplate.py
Revision 1.1.2.4: download - view: text, annotated - select for diffs - revision graph
Wed Sep 3 11:13:43 2008 UTC (15 years, 9 months ago) by dwinter
Branches: r2
CLOSED - # 22: ErgŠnze persšnliche homepage um das HinzufŸgen von weiteren Dokumenten / Links
https://itgroup.mpiwg-berlin.mpg.de:8080/tracs/webpage/ticket/22

    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:     

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