view MPIWGFolder.py @ 284:1a103b073c72 default tip

make favicon url host and schema relative.
author casties
date Thu, 25 Jun 2015 17:44:57 +0200
parents ee79f6ba8d01
children
line wrap: on
line source

from Products.PageTemplates.PageTemplateFile import PageTemplateFile
import logging
from OFS.Folder import Folder

import MPIWGHelper


class MPIWGFolder(Folder):
    """special Folder object for MPIWG website """

    meta_type = "MPIWGFolder"

    manage_options = Folder.manage_options + (
        {'label':'Change Weight', 'action':'changeWeightForm'},
        {'label':'Rearrange Weights', 'action':'changeWeightsForm'},
        {'label':'Configure', 'action':'changeForm'},
        )

    changeWeightForm = PageTemplateFile('zpt/folder/manage_change_weight', globals())
    changeForm = PageTemplateFile('zpt/folder/manage_config', globals())
    changeWeightsForm = PageTemplateFile('zpt/folder/manage_change_weights', 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 getNavItems(self):
        """returns sorted list of sub-items"""
        # get all nav-type items
        items = self.objectItems(self.nav_meta_types)
        # unpack into simple list and omit empty titles
        items = [s[1] for s in items if s[1].title != ""]
        # sort by weight
        items.sort(key=lambda x:int(x.weight))
        return items

    def changeWeight(self, weight, RESPONSE=None):
        """change weight"""
        self.weight = weight
        if RESPONSE is not None:
            RESPONSE.redirect('manage_main')

    def changeWeightsInFolder(self, REQUEST=None):
        """change all weights of a collection"""
        ret = ""
        form = REQUEST.form
        resources = self.getNavItems()
        for resource in resources:
            try:
                id = resource.getId()
                ret += id + "   " + form[id] + "\n"
                resource.changeWeight(form[id])
            except Exception, e:
                ret += "ERROR: %s\n"%e
        return ret

    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 = MPIWGHelper.getBreadcrumbs
    
    getSection = MPIWGHelper.getSection

    getSubSection = MPIWGHelper.getSubSection
    

def manage_addMPIWGFolderForm(self):
    """Form for adding"""
    pt = PageTemplateFile('zpt/folder/manage_add_MPIWGFolder', globals()).__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')