Jesper Steen Steffensen wrote:
Give
more info. Define qry_user_roles and qry_roles as part of your
question.
Why are you using DTML? Its a *dying art*. I can hardly look at it
anymore :-)
DTML is depreciated in Zope (I think) and new people should go right to
Page Templates and Python Scripts (Im sure).
Can you code this in a Python Script?
David
qry_user_roles and qry_roles are two ZSQL methods that both contain
data fields called 'role'. They both work fine on my pages apart from
the nesting. One qry holds all possible roles in the system - the other
one associates roles to users. I need the dtml-if to insert the word
"selected" in a html drop-down box, so that the users role will be
selected when the drop-down box displays:
This will iterate over the roles and build the drop-down box:
<select>
<dtml-in qry_roles>
<option><dtml-var role></option>
</dtml-in>
</select>
This should display the proper value as well:
<select>
<dtml-in qry_roles prefix="outer">
<option
<dtml-in qry_users_roles>
<dtml-if expr="outer_role==role">
selected
</dtml-if>
</dtml-in>
><dtml-var role></option>
</dtml-in>
</select>
I'm 1 month into Zope now, so this is just what I've read from the Zope
bible/ web etc. so far ...
Is dtml really dead?!? :-o
Shame - I like it.. Will read more about page templates then ;-)
Hi Jesper,
I guess Jonathan does have a point. DTML is NOT DEAD as in NOT
BREATHING. And its true that Zope will continue DTML well into Zope 3.
But its expertise "base" is fading. I last used it 2 years ago. Many
of us just don't use it anymore.
Most still use it because of legacy code.
I don't think Jonathan would recommend it to a newbie? :-)
Python + zpt is a clearer model.
Here is some code to consider if you want to try the Page Template +
python way ...
# --------------------------------
# The python way (untested)
# --------------------------------
outer = context.SQL.qry_user_roles()
inner = context.SQL.qry_roles()
options = ''
for o in outer:
for i in inner:
if o.role == i.role:
options += '\n<option value="' + i.role + '">' + i.role
+ '</option>'
return '<select>' + options + '</select>'
# --------------------------------
# in ZPT
# --------------------------------
<tal:sel tal:replace="structure
python:context.python.pyRolesSelect()">
</tal:sel>
I will say that learning Page Templates will give you fits for a week
or two. But stick with it.
David