quick search:
 
##############################################
# LICENSE: 
# This code is bound to be ugly, have mistakes,
# and generally just be plain _wrong_.
#
# What do you care though?  It works, and you
# got it for free. ;-)  Feel free to make any
# changes and re-release.
##############################################
#

import Globals
from Globals import DTMLFile
from OFS.Folder import Folder

import Recipe

class Cookbook(Folder):

    meta_type = 'Code Cookbook'

    addedprops = (
        {'id':'categories', 'type':'lines', 'mode':'w'},
        )
    _properties = (Folder._properties + addedprops)

    cookbookOptions = ({'label':'Edit Cookbook', 'action':'manage_editForm'},)
    manage_options=(
        Folder.manage_options[:1]+
        cookbookOptions+
        Folder.manage_options[3:]
        )


    def filtered_meta_types(self, user=None):
        meta_types = []
        meta_types.append(Globals.Dictionary(name=Recipe.Recipe.meta_type,
                action='manage_addProduct/CookBook/addRecipeForm'),)
        return meta_types


    manage_editForm = DTMLFile('dtml/editCookbookForm', globals())
    index_html=DTMLFile('dtml/indexhtmlCookbook', globals())
    byCategory=DTMLFile('dtml/byCategoryCookbook', globals())
    byRating=DTMLFile('dtml/byRatingCookbook', globals())
    showCategories=DTMLFile('dtml/showCategoriesCookbook', globals())

    def manage_editCookbook(self, title='', categories=None, REQUEST=None):
        self.title = str(title)
        self.categories=categories

        if REQUEST is not None:
           try: u='%s' % (self.DestinationURL(),)
           except: u='%s' % (REQUEST['URL1'],)
           if redir is None:
                u='%s/manage_main' %(u,)
           REQUEST.RESPONSE.redirect(u)
        return ''


Globals.default__class_init__(Cookbook)
manage_addCookbookForm = DTMLFile('dtml/addCookbookForm', globals())

def manage_addCookbook(self, id, title='', categories=None, REQUEST=None):
    """Add's a new Code Cookbook.
    """
    ob=Cookbook()
    ob.id=str(id)
    ob.categories=categories
    ob.title=title
    self._setObject(id, ob)

    if REQUEST is not None:
        return self.manage_main(self, REQUEST, update_menu=1)