[Plone-IT] domanda su browser view

Luca Fabbri keul a redturtle.it
Mar 4 Giu 2013 10:14:04 UTC


2013/6/4 Paolo Betti <paolo a artifex.it>:
> Ciao,
>
>
> Il 04/06/2013 10:52, Yuri ha scritto:
>>
>> se ho questa browser view (collective.lineage ma non è importante):
>>
>>
>> class LineageUtils(BrowserView):
>>
>>     def getSwitcherDefault(self):
>>         registry = getUtility(IRegistry)
>>         settings = registry.forInterface(ILineageSettings)
>>         if settings.menu_text:
>>             return settings.menu_text
>>         return "Jump to Child Site"
>>
>>     def isChildSite(self):
>>         portal_state =
>> self.context.restrictedTraverse('plone_portal_state')
>>         root_path = portal_state.navigation_root_path()
>>         nav_root = self.context.restrictedTraverse(root_path)
>>         return IChildSite.providedBy(nav_root)
>>
>> definita poi tramite zcml con permesso zope.Public e con nome
>> lineageutils, io posso andare all'url:
>>
>> miosito.com/@@lineageutils e mi ritorna la classe.
>>
>> Però andando su miosito.com/@@lineageutils/isChildSite o
>> miosito.com/@@lineageutils/getSwitcherDefault non ottengo nulla (torna la
>> pagina 404)
>>
>> ma posso fare in un template (di un'altra browserview, o view o credo in
>> un qualsiasi template, poiché qui è usato view per il contesto, potevano
>> usare anche view/context no?):
>>
>> <tal:block define="
>>                    message view/@@lineageutils;">
>> <option value="" tal:content="message/getSwitcherDefault">Jump to child
>> site</option>
>> </span>
>>
>>
>> Qualìcuno sa spiegarmi questo comportamento? Grazie :)
>
>
> Spiegare esattamente no ma a volte a me è capitato (con Plone 3 non ho
> ancora provato con il 4) di dover definire tramite zcml una cosa del genere:
>
>     <browser:page
>     name="nome_vista"
>     for="*"
>     class=".views.ArtUtilsView"
>     permission="zope2.View"
>     layer=".interfaces.IThemeSpecific"
>     allowed_attributes="metodo1 metodo2"
>      />
>
> e poi poter richiamare @@nome_vista/metodo1 o @@nome_vista/metodo2 tramite
> indirizzo diretto.
> {è "allowed_attributes" che fa la differenza  ;-)}
>

allowed_interface è il modo più elegante (e leggibile) per avete le
stesse feature di allowed_attributes: specifichi gli attributi
accessibili dall'esterno come attributi di un'interfaccia e non come
lista di attributi.


-- 
Saluti/Regards

Luca Fabbri - RedTurtle Technology
E-mail: luca.fabbri a redturtle.it
Web Site: http://www.redturtle.it/
Phone: +39 0532 1915958
Fax: +39 0532 287070


Maggiori informazioni sulla lista Plone-IT