Revision history for CGI-Application-Plugin-AnyTemplate 0.18 Oct 18, 2009 - Can now use Clone::PP if Clone is not installed. Thanks to Bianka Martinovic (RT #37999). Note that there doesn't appear to be a way to indicate to Module::Build that the module can use either Clone or Clone::PP - that it requires one (but not both) of them. So for now, Clone is still listed as a prerequisite. - updated Template::Toolkit driver docs to indicate how to use different encodings. Thanks to Shmuel Fomberg (RT #34791). - removed spurious call to $template->error on Petal templates. Thanks to William McKee (RT #20221). - Component handler now weakens reference to containing_template, in an attempt to avoid crazy memory usage. Thanks to Dan Horne (RT #18157). - Changes of interest to module maintainers only: - t/prereqs-scenarios is now included in the distribution. This is how I simulate the absense of specific modules when running the test suite. For instance, the user may have HTML::Template::Expr installed, but not HTML::Template::Pluggable. Or they may have Clone::PP installed, but not Clone. To test the various prerequisite scenarios, use the included prove-prereqs.pl script: ./misc/prove-prereqs.pl t/prereq_scenarios -Ilib t/ This runs the test suite several times. Each time it simulates a different set of unavailable modules. Adapted from the Perl Hacks book. - fixed the makedocs script to work with more recent pod2html - changed noindex to no_index in META.yml 0.17 Nov 07, 2005 - fixed storage of TT objects so that objects with different named configs don't trample each other (discovered by RA Jones) 0.16 Nov 03, 2005 - fixed fill() so that when it is called without parameters, it does not set the filename to undef. - changed skip_libs to prereq_scenarios (and removed the scenarios from the distribution) - added new scenario for old CAP::Forward 0.15 Oct 03, 2005 - include fix to work with old version of CAP::Forward that doesn't always install its hooks properly. 0.14 Sep 25, 2005 - added template_filename_generator - minor doc fix 0.13 Sep 14, 2005 - fixd bug where clear_params didn't work (Wojciech Pietron) - fixed typos in docs regarding include_paths and add_include_paths (Wojciech Pietron) - minor doc fix 0.12 Sep 13, 2005 - added return_references option, defaulting to true. - changed load_tmpl to always return a string, rather than a reference - added documentation indicating that output returns a reference by default 0.11 Sep 08, 2005 - fixed a bug fill/process when called with a single non-hashref argument. The following used to be broken; now they DWIM: $self->template->fill('filename'); $self->template->fill(\$template); - fixed a bug in template_post_process that has been there since the beginning. The callback was being called as: template_post_process($self, \$output) # wrong! But it was documented as: template_post_process($self, $template, \$output) # right! It's been fixed to match the documentation. 0.10 Aug 17, 2005 - This is a major new release with a lot of new features and some incompatible API changes. The new features are: * new driver (HTMLTemplatePluggable) has support for HTML::Template::Pluggable and HTML::Template::Plugin::Dot * AnyTemplate can now optionally provide a load_tmpl method like the one built into CGI::Application, so that old code can get the benefit of AnyTemplate. * added support for the load_tmpl hook * test suite should be less fragile for users who don't have all of the templating modules installed The incompatibilities are: * associate_query off by default * associate_query now deprecated * CAP::Forward now required * default template names determined from $self->current_runmode, not from the name of the calling sub * template_pre_process and template_post_process now need to be explicitly registered with $self->add_callback() * tmpl_path is respected - for more info on these changes see the changelog below for the developer versions released since 0.08 0.10_06 Aug 17, 2005 [**DEVELOPER RELEASE**] [unreleased] - added an explit test to see if HTML::Template::Plugin::Dot works 0.10_05 Aug 13, 2005 [**DEVELOPER RELEASE**] - fixed a bug in the tests for testing module prerequisites - it is now possible to run the test suite while simulating the absense of specific templating modules. To run the test suite multiple times (each with a different selection of absent modules), run: $ perl misc/prove_without_modules.pl t/*.t To customize this process, see the instructions at the top of misc/prove_without_modules.pl 0.10_04 Aug 13, 2005 [**DEVELOPER RELEASE**] - new driver HTMLTemplatePluggable has support for HTML::Template::Pluggable and HTML::Template::Plugin::Dot (thanks to Mark Stosberg for starting the driver) 0.10_03 July 27, 2005 [**DEVELOPER RELEASE**] - moved 'forward' to its own module: CGI::Application::Plugin::Forward - changed instances of 'use base' to use... and @ISA to be kinder to old Perls - made hook-based tests skip if installed CGI::Application doesn't support hooks 0.10_02 July 25, 2005 [**DEVELOPER RELEASE**] - wrapped usage of CGI::Application's callback system in if ($webapp->can('call_hook')) { ... } ...or equivalent, so CGI::Application 4.x is not required. 0.10_01 July 25, 2005 [**DEVELOPER RELEASE**] - this version has several API changes that are not backwards compatible: - template names used to be automatically determined from the name of the calling subroutine: sub my_runmode { my $self = shift; $self->other_method; } sub other_method { my $self = shift; $self->template->fill; # loads 'other_method.html' } There were two problems with this method: 1. Not every subroutine or method is a run mode 2. Under debuggers, the name of the calling subroutine is often not available, so code that uses automatic template names can't be run under a debugger. So now AnyTemplate has been changed to get the template name from $self->get_current_runmode: sub my_runmode { my $self = shift; $self->other_method; } sub other_method { my $self = shift; $self->template->fill; # loads 'my_runmode.html' } If you want to pass control to another runmode and you want $self->get_current_runmode to be updated, then you use the new 'forward' method: sub my_runmode { my $self = shift; return $self->forward('other_runmode'); } sub other_runmode { my $self = shift; $self->template->fill; # loads 'other_runmode.html' } - template_pre_process and template_post_process are no longer called automatically. Instead you must register them as hooks. $self->add_callback('template_pre_process', \&template_pre_process); $self->add_callback('template_post_process', \&template_post_process); - associate_query and emulate_associate_query have now been disabled by default. Having this feature enabled by default was a potential XSS (Cross Site Scripting) security risk. The use of this feature is now deprecated. The feature will be removed in the future - other changes: - added option to override load_tmpl. It is enabled by: use CGI::Application::Plugin::AnyTemplate qw(load_tmpl); When this feature is enabled, you can do the following: $self->load_tmpl('somefile.txt', path => '/path/to/templates', %other_options ); And this is translated into: $self->template->load('somefile.txt', add_include_path => '/path/to/templates', HTMLTemplate => \%other_options, auto_add_template_extension => 0, ); - added support for the load_tmpl hook, compatible with the one built into CGI::Application - $self->tmpl_path is now merged into 'include_path' - documentation for authors of plugins and re-usable applications - documentation for why the automatic extension mechanism is there - re-numbered some test scripts 0.08 July 20, 2005 - fixed bug where keys of configuration hashref were clobbered, so if you used the same config repeatedly (e.g. under mod_perl), onlyt the first call would work. (thanks to R.A. Jones) 0.07 July 10, 2005 - templates can also be created from strings via fill: return $self->template->fill(\$some_text, \%params); 0.06 July 10, 2005 - allowed templates to be created from strings (works in all drivers except Petal): $self->template->load(string => \$some_text); $self->template->load(\$some_text); 0.05 Jun 15, 2005 - changed embedded components from 'dispatch' to 'embed' to avoid confusion with CGI::Application::Dispatch This is an incompatible API change, which hopefully won't actually affect anybody since I don't think there are any users of AnyTemplate yet. The default syntax has changed from: CGIAPP_dispatch, CGIAPP.dispatch, CGIAPP/dispatch, etc. to: CGIAPP_embed, CGIAPP.embed, CGIAPP/embed, etc. The old syntax still works to embed components in TT and Petal (but is undocumented). Users of HTML::Template and HTML::Template::Expr can return to the old syntax by setting embed_tag_name to 'cgiapp_dispatch' Related API changes: - CAP:AnyTemplate::Dispatcher has been renamed to CAP:AnyTemplate::ComponentHandler - the dispatcher_class option has been renamed to component_handler class - the dispatch_tag_name driver config key has been renamed to embed_tag_name 0.04 May 19, 2005 - fixed Pod links and other minor doc issues 0.03 May 19, 2005 - Fixed one More POD NAME error 0.02 May 19, 2005 - Fixed NAME sections in driver POD 0.01 May 18, 2005 - Initial Release