--- MPIWGWeb/Attic/MPIWGTemplate.py 2008/06/24 11:16:26 1.1 +++ MPIWGWeb/Attic/MPIWGTemplate.py 2008/09/08 08:40:05 1.1.2.7 @@ -0,0 +1,358 @@ +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') + + \ No newline at end of file