Eine Ebene höher
Frage
Von welchen Klassen muss ich ableiten, damit mein Produkt diese oder jene Funktion in Zope erfüllen kann?
Antwort
Wenn man anfängt Produkte zu entwickeln, so stellt sich einem früher oder später die Frage von welchen Basis - Klassen man ableiten soll um eine bestimmte Funktionalität zu bekommen.
- Wenn man ein Produkt erstellen will, welches andere Objekte enthalten und verwalten soll, so bietet sich die OFS.Folder Klasse an. Diese Klasse implementiert Methoden wie setObject oder getObject um Objekte zu speichern.
- Eine Produkt - Klasse, welche keine Objekte enthält sollte von OFS.SimpleItem abgeleitet werden. Damit hat man die ganze Zope Funktionalität wie Aquisition, Properties, usw. auf einen Schlag.
Hier noch eine kurze Vorstellung der Basis-Klassen:
- App.Management.Tabs: Verantwortlich für die Anzeige der Tabs im ZMI
- OFS.CopySupport.CopySource: Sorgt dafür, dass ein Objekt verschoben und kopiert werden darf / kann.
- AccessControl.Owned.Owned: Implementiert die Möglichkeit diesem Objekt einen Benutzer zuzuweisen und Rechte zu verwalten
- App.Undo.UndoSupport: Klassen die hiervon ableiten, speichern (fast) alle auf ihnen durchgeführten Operationen, so dass man diese später wieder rückgängig machen kann.
- Traversable.Traversable: Objekte, welche hiervon ableiten, können per Aquisition durchlaufen werden.
- OFS.PropertyManager: Verwaltet die Eigenschaften (Metadaten) eine Zope Objekts
- OFS.CopySupport.CopyContainer: Wie CopySource nur das wir hier auf Klassen arbeiten, welche andere Objekte enthalten.
- OFS.ObjectManager: Basis für Klassen, welche Objekte speichern und verwalten wollen.
Für weitere Klassen lohnt sich ein Blick in den Sourcecode oder die Benutzung eines Tools wie HappyDoc