[Zope-dev] Re: [ZPT] Order of attribute execution Feature Request
Chris Withers
chrisw@nipltd.com
Fri, 10 May 2002 16:31:40 +0100
Jim Penny wrote:
>
> > ...can also be written as:
> >
> > <tal:x repeat="x xes">
> > <tr>
> > <td><tal:x replace="x/id"/></td>
> > </tr>
> > </tal:x>
>
> Interesting. I seem to remember this from the Wiki's, is it documented
> anywhere else? This really seems like Chapter 5 material.
No idea, but it definitely should be...
> > <tal:x repeat="fish fishes"
> > define="species fish/species">
>
> Actually, the first time I got bit was on repeat v. condition. I wanted
> the condition to test each row, not to guard the entire iteration
> process.
Yup, that's another common one, easily solved though:
<tal:x repeat="fish fishes">
<tal:x condition="fish/hasHead">
<!-- instructions for removing fish head here -->
</tal:x>
</tal:x>
> OK, off to add following comments to Zope Book ZPT Reference --
> Since the on-error statement is invoked ...
> +If multiple statements appearing within an element have the same
> +precedence level, the order of execution of those statements
> +within the precedence group is undefined.
...and that does suck :-S
> in any order they wish. But, for TAL to be useful as a programming language,
TAL IS NOT A PROGRAMMING LANGUAGE!!! It is a templating language, and they are VERY
different animals...
> OK, consider a form like:
>
> <p>Error Message (may be replaced)</p>
> <form action=.>
> Name: <input type=text name=name><br/>
> Type: <input type=checkbox name="social_skills" value="nerd" checked>nerd
> <input type=checkbox name="social_skills" value="geek">geek
> <input type=checkbox name="social_skills" value="mundane">mundane
> ...
> </form>
>
> On entry I would like a default to be checked. On call with an error
> message I would like the item that was most recently checked to remain
> checked. For example, suppose I needed to prevent multiple definitions
> of the same name. my validation routine could set error_message and
> then my tal would look like:
>
> <p tal:replace="structure contents | nothing">Error Message</p>
> <form action=.>
> Name: <input type=text name=name tal:attributes="name request/name|nothing"><br/>
>
> But how do I elegantly handle checked element? If checked were a true
> attribute (i.e. took form checked="1" or checked="0"), it would be
> clear! But they aren't.
Oh but they are ;-) I was surprised by this, but HTML no longer has attributes without
values, and all browsers support it:
<tal:x define="social_skills request/social_skills | string:nerd"
repeat="skill python:['nerd','geek','mundane']">
<input type=checkbox name="social_skills" value="nerd"
tal:attributes="checked python:social_skills==skill;">nerd
</tal:x>
cheers,
Chris