[Seaside] Re: How to do a "login required" type of filter

Julian Fitzell jfitzell at gmail.com
Thu May 28 05:51:52 UTC 2009

What does your LoginForm do? Does it have persistent state? If not,
why not have the LoginDecoration do the rendering itself? Or if you
just want it factored out but don't need state or call/answer just
implement a class that has a #renderOn: method and pass that to "html
render:" (any object can render itself and only Components need to be
listed in #children). This stuff is all a bit clearer, I think, in 2.9
(not that I'm suggesting you should start using it - just saying
you're right to find it problematic).

Otherwise... hm Seaside 2.8 doesn't have #children on WADecoration
does it? That's fixed in 2.9 too. :) I guess if you really needed
component features on LoginForm you would implement #nextPresentersDo:
on your Decoration to make sure it evaluates the block for the child

And to answer your earlier question, calling or answering while
rendering just doesn't make sense. I can't remember what the failure
mode is in 2.8 (in 2.9 it will definitely fail completely) but the
continuations don't work right if you try to do that. Rendering
shouldn't really change state - it should just render the current
state so that it can be done over and over again.

(this doesn't feel like my most articulate post ever but I'm on my way
to bed - I'm sure the European contingent can clarify anything that
doesn't make sense :) )


On Wed, May 27, 2009 at 7:21 PM, Pat Maddox <pat.maddox at gmail.com> wrote:
> I changed the LoginForm component to set the account in the session
> instead of using answer.  Now my LoginDecoration renders the LoginForm
> when there's no user in the session.
> Now I'm running into a problem with children.  The LoginForm isn't in
> my main component's children list...which, there's really no way it
> could be - the main component doesn't know anything about the
> LoginForm, it only gets created as a result of my Decoration.  I
> verified that this is the problem by moving all the code from my
> LoginForm into my LoginDecoration, and it works fine.
> So again I think I'm doing something stupid here.  I'm somewhat close
> in that I can get the decoration to render my LoginForm component, but
> now that component has to go into the decorated component's children
> (apparently).  That feels ugly so I would think there's a better way
> to do this.
> Pat
> _______________________________________________
> seaside mailing list
> seaside at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside

More information about the seaside mailing list