from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate
from Products.PageTemplates.PageTemplateFile import PageTemplateFile
from Globals import package_home
import string
import re
import os
import logging
from OFS.Folder import Folder
from AccessControl import ClassSecurityInfo
from MPIWGHelper import *
def getBreadcrumbs(self):
"""return list of breadcrumbs from here to the root"""
crumbs = [(self.title, self.absolute_url(), self)]
parent = self.aq_parent
if hasattr(parent, 'getBreadcrumbs'):
if self.title:
return parent.getBreadcrumbs() + crumbs
else:
# if there's no title, skip this level
return parent.getBreadcrumbs()
return crumbs
def getSection(self):
"""returns the current section name"""
p = self
sec = None
# descend parents to the root (and remember the last id)
while p is not None and p.meta_type != 'MPIWGRoot':
sec = p.getId()
p = p.aq_parent
return sec
def getSubSection(self):
"""returns the current subsection name"""
p = self
sec = None
subsec = None
# descend parents to the root (and remember the last id)
while p is not None and p.meta_type != 'MPIWGRoot':
subsec = sec
sec = p.getId()
p = p.aq_parent
return subsec
class MPIWGTemplate(ZopePageTemplate):
"""Create a layout Template for different purposes"""
meta_type="MPIWGTemplate"
manage_options=ZopePageTemplate.manage_options+(
{'label':'Change Weight','action':'changeWeightForm'},
)
def changeWeightForm(self):
"""change weight form"""
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','MPIWGTemplateChangeWeight.zpt')).__of__(self)
return pt()
def changeWeight(self,weight,RESPONSE=None):
"""change weight"""
self.weight=weight
if RESPONSE is not None:
RESPONSE.redirect('manage')
def __init__(self, id, text=None, content_type="text/html",MPIWGType=None):
self.id = str(id)
self.ZBindings_edit(self._default_bindings)
if text is None:
self._default_content_fn = os.path.join(package_home(globals()),
'zpt/MPIWG_%s_template_standard.zpt'%MPIWGType)
text = open(self._default_content_fn).read()
self.pt_edit(text, content_type)
def isActiveItem(self):
"""teste ob ausgewaehlt"""
if self.absolute_url()==self.REQUEST['URL']:
return "aktiv"
else:
return ""
getBreadcrumbs = getBreadcrumbs
getSection = getSection
getSubSection = getSubSection
def harvest_page(self):
"""harvest main"""
try:
return self.pt_render()
except:
logging.error("cannot harvest: %s"%self.absolute_url())
def manage_addMPIWGTemplateForm(self):
"""Form for adding"""
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt/AddMPIWGTemplate.zpt')).__of__(self)
return pt()
def manage_addMPIWGTemplate(self, MPIWGType,id, text="",title=None,weight=0,REQUEST=None):
"Add a Page Template with optional file content."
if type(MPIWGType)==StringType:
MPIWGTypes=[MPIWGType]
else:
MPIWGTypes=MPIWGType
for singleType in MPIWGTypes:
if REQUEST is None:
self._setObject(id, MPIWGTemplate(id, text,EchoType=singleType))
ob = getattr(self, id)
if title:
ob.pt_setTitle(title)
return ob
else:
file = REQUEST.form.get('file')
headers = getattr(file, 'headers', None)
if headers is None or not file.filename:
zpt = MPIWGTemplate(id,MPIWGType=singleType)
else:
zpt = MPIWGTemplate(id, file, headers.get('content_type'))
self._setObject(id, zpt)
ob = getattr(self, id)
if title:
ob.pt_setTitle(title)
try:
u = self.DestinationURL()
except AttributeError:
u = REQUEST['URL1']
ob = getattr(self, id)
ob.weight=weight
REQUEST.RESPONSE.redirect(u+'/manage_main')
return ''
class MPIWGFolder(Folder):
"""special Folder object for MPIWG website """
meta_type="MPIWGFolder"
manage_options=Folder.manage_options+(
{'label':'Change Weight','action':'changeWeightForm'},
{'label':'Main Config','action':'changeForm'},
)
changeWeightForm = PageTemplateFile('zpt/MPIWGFolderChangeWeight', globals())
changeForm = PageTemplateFile('zpt/MPIWGFolderConfig', globals())
def __init__(self, id, title=None, weight=0, canonicalName=None):
self.id = str(id)
self.weight = weight
if title is None:
self.title = id
else:
self.title = title
if canonicalName is None:
self.canonicalName = self.id
else:
self.canonicalName = canonicalName
def changeWeight(self,weight,RESPONSE=None):
"""change weight"""
self.weight=weight
if RESPONSE is not None:
RESPONSE.redirect('manage_main')
def changeMPIWGFolder(self, title=None, weight=None, canonicalName=None, RESPONSE=None):
"""change everything"""
if title is not None:
self.title = title
if weight is not None:
self.weight = weight
if canonicalName is not None:
self.canonicalName = canonicalName
if RESPONSE is not None:
RESPONSE.redirect('manage_main')
getBreadcrumbs = getBreadcrumbs
getSection = getSection
getSubSection = getSubSection
def manage_addMPIWGFolderForm(self):
"""Form for adding"""
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt/AddMPIWGFolder.zpt')).__of__(self)
return pt()
def manage_addMPIWGFolder(self, id, title=None,weight=0,RESPONSE=None):
"Add a MPIWG Folder."
newObj=MPIWGFolder(id,title,weight)
self.Destination()._setObject(id,newObj)
if RESPONSE is not None:
RESPONSE.redirect('manage_main')
class MPIWGFeature(Folder):
"""special object for feature texts on the MPIWG website """
meta_type="MPIWGFeature"
manage_options=Folder.manage_options+(
{'label':'Change Weight','action':'changeWeightForm'},
{'label':'Main Config','action':'changeForm'},
)
changeWeightForm = PageTemplateFile('zpt/MPIWGFeatureChangeWeight', globals())
changeForm = PageTemplateFile('zpt/MPIWGFeatureConfig', globals())
def __init__(self, id, title=None, weight=0):
self.id = str(id)
self.weight = weight
if title is None:
self.title = id
else:
self.title = title
# add language folder and sample templates
self.manage_addFolder('en')
folder = getattr(self, 'en')
introid = 'intro.pt'
folder._setObject(introid, ZopePageTemplate(introid))
intro = getattr(folder,introid)
intro.pt_edit(open(os.path.join(package_home(globals()),'zpt/MPIWGFeature_template_intro.zpt')).read(),'text/html')
mainid = 'main.pt'
folder._setObject(mainid, ZopePageTemplate(mainid))
main = getattr(folder,mainid)
main.pt_edit(open(os.path.join(package_home(globals()),'zpt/MPIWGFeature_template_main.zpt')).read(),'text/html')
def index_html(self):
"""default index page"""
return self.getMain()
def getFullTitle(self):
"""returns the full title (from main.pt)"""
# get Language from MPIWGRoot
lang = self.getLang()
dir = getattr(self, lang, self.en)
pt = getattr(dir, 'main.pt')
t = pt.title
if not t:
t = self.title
return t
def getIntro(self, **args):
"""returns the intro as PageTemplate"""
# get Language from MPIWGRoot
lang = self.getLang()
dir = getattr(self, lang, self.en)
pt = getattr(dir, 'intro.pt')
return pt(**args)
def getMain(self, **args):
"""returns the main part as PageTemplate"""
# get Language from MPIWGRoot
lang = self.getLang()
dir = getattr(self, lang, self.en)
pt = getattr(dir, 'main.pt')
return pt(**args)
def getFrontpageImg(self):
"""returns the image object for the frontpage"""
img = getattr(self, 'img-frontpage.jpg')
return img
def getFrontpageImgUrl(self):
"""returns the URL of the image object for the frontpage"""
img = getattr(self, 'img-frontpage.jpg')
return img.absolute_url()
def getFrontpageThumb(self):
"""returns the image object for the frontpage thumbnail"""
img = getattr(self, 'img-frontthumb.jpg')
return img
def getFrontpageThumbUrl(self):
"""returns the URL of the image object for the frontpage thumbnail"""
img = getattr(self, 'img-frontthumb.jpg')
return img.absolute_url()
def getThumbImg(self):
"""returns the image object for the sidebar thumbnail"""
img = getattr(self, 'img-thumb.jpg')
return img
def getThumbImgUrl(self):
"""returns the URL of the image object for the sidebar thumbnail"""
img = getattr(self, 'img-thumb.jpg')
return img.absolute_url()
def changeWeight(self,weight,RESPONSE=None):
"""change weight"""
self.weight=weight
if RESPONSE is not None:
RESPONSE.redirect('manage_main')
def changeMPIWGFeature(self, title=None, weight=None, RESPONSE=None):
"""change everything"""
if title is not None:
self.title = title
if weight is not None:
self.weight = weight
if RESPONSE is not None:
RESPONSE.redirect('manage_main')
def getBreadcrumbs(self):
"""return list of breadcrumbs from here to the root"""
crumbs = [(self.getFullTitle(), self.absolute_url(), self)]
parent = self.aq_parent
if hasattr(parent, 'getBreadcrumbs'):
if self.title:
return parent.getBreadcrumbs() + crumbs
else:
# if there's no title, skip this level
return parent.getBreadcrumbs()
return crumbs
getSection = getSection
getSubSection = getSubSection
def manage_addMPIWGFeatureForm(self):
"""Form for adding"""
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt/AddMPIWGFeature.zpt')).__of__(self)
return pt()
def manage_addMPIWGFeature(self, id, title=None,weight=0,RESPONSE=None):
"Add a MPIWG Feature object"
newObj=MPIWGFeature(id,title,weight)
self.Destination()._setObject(id,newObj)
if RESPONSE is not None:
RESPONSE.redirect('manage_main')
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>