Non-structural folders

 RichDocument has to be containerish so that it can contain files and attachments. Thus, it extends 'OrderedBaseFolder'. However, to the user, a document is not a folder. 
 
Folders in Plone 2.1 get a few particular UI features:

o A 'contents' tab (unlike in Plone 2.0, there is no 'contents' tab on non-folders in Plone 2.1, because with the new 'actions' menu, there is much less need to use this view)

o An 'add item' menu to add items to the folder instead of an 'add to folder' menu to add sibling items in the parent folder.

o If you are in a parent folder's 'contents' tab and click a folder, you will see that folder's 'contents' tab, too.

Plone checks whether an item is a folder using the 'is_folderish' script. The expression 'object/is_folderish' (and its catalog metadata equivalent, which for efficiency reasons is implemented using ExtensibleObjectIndexWrapper in 'CMFPlone/CatalogTool.py') will evaluate to True if 'object' is a "structural folder" – that is, if it is a folder in the UI sense.

By default, all folders are structural, unless they implement the 'INonStructuralFolder' marker interface defined in 'CMFPlone/interfaces/NonStructuralFolder.py'. RichDocument does just this::

  __implements__ = ATDocument.__implements__ + (IRichDocument, INonStructuralFolder,)
  
And as if by magic, the folder acts like a folder no more. 

Finally, because being able to choose a contained item as a default-view does not make sense for RichDocument, we use the method 'canSetDefaultView' from 'ISelectableBrowserDefault' (see the section on "dynamic views":dynamic-views) to explicitly disallow default views::

  def canSetDefaultPage(self):
        return False
