Hi there,
I've posted about this before but didn't get a satisfactory answer yet. I'm using an external method with a DTML Document, and inside that external method I want to look at the properties of the DTML Document. I keep having problems with it so I reduced the problem to the following. I have this external method:
def getPropertyIds(self): return self.propertyIds()
Inside a DTML Document I have this:
<!--#var standard_html_header--> <p><!--#var "getPropertyIds()"--></p> <p><!--#var "propertyIds()"--></p> <!--#var standard_html_footer-->
I would expect these two to give the same list of property ids, but instead the external method returns the list of properties in the *folder*, not in the document (like <!--#var "propertyIds()"--> does).
Am I doing something wrong, or is this a bug? A related question: is there a way to check if a property id (acquired from the folder *or* defined locally in the DTML Document) exists or not (and get at its contents), from within an external method? hasProperty is not working well either...
Martijn, Remember that DTML Documents behave a little differently than DTML Methods, External Methods and other "method"-like objects. The "self" in your "getPropertyIds" external method is going to be the _folder_, not the DTML Document. In a DTML Document, the implicit "self" namespace is the DTMLDocument itself, but this does extend to any method-like objects called from the DTML Document - they will continue to act as methods of their containers (and _not_ like methods of the DTML Document). One thing you could do to accomplish what you are trying to do is to extend your getPropertyIds() method to accept an argument: def getPropertyIds(self, obj): return obj.propertyIds() <!--#var "getPropertyIds(this())"--> Hope this helps! Brian Lloyd brian@digicool.com Software Engineer 540.371.6909 Digital Creations http://www.digicool.com