Re: Frage zu BrowserViews in Plone 3

Carsten Senger <[email protected]>
Newsgroups gmane.comp.web.zope.german
Message-ID <5195B018FE8FCF3209205EAF@dell>
Hallo Nico,

--On Dienstag, Juni 02, 2009 13:09:40 +0200 Nico Grubert 
<[email protected]> wrote:

> vielen Dank für dein ausführliches und sehr erleuchtendes Feedback!
> Jetzt ist mir vieles *viel* klarer. :-)
>
>> Der "default view" ist bei browserviews nicht das template, dessen name
>> auch nicht wichtig ist. Der View ist Deine von BrowserView abgeleitete
>> Klasse, die unter einem bestimmten Namen registriert ist.
>
>> Schreibe eine zweite Viewklasse
>>
>> class SimpleView(kontextnavigationView):
>>    """ Simple view of a kontextnavigation
>>    """
>>
>>    __call__ = ViewPageTemplateFile('simplenavigation_view.pt')
>> Registriere SimpleView dann in browser/configure.zcml unter einem
>> bestimmten Namen.
>
> Das finde ich allerdings im Vergleich zu den alten Plone2 Archetypes
> basierten Contenttypen, wo man einfach der Klasse ein neues Attribut
> (PageTemplate) unterschieben konnte, ganz schön viel Overhead.
> Worin liegt denn der Vorteil dieser Methode?

Das sind jetzt 2 verschiedene Änderungen. Ob Du weiterhin in Deiner
archetypesbasierten Klasse ein Attribut für die späteren Einträge in
portal_types verwenden kannst weiß ich nicht. Grundsätzlich wurden sehr
viele "Konfigurationen" auf GenericSetup umgestellt (types (incl. der dazu
gehörenden viewnamen), workflows, Katalog indizes, Allgemeine Plone
Konfigurationen etc.). Deshalb sind einige Sachen aus der Archetypes Klasse
herausgewandert. Ob Du ein Template in /skins verwendest oder einen
BrowserView hat damit nichts zu tun.

Der oben beschriebene Teil befasst sich nur damit, wie Du den BrowerView
schreibst.

Es gibt übrigens auch eine Möglichkeit, das bei einem BrowserView das
Template mittels 'template="atemplate.pt"' in der zcml-Direktive anzugeben.
Wahrscheinlich reichte es dazu, die definition von __call__ aus der Klasse
heraus zu nehmen. Dann brauchst Du nur eine Klasse, die Du zweimal mit
unterschiedlichen Templates registrierst.

> Ich habe generell manchmal den Eindruck, dass durch die Zope 3
> Technologie in Plone 3 mehr Code und mehr Overhead entsteht. Aber
> vielleicht habe ich die Vorteile einfach noch nicht erkannt. ;-)

Der größte Vorteil ist, dass Du die Logik Deines Views aus dem Template
in eine Pythonklasse verlagerst, während Du sie vorher in mehrere skripte
oder Hilfsmethoden irgendwo in anderem Pythoncode ausgelagert hast, und der
View wirklich nur für die Interfaces gefunden wird, für den Du ihn
registriert hast. Mit Interfaces und Adaptern lassen sich noch viele andere
Sachen machen, aber es ist viel komplexer als vorher und hat mehr overhead.

Ein Teil des Overheads wird in Plone 4 oder 5 wegfallen. Aus einfachen
zcml-Einträgen werden
wahrscheinlich decorators wie bei grok. Aber irgendwo musst Du ja angeben,
für welches Interface Dein View verwendet werden soll und ob bestimmte
Rechte benötigt werden.

>  > (Im Gegensatz zu den Templates in /skins,
>  > bei denen man jedes Template überall aufrufen konnte.)
>
> Das fand ich früher auch immer unschön.
>
>
> Nochmals vielen herzlichen Dank, Carsten.
>

..Carsten



_______________________________________________
zope mailing list
[email protected]
https://mail.dzug.org/mailman/listinfo/zope
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.