[Zope] Could Someone Clean This DTML Up?

beno zope@thewebsons.com
Mon, 06 Jan 2003 17:16:04 -0400


At 02:28 PM 1/6/2003 +0000, you wrote:
>| Odes=EDlatel: Martin Gebert <Murphy@members.netsolution-net.de>
>| > <dtml-let lang=3D"REQUEST.get('HTTP_ACCEPT_LANGUAGE')">
>| >  <dtml-in expr=3D"context.objectsInTheFolder">
>| >   <dtml-if expr=3D"&dtml-id=3D=3D&dtml-lang">
>| >    <dtml-let approved=3D"&dtml-lang">
>| >   <dtml-else>
>| >    <dtml-let approved=3D"en-us">
>| >   </dtml-if>
>| >  </dtml-in>
>| > </dtml-let>
>|
>| First of all, terminate all &dtml entities by a semicolon.
>|
>| Second, dtml-let needs a closing tag. This tag can't be outside of the
>| DTML hierarchy the opening tag is in, which means that if you define a
>| variable inside of a dtml-if, you have to close it inside, too, and the
>| value is lost for further use. Shortly: this won't work, try another way.
>|
>| Third, IMHO it doesn't make sense to extract values from variables
>| inside a Python expression per DTML entities, try "id =3D=3D lang" in=
 line
>| 3, and correct line 4 accordingly (your DTML namespace will be correctly
>| looked up inside the expressions, you don't need the &dtml-...; part).
>|
>| Point four: would it be possible that this could be better done in a
>script?
>
>DTML:
>
><dtml-let lang=3D"REQUEST.get('HTTP_ACCEPT_LANGUAGE')">
>   <dtml-in expr=3D"context.objectsInTheFolder">
>    <dtml-if expr=3D"&dtml-id=3D=3D&dtml-lang">
>     <dtml-call "REQUEST.set('approved', ['lang'])">
>    <dtml-else>
>     <dtml-call "REQUEST.set('approved', 'en-us')">
>    </dtml-if>
>   </dtml-in>
></dtml-let>

Well, not quite. Lines 2 & 3:
<dtml-in expr=3D"context.objectValues">
<dtml-if expr=3D"&dtml-objectValue;=3D=3D&dtml-lang;">
Thanks, though!
beno