On Sat, May 19, 2001 at 12:50:50PM -0400, Tres Seaver wrote:
Sreeram Ramachandran <gro.mareers@sreeram.org> wrote:
Instead of an HTTP-AUTH dialog (as it now stands), I would like to put out a LoginManager-style "forbiddenPage". The following will not work, because the "something follows here" (plus the standard_html_footer) section will still get output:
standard_html_header: if ...: // same check as above <dtml-var forbiddenPage> else: ... // normal stuff
some_page: <dtml-var standard_html_header> ... something follows here ... <dtml-var standard_html_footer>
How about::
<dtml-return forbiddenPage>
Tres. -- =============================================================== Tres Seaver tseaver@digicool.com Digital Creations "Zope Dealers" http://www.zope.org
That won't work, because, although standard_html_header will return, some_page will continue and output the extra stuff ("something follows here" + footer). But, I found a way out! I now use "<dtml-raise>". In fact, using the same strategy, I am able to fix other minor irritations, such as: - pesky browsers (such as IE) showing their "friendly" error pages instead of your nicely-crafted HTML (for stuff like "LoginRequired"/"Forbidden") - the W3C HTML validator <http://validator.w3.org/> refusing to process any page unless the return code is 200. - trying to arbitrarily stop further DTML processing (and not just within the current document/method). I think the solution is pretty neat. It fixes all the above, is neat (i.e., without touching the Zope Python code at all) and is concentrated in a couple of places (such as standard_error_message, loginForm and standard_html_header) so that the rest of your site won't have to worry about it. I'll be happy to explain the details if anyone is interested or faces similar problems. Cheers! Sreeram. -- ---------------------------------- Observation is the essence of art. ----------------------------------