ZCML File
configure.zcml

<configure
    xmlns="http://namespaces.zope.org/zope"
    xmlns:apidoc="http://namespaces.zope.org/apidoc"
    xmlns:browser="http://namespaces.zope.org/browser"
    xmlns:zcml="http://namespaces.zope.org/zcml"
    i18n_domain="zope"
    >
<adapter
    factory=".homefolder.HomeFolder"
    provides=".interfaces.IHomeFolder"
    for="zope.security.interfaces.IPrincipal"
    />
<adapter
    factory=".homefolder.getHomeFolder"
    provides="zope.traversing.interfaces.IPathAdapter"
    for="zope.security.interfaces.IPrincipal"
    name="homefolder"
    />
<class
    class=".homefolder.HomeFolderManager"
    >
<require
    permission="zope.ManageServices"
    interface=".homefolder.IHomeFolderManager"
    set_schema=".homefolder.IHomeFolderManager"
    />
<require
    permission="zope.ManageServices"
    attributes="assignments"
    />
</class>
<browser:addform
    name="AddHomeFolderManagerForm.html"
    schema=".interfaces.IHomeFolderManager"
    permission="zope.ManageServices"
    label="Add Home Folder Manager"
    content_factory=".homefolder.HomeFolderManager"
    >
<browser:widget
    field="homeFolderBase"
    class=".browser.PathWidget"
    />
<browser:widget
    field="containerObject"
    class=".browser.DottedNameWidget"
    />
</browser:addform>
<browser:addMenuItem
    title="Home Folder Manager"
    permission="zope.ManageServices"
    class=".homefolder.HomeFolderManager"
    view="AddHomeFolderManagerForm.html"
    />
<browser:editform
    name="edit.html"
    schema=".interfaces.IHomeFolderManager"
    permission="zope.ManageServices"
    label="Edit Home Folder Manager"
    menu="zmi_views"
    title="Edit"
    >
<browser:widget
    field="homeFolderBase"
    class=".browser.PathWidget"
    />
<browser:widget
    field="containerObject"
    class=".browser.DottedNameWidget"
    />
</browser:editform>
<browser:page
    class=".browser.AssignHomeFolder"
    for=".interfaces.IHomeFolderManager"
    permission="zope.ManageServices"
    name="assignments.html"
    template="homefolder.pt"
    menu="zmi_views"
    title="Assignments"
    />
<configure
    zcml:condition="have apidoc"
    >
<apidoc:bookchapter
    id="homefolder"
    title="Principal Home Folder"
    doc_path="README.txt"
    parent="security"
    />
</configure>
</configure>