ZCML File
configure.zcml

<configure
    xmlns="http://namespaces.zope.org/zope"
    xmlns:browser="http://namespaces.zope.org/browser"
    xmlns:i18n="http://namespaces.zope.org/i18n"
    i18n_domain="buddydemo"
    >
<i18n:registerTranslations
    directory="locales"
    />
<class
    class=".buddy.Buddy"
    >
<require
    permission="zope.View"
    interface=".interfaces.IBuddy"
    />
<require
    permission="zope.ManageContent"
    set_schema=".interfaces.IBuddy"
    />
</class>
<browser:page
    class=".browser.BuddyInfo"
    for=".interfaces.IBuddy"
    permission="zope.View"
    name="index.html"
    template="info.pt"
    />
<browser:editform
    name="edit.html"
    schema=".interfaces.IBuddy"
    permission="zope.ManageContent"
    label="Change Buddy Information"
    menu="zmi_views"
    title="Edit"
    />
<browser:addform
    name="AddBuddy.html"
    schema=".interfaces.IBuddy"
    permission="zope.ManageContent"
    label="Add buddy information"
    content_factory=".buddy.Buddy"
    arguments="first last email address postal_code"
    />
<browser:addMenuItem
    title="Buddy"
    permission="zope.ManageContent"
    class=".buddy.Buddy"
    view="AddBuddy.html"
    />
<class
    class=".stubpostal.Info"
    >
<allow
    interface=".interfaces.IPostalInfo"
    />
</class>
<utility
    permission="zope.Public"
    factory=".stubpostal.Lookup"
    provides=".interfaces.IPostalLookup"
    />
<adapter
    factory=".buddy.BuddyCityState"
    provides=".interfaces.IPostalInfo"
    for=".interfaces.IBuddy"
    permission="zope.Public"
    />
<browser:pages
    class=".browser.BuddyRename"
    for=".interfaces.IBuddy"
    permission="zope.ManageContent"
    >
<browser:page
    name="rename.html"
    template="rename.pt"
    menu="zmi_views"
    title="Rename"
    />
<browser:page
    name="renameAction.html"
    attribute="update"
    />
</browser:pages>
<class
    class=".buddy.BuddyFolder"
    >
<require
    permission="zope.View"
    interface="zope.app.container.interfaces.IReadContainer"
    />
<require
    permission="zope.ManageContent"
    interface="zope.app.container.interfaces.IWriteContainer"
    />
</class>
<browser:addMenuItem
    title="Buddy Folder"
    permission="zope.ManageContent"
    class=".buddy.BuddyFolder"
    />
<browser:containerViews
    for=".interfaces.IBuddyFolder"
    contents="zope.ManageContent"
    index="zope.View"
    add="zope.ManageContent"
    />
</configure>