[Zope] Calling a DTML method in a subfolder that uses PARENTS[0]

Dieter Maurer dieter@handshake.de
Wed, 5 Jan 2000 23:37:45 +0100 (CET)


Soren Roug writes:
 > Hello,
 > 
 > I'm trying to call a method inside a folder that uses this common way of
 > listing its content:
 > 
 > <dtml-in "PARENTS[0].objectValues('File')">
 > <dtml-var absolute_url><br>
 > </dtml-in>
 > 
 > Let's call this folder FileLibrary. (It's actually a Z Class subclassed
 > from ObjectManager)
 > 
 > My problem is when I call the method from the folder above, then PARENTS
 > is unchanged and the script will try to enumerate the files in the
 > folder I'm calling from. I've tried several things, e.g.
 > 
 > ...
 > <dtml-with FileLibrary>
 > <dtml-call "REQUEST.PARENTS.append(_)">...

   <dtml-call "REQUEST.PARENTS.append(FileLibrary)">

would do it, but would be *VERY* hacky code.

Instead:
   Give your method a parameter, say "sourcefolder".
   In your method:

      <dtml_in "(_.has_key('sourcefolder') and sourcefolder or PARENT[0]).objectValues('File')">
   
   (You may want to factor the "(_.has_key....PARENT[0])" out.)

   Then, when your method should use a special folder, use:

	 <dtml-let sourcefolder=whatever>
	   <dtml-var FileLibrary>
	 </dtml-let>


Dieter