File:  [Repository] / MPIWGWeb / Attic / MPIWGTemplate.py
Revision 1.1.2.5: download - view: text, annotated - select for diffs - revision graph
Wed Sep 3 21:16:40 2008 UTC (15 years, 9 months ago) by casties
Branches: r2
added features for Feature (sic)

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


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

    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
    

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 getIntro(self, **args):
        """returns the intro as PageTemplate"""
        pt = getattr(self.en, 'intro.pt')
        return pt(**args)

    def getMain(self, **args):
        """returns the main part as PageTemplate"""
        pt = getattr(self.en, '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 getThumbImg(self):
        """returns the image object for the frontpage thumbnail"""
        img = getattr(self, 'img-thumb.jpg')
        return img
        
    def getThumbImgUrl(self):
        """returns the URL of the image object for the frontpage 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')
       
    getBreadcrumbs = getBreadcrumbs
    
    getSection = getSection
    

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>