[Zope] DTML?

Chris Withers chrisw@nipltd.com
Mon, 10 Jul 2000 22:29:17 +0100


Brian Lloyd wrote:
<snip id is sometimes a method (not always though ;-)>
> This is one of the things on my List Of Evil Things that
> should be changed one day in Zope3K :)

<RANT type="angry,frustrated">

How about the nasty hacky mess that is DTML?

Some priceless artifacts that need to go:

<dtml-var "someMethod(_, _.None, myparam)">
<dtml-call "REQUEST.set('keyname','value')">
<dtml-let x="'hello out there'">
<dtml-var "_[REQUEST['myDoc']]">What is this supposed to do?!
<dtml-var "PARENTS[-1].folder.getitem(_.getitem('id',1))">

Not to mention the horribleness that is <dtml-in> and <dtml-with>.

There's dtml-tree too, but hopefully I'm going to land very hard on that
tomorrow and beat it into something like a decent shape ;-)

While I'm at it, how about some docs for the manage_* methods in the
interfaces Wiki?

</RANT>

Okay, seriously, DTML is really hurting Zope's chances with a lot of
people/companies. DTML should be easier than, say, creating a Form in
Lotus Notes or writing a component in Mason. That requries, IMHO:
1. Clear definition of when it should be used.
2. A clean, concise syntax (like Python, DTML is more like Perl right
now ;-)
3. Good documentation (much easier to do if 1 and 2 are met...)

I also think having Python Methods ship with Zope would really help...

There are niggles (like the rediculous id problem) which you can live
with, but doing anything other than the really mundane in DTML means
extreme hair loss right now, which is not good.

I wonder how many other people would agree with me: nevermind ZEO, or
the PTK, ZPatterns or any new fancy functionality. Can we at least have
a decent template language that doesn't confuse the hell out of newbies
and oldbies alike...

cheers,

Chris

(Who just spent 1/2 hour figuring out how to do a multi-language site in
Zope, and now after 6hrs of trying has given up doing a recursive tree
copy to get the old site into the new structure with a DTML method or
two and is resorting to ugly hacky external methods because Python
Methods arent' around/stable)

PS: Zope: yes it makes the hard things very easy, but it makes the easy
things very hard, so it all balances out nicely... ;-)