[Plone-IT] domanda su browser view

Yuri yurj a alfa.it
Mar 4 Giu 2013 10:16:06 UTC


Il 04/06/2013 12:03, Paolo Betti ha scritto:
> 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  ;-)}

Molto interessante, grazie, assieme a quello che ha scritto Davide ora 
ne so di più :)


Maggiori informazioni sulla lista Plone-IT