So, I found a different way to solve this problem, by making the append
JSON-dump not a filter, but rather an additional process step after getting the
HTML::Template output, before sending it back to the mod_perl script (we have a
Web-App layer in-between the two). Since I'm able to access
$template->{options}->{some_created_option} I was able to use that to store the
JSON-dump and access it after doing $template->output (calling HTML::Template
output).
If anybody else still sees the need for having a "no_filter_includes" (for
example, when including external templates?) the code below should still allow
for this, but I officially withdraw my request!
On 7/26/08 12:56 PM, "Vijay Ramesh" <[EMAIL PROTECTED]> wrote:
I've been running into an issue with a Web-App system the company I work for
has built around HTML::Template. Basically, to summarize the problem, I am
creating a JSON-dump of everything in the handler (e.g., all tmpl_*, including
a bunch of environmental, config, and session stuff that we set automatically)
and - given a parameter on this our-Web-App=>HTML::Template=>parse call, want
to append this JSON-dump as a div at the bottom of the template. It is then
loaded by a javascript object that uses it to generate ajax-calls among other
things. Anyhow, the problem isn't with this, per se, but with the way that
HTML::Template automatically applies filters to all tmpl_includes. I can get
around this by some nasty regexps before sending the output of the parsed
template, making sure only one JSON-dump div is present, but that really breaks
the whole programming/design paradigm (that I like very much). Now, there
might be a better way to append this generated JSON-dump as a TMPL_VAR to the
end of the parsed template than using a filter (as using a filter comes pretty
close to adding design - e.g., appending a qq/<div id="js_thandler"><TMPL_VAR
ESCAPE=HTML JS_THANDLER><\/div>/ to the template as a filter) but this current
method works well, making it so the individual mod_perl script does not have to
do anything except set a parameter in the custom parse call indicating this
JSON-dump should be created and appended to the output. I really don't want to
lose this automation - and so am resigned to having the slightest bit of HTML +
TMPL_VAR in an App-level filter. But, so long as filters automatically run for
all tmpl_includes as well, I'm ending up with as many of these divs as there
are tmpl_includes, plus one for the main template. Now, I certainly understand
why - as they are normally used - filters run for all tmpl_includes. What I was
wondering was would it be terrible to add a "no_filter_includes" parameter to
the HTML::Template parse call, and then having something like
$self->_call_filters(\$included_template) if @{$options->{filter}} &&
$options{no_filter_includes} != 1
At line 2252 of HTML::Template 2.8?
That would be the only change required - and it wouldn't effect anything if the
option isn't set (i.e., it wouldn't mess up existing uses of HTML::Template).
I'm not sure if anybody else has ever had cause for a similar option, or if my
use of filters is just too far off the HTML::Template paradigm to warrant this
change, but it would save me from having some nasty regexp parsing after
getting the output....
I would gladly commit this change - or anybody who is actively working with the
project, you'd just have to make the change detailed above - if anybody else
sees this as a potentially beneficial option to have? Or if anybody has
suggestions for a different way to append a qq/<div id="js_thandler"><TMPL_VAR
ESCAPE=HTML JS_THANDLER><\/div>/ line to the template before it gets parsed
without using a filter, that'd be great as well.
Thanks for the input
/ Vijay K Ramesh
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Html-template-users mailing list
Html-template-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/html-template-users