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 * 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')