=========================== Views und browser resources =========================== Nachdem die Artikeltypen mit ihrem jeweiligen Schema erstellt wurden, gehen wir nun zum User-Interface über, dessen Code sich im ``browser``-Paket befindet. Icons und Stylesheet-Dateien ============================ Für jeden Artikeltyp wird ein eigenes Icon definiert in ``browser/configure.zcml``, in unserem Fall:: Dieses Icon kann referenziert werden mit ``++resource++registration_icon.gif``. Um das Icon innerhalb eines Page Templates aufzurufen, können Sie folgendes angeben:: Dem Icon analog lässt sich auch ein Stylesheet-Dokument hinzufügen mit:: Diese Datei können Sie mit folgendem Code in ein Page Template einfügen:: Views ===== Auch die Views werden in ``browser/configure.zcml`` registriert:: Üblicherweise wird die Standardansicht eines Artikeltyps mit ``@@view`` aufgerufen. Sollen Autoren zwischen verschiedenen Ansichten eines Artikeltyps in Plones Ansicht-Menü wählen können, müssen diese Ansichten einerseits in einer Liste im GenericSetup-Profil angegeben werden, andererseits jedoch auch in ``browser/configure.zcml`` registriert werden:: ... ``action`` verweist auf den Namen der Ansicht, wobei der Menüeintrag nur für das ``IRegistration``-Interface angezeigt wird. Die View-Klasse selbst enthält die Methoden ``name`` und ``details``:: from Products.Five import BrowserView class RegistrationView(BrowserView): """A view of a Registration object""" def name(self): return self.context.Title() def details(self): return self.context.Description() Der Decorator ``@memoize`` stellt sicher, dass der Aufruf in einer Instanz nur einmal ausgeführt wird – und der zurückgegebene Wert gespeichert wird. Wenn Templates eine Methode mehrfach aufrufen, kann so die Performance deutlich gesteigert werden (s.a. `Memoize <../produktivserver/caching/memoize.html>`_). Das Template ``registration.pt`` sieht dann so aus::

This item does not have any body text, click the edit tab to change it.

Registrants

show related items if they exist
Das Template entspricht weitgehend Plones ``document_view.pt``. Beachten Sie, dass verschiedene Viewlet-Manager angegeben wurden, wie z.B.::
Im Kapitel `Viewlets <../erscheinungsbild/viewlets>`_ wird ausführlich auf diese Zope3-Komponenten eingegangen. Content-Menü ------------ Üblicherweise wird das Content-Menü mit den Menüs *Darstellung, *Hinzufügen* und *Workflow* in Views nicht angezeigt. Falls es dennoch angezeigt werden soll, müssen Sie das ``IViewView``-Interface aus ``plone.app.layout`` erhalten:: from zope.interface import implements from Products.Five.browser import BrowserView from plone.app.layout.globals.interfaces import IViewView class MyView(BrowserView): implements(IViewView) Inline Editing -------------- In diesem Template wurde auch das Inline-Editing mit Kinetic Style Sheets ermöglicht, z.B. mit:: Soll ein Feld nicht direkt editiert werden können, genügt ein einfacheres Konstrukt:: Mehr über das JavaScript-Framework erfahren Sie im Kapitel :doc:`../erscheinungsbild/kinetic-style-sheet/index`.