http://maypole.perl.org/?TheRoadmap
2.11
- Fix to documentation for CGI::Maypole (bug 7263)
+
+Deprecated:
+ Directly accessing the attributes of the request object, or the parameters
+ in $r->params, or anything else, is DEPRECATED and likely to break in future
+ releases.
+
+Incompatible API changes:
+ Maypole:
+ - is_applicable() renamed to is_model_applicable(), and returns boolean
+ instead of a status code. Old-style is_applicable() will still work,
+ but issues a warning.
+
+API additions and enhancements:
+ Maypole::Application:
+ -Init flag (wishlist 14123)
+ Maypole::Headers:
+ add() alias to push() (wishlist 14142)
+ Maypole:
+ - empty session() attribute, and get_session() method added.
+ - get_session() now called during handler_guts() before authenticate()
+ - new preprocess_path() method added and called by parse_path(),
+ parse_path() will leave any properties set by preprocess_path() in
+ place
+ - start_request_hook() added
+ - setup() split into setup(), setup_model(), and load_model_subclass()
+ - added new path processing methods for ssl and default table/action
+ - added make_path() and make_uri()
+
+Bug fixes:
Fix to cgi_maypole.t (bug 11346)
Fix to TT error reporting (bug 13991)
Template xhtml validation (bug 13975)
- Simplified Net::Amazon example (bug 14073)
Apache2 fix in Apache::MVC (bug 13888)
- Inheritance cleanup (bug 14120)
- Improved Template error reporting (14133)
- Maypole::Session::generate_unique_id() now returns the id (bug 14124)
- Implement -Init flag in Mp::Application (wishlist 14123)
- add() alias to push() in Mp::Headers (wishlist 14142)
Fixed inheritance issues in Mp::Application - Mp::App now manipulates the caller's
@ISA directly, and doesn't inject itself into the chain (bugs 12923 & 14120)
- Added new path processing methods for ssl and default table/action
+ Improved Template error reporting (14133)
+ Maypole::Session::generate_unique_id() now returns the id (bug 14124)
Moved ar accessor to Apache::MVC (bug 14014)
Refactored core to support further development in 2.11 and onwards
Fixed related_class method (bug 14566)
- Empty session attribute, and get_session method added to Maypole.pm
- get_session now called during handler_guts before authenticate
- new preprocess_path method added and called by parse_path, parse_path will leave any
- properties set by preprocess_path in place
+ Added a cgi() attribute in Maypole::CGI
+
+Documentation:
+ Fix to documentation for CGI::Maypole (bug 7263)
+ Simplified Net::Amazon example (bug 14073)
+ Numerous major and minor updates to docs, plus:
+ - renamed Maypole::Manual::Request to Maypole::Manual::Cookbook
+ - added Maypole::Manual::Install, with material removed from
+ Maypole::Manual::About
+ - added Maypole::Manual::Inheritance
+ - added Maypole::Manual::Terminology
+
+
2.10 Tue 19 Jul 2005
Multiple Template Paths added ( http://rt.cpan.org/NoAuth/Bug.html?id=13447 )
=head1 DESCRIPTION
-This is the default view class for Maypole; it uses the Template Toolkit to
-fill in templates with the objects produced by Maypole's model classes. Please
-see the L<Maypole manual|Maypole::Manual>, and in particular, the
+This is the default view class for Maypole; it uses the Template Toolkit to fill
+in templates with the objects produced by Maypole's model classes. Please see
+the L<Maypole manual|Maypole::Manual>, and in particular, the
L<view|Maypole::Manual::View> chapter for the template variables available and
for a refresher on how template components are resolved.
=head1 TEMPLATE TOOLKIT INTRODUCTION
-The Template Toolkit uses it's own mini language described in L<Template::Manual::Directives>.
+The Template Toolkit uses it's own mini language described in
+L<Template::Manual::Directives>.
A simple example would be :
=back
-TT uses '[%' and '%]' (by default) to delimit directives within a template, and the simple directives
-above just display the value of variable named within those delimiters -- [% title %] will be replaced
-inline with the value of the 'title' variable passed in the 'stash' to the template when it is processed.
+TT uses '[%' and '%]' (by default) to delimit directives within a template, and
+the simple directives above just display the value of variable named within
+those delimiters -- [% title %] will be replaced inline with the value of the
+'title' variable passed in the 'stash' to the template when it is processed.
-You can access nested data through the dot ('.') operator, which will dereference array or hash elements,
-but can also be used to call methods on objects, i.e. '[% name.salutation("Dear %s,") %]'. The other main
-operator is underscore ('_'), which will concatonate strings or variables.
+You can access nested data through the dot ('.') operator, which will
+dereference array or hash elements, but can also be used to call methods on
+objects, i.e. '[% name.salutation("Dear %s,") %]'. The other main operator is
+underscore ('_'), which will concatonate strings or variables.
-The value returned by a directive replaces the directive inline when the template is processes, you can also
-SET a value which will not return anything, or CALL a method or operation which will also not return anything.
+The value returned by a directive replaces the directive inline when the
+template is processes, you can also SET a value which will not return anything,
+or CALL a method or operation which will also not return anything.
-You can specify expressions using the logical (and, or, not, ?:) and mathematic operators (+ - * / % mod div).
+You can specify expressions using the logical (and, or, not, ?:) and mathematic
+operators (+ - * / % mod div).
=over 4
=back
-TT allows you to include or re-use templates through it's INCLUDE, PROCESS and INSERT directives, which
-are fairly self explainatory. You can also re-use parts of template with the BLOCK or MACRO directives.
+TT allows you to include or re-use templates through it's INCLUDE, PROCESS and
+INSERT directives, which are fairly self explainatory. You can also re-use parts
+of template with the BLOCK or MACRO directives.
-Conditional and Looping constructs are simple and powerful, and TT provides an inbuilt iterator and helper
-functions and classes that make life sweet.
+Conditional and Looping constructs are simple and powerful, and TT provides an
+inbuilt iterator and helper functions and classes that make life sweet.
-Conditional directives are IF, UNLESS, ELSIF, ELSE and behave as they would in perl :
+Conditional directives are IF, UNLESS, ELSIF, ELSE and behave as they would in
+perl :
=over 4
Looping directives are FOREACH, LAST and BREAK.
-FOREACH loops through a HASH or ARRAY processing the enclosed block for each element.
+FOREACH loops through a HASH or ARRAY processing the enclosed block for each
+element.
Looping through an array
The LAST and BREAK directive can be used to exit the loop.
-The FOREACH directive is implemented using the Template::Iterator module. A reference
-to the iterator object for a FOREACH directive is implicitly available in the 'loop' variable.
-The loop iterator object provides a selection of methods including size(), max(), first(), last(),
-count(), etc
+The FOREACH directive is implemented using the Template::Iterator module. A
+reference to the iterator object for a FOREACH directive is implicitly available
+in the 'loop' variable. The loop iterator object provides a selection of methods
+including size(), max(), first(), last(), count(), etc
=over 4
See Template::Iterator for further details on looping and the Iterator.
-You might notice the minus ('-') operator in the example above, it is used to remove a newline
-before or after a directive so that you can layout the Template logic as above but the resulting
-output will look exactly how you require it.
+You might notice the minus ('-') operator in the example above, it is used to
+remove a newline before or after a directive so that you can layout the Template
+logic as above but the resulting output will look exactly how you require it.
-You will also frequently see comments and multi-line directives, # at the start of a directive
-marks it as a comment, i.e. '[%# this is a comment %]'. A multiline directive looks like :
+You will also frequently see comments and multi-line directives, # at the start
+of a directive marks it as a comment, i.e. '[%# this is a comment %]'. A
+multiline directive looks like :
[% do.this;
do.that;
do.the_other %]
-You can see that lines are terminated with a semi-colon (';') unless the delimter ('%]') closes the directive.
+You can see that lines are terminated with a semi-colon (';') unless the
+delimter ('%]') closes the directive.
-For full details of the Template Toolkit see Template::Manual and Template::Manual::Directives, you can
-also check the website, mailing list or the Template Toolkit book published by O Reilly.
+For full details of the Template Toolkit see Template::Manual and
+Template::Manual::Directives, you can also check the website, mailing list or
+the Template Toolkit book published by O Reilly.
=head1 TEMPLATE PLUGINS, FILTERS AND MACROS
-The Template Toolkit has a popular and powerful selection of Plugins and Filters.
+The Template Toolkit has a popular and powerful selection of Plugins and
+Filters.
-TT Plugins provide additional functionality within Templates, from accessing CGI and
-databases directly, handling paging or simple integration with Class::DBI (for those
-rare occasions where you don't actually need Maypole). See L<Template::Manual::Plugins>.
+TT Plugins provide additional functionality within Templates, from accessing CGI
+and databases directly, handling paging or simple integration with Class::DBI
+(for those rare occasions where you don't actually need Maypole). See
+L<Template::Manual::Plugins>.
One plugin that is indispensible when using Maypole and the Template View is
-C<Template::Plugin::Class> -- This allows you to import and use any class installed
-within a template. For example :
+C<Template::Plugin::Class> -- This allows you to import and use any class
+installed within a template. For example :
=over 4
=back
-Would do the equivilent of 'use Foo; Foo->bar;' in perl. See L<Template::Plugin::Class>
-for details.
+Would do the equivilent of 'use Foo; Foo->bar;' in perl. See
+L<Template::Plugin::Class> for details.
-TT Filters process strings or blocks within a template, allowing you to truncate,
-format, escape or encode trivially. A useful selection is included with Template Toolkit
-and they can also be found on CPAN or can be written easily.
-See L<Template::Manual::Filters>.
+TT Filters process strings or blocks within a template, allowing you to
+truncate, format, escape or encode trivially. A useful selection is included
+with Template Toolkit and they can also be found on CPAN or can be written
+easily. See L<Template::Manual::Filters>.
-TT Macros allow you to reuse small blocks of content, directives, etc. The MACRO directive
-allows you to define a directive or directive block which is then evaluated each time the
-macro is called. Macros can be passed named parameters when called.
+TT Macros allow you to reuse small blocks of content, directives, etc. The MACRO
+directive allows you to define a directive or directive block which is then
+evaluated each time the macro is called. Macros can be passed named parameters
+when called.
-Once a MACRO is defined within a template or 'include'd template it can be used as if it
-were a native TT directive. Maypole provides a selection of powerful and useful macros
-in the templates/ directory of the package and these are used in the beerdb and default
-templates. See the MACRO section of the L<Template::Manual::Directives> documentation.
+Once a MACRO is defined within a template or 'include'd template it can be used
+as if it were a native TT directive. Maypole provides a selection of powerful
+and useful macros in the templates/ directory of the package and these are used
+in the beerdb and default templates. See the MACRO section of the
+L<Template::Manual::Directives> documentation.
=head1 MAYPOLE MACROS AND FILTERS