Someone posted an External Method to display DTML Document source recently. I've modified it to interpret paths, so now one can say: http://www.zope.org/dtml_source?path=/x/y/z and it will show the source of z, an object inside y, which is an object inside x. And so on. Maybe there's a reason the original didn't do this?
Anyway, here's my version of Extensions/dtml_source.py :-
import string def view_source(self, path): "View the source of a Document" for id in string.split(path, '/'): if not id: continue # Leading / if id not in self.objectIds(): id = None break # Walk down object hierarchy self = getattr(self, id) if not id: self = getattr(self, 'index_html') return self.read_raw()
I think that the confusion over dtml_source is due to its 'zopish' behaviour ... :) Using the 'old' dtml_source, urls such as server.org/dtml_source?path=/ninja/turtle/index_html only gets you the source of the top level index_html This is the way you would type in the URL to a non-zope system (ie the dtml_source 'lives' at the top level of the 'directory' and so everything is 'underneath' it) However, if you try the url server.org/ninja/turtle/dtml_source?path=index_html you get the source of the index_html at the level of 'turtle'. A *huge* lightbulb went on when I tried this. This is the 'zopish' way and uses acquisition to get the job done, ie dtml_source is 'called' at the level of turtle, which doesn't find it and passes it up to ninja who also passes it to the top level ('/' in unix parlance) who can process the request because it finds dtml_source at its level in the heirarchy. hope this helps, tone.
participants (1)
-
Tony McDonald