Re: Conditionally render viewlet

Jonathan Bowlas <j.bowlas-hclig2XLE9Zaa/[email protected]> Wed, 8 Jun 2011 11:20:05 +0100
Newsgroups gmane.comp.web.zope.silva.devel
Message-ID <[email protected]>
Ahh... just noticed that I would need to use ConditionalViewletManager
as my base class for my ViewletManager for available to work, however
this isn't available in silva.core.views.

J


On 8 June 2011 11:09, Jonathan Bowlas <j.bowlas-hclig2XLE9Zaa/[email protected]> wrote:
> Hi Antonin
>
> Thanks for replying but unfortunately your suggestion didn't work:
>
> I tried:
>
> =A0 =A0def available(self):
> =A0 =A0 =A0 =A0"""@return: True if the index_left is present
> =A0 =A0 =A0 =A0"""
> =A0 =A0 =A0 =A0return hasattr(self.context, 'index_left')
>
> The viewlet still rendered even though theres no index_left.
>
> Then I checked the documentation here
> http://pypi.python.org/pypi/zope.viewlet, specifically the
> 'ConditionalViewletManager' section where it states that Viewlets have
> an 'available' attribute (not a method), so I tried setting available
> =3D False, =A0but still the viewlet rendered.
>
> Any further suggestions?
>
> Jon
>
>
>
> On 8 June 2011 10:39, Antonin AMAND <[email protected]> wrote:
>> Hi Jon,
>>
>>
>>> class LeftPortlet(silvaviews.Viewlet):
>>> =A0 =A0"""Left Portlet Viewlet
>>> =A0 =A0"""
>>> =A0 =A0grok.viewletmanager(LeftColumn)
>>> =A0 =A0grok.name('leftportlet')
>>> =A0 =A0grok.order()
>>>
>>> =A0 =A0def isEnabled(self):
>>> =A0 =A0 =A0 =A0"""
>>> =A0 =A0 =A0 =A0@return: True if the index_left is present
>>> =A0 =A0 =A0 =A0"""
>>> =A0 =A0 =A0 =A0return hasattr(self.context, 'index_left')
>>>
>>> =A0 =A0def render(self):
>>> =A0 =A0 =A0 =A0""" Render viewlet only if it is enabled.
>>> =A0 =A0 =A0 =A0"""
>>> =A0 =A0 =A0 =A0# Perform condition check
>>> =A0 =A0 =A0 =A0if self.isEnabled():
>>> =A0 =A0 =A0 =A0 =A0 =A0# Call parent method which performs the actual r=
endering
>>> =A0 =A0 =A0 =A0 =A0 =A0return super(LeftPortlet, self).render()
>>> =A0 =A0 =A0 =A0else:
>>> =A0 =A0 =A0 =A0 =A0 =A0# No output when the viewlet is disabled
>>> =A0 =A0 =A0 =A0 =A0 =A0return ""
>>
>>
>> Viewlets have an "available" method to control whether they show or not.
>> Just rename isEnable to available and it should work.
>>
>> By the way, with grok, either you have a render method, either you
>> have a template; never both.
>>
>> Antonin
>> _______________________________________________
>> silva-dev mailing list
>> silva-dev-IAPFreCvJWM6s/[email protected]
>> https://lists.infrae.com/mailman/listinfo/silva-dev
>>
>
>
>
> --
> Jonathan Bowlas
> Web Support Officer
> Media Services
> University College London
> Email: j.bowlas-hclig2XLE9Zaa/[email protected]
>



-- =

Jonathan Bowlas
Web Support Officer
Media Services
University College London
Email: j.bowlas-hclig2XLE9Zaa/[email protected]