From 6c19a422c2c4bc3457f311ffc0403b8644690074 Mon Sep 17 00:00:00 2001 From: David Baird Date: Mon, 7 Nov 2005 21:03:03 +0000 Subject: [PATCH] Wrote up Changes. Added wishlist.txt - start of a list of tasks for 2.11, 2.12, 3.0 git-svn-id: http://svn.maypole.perl.org/Maypole/trunk@418 48953598-375a-da11-a14b-00016c27c3ee --- Changes | 56 +++++++++++++++----- MANIFEST | 4 +- lib/Maypole.pm | 4 +- lib/Maypole/View/TT.pm | 115 +++++++++++++++++++++++------------------ wishlist.txt | 30 +++++++++++ 5 files changed, 144 insertions(+), 65 deletions(-) create mode 100644 wishlist.txt diff --git a/Changes b/Changes index d1d1769..e7b6d37 100644 --- a/Changes +++ b/Changes @@ -3,27 +3,59 @@ For information about current developments and future releases, see: 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 ) diff --git a/MANIFEST b/MANIFEST index ad265bd..7103349 100644 --- a/MANIFEST +++ b/MANIFEST @@ -12,11 +12,13 @@ lib/Maypole/Headers.pm lib/Maypole/Session.pm lib/Maypole/Manual.pod lib/Maypole/Manual/About.pod +lib/Maypole/Manual/Install.pod lib/Maypole/Manual/Beer.pod lib/Maypole/Manual/BuySpy.pod lib/Maypole/Manual/Flox.pod lib/Maypole/Manual/Model.pod -lib/Maypole/Manual/Request.pod +lib/Maypole/Manual/Cookbook.pod +lib/Maypole/Manual/Inheritance.pod lib/Maypole/Manual/StandardTemplates.pod lib/Maypole/Manual/View.pod lib/Maypole/Manual/Workflow.pod diff --git a/lib/Maypole.pm b/lib/Maypole.pm index c31798d..b84360c 100644 --- a/lib/Maypole.pm +++ b/lib/Maypole.pm @@ -76,8 +76,8 @@ application. This is the C package used as an example in the manual. This needs to first use L which will make your package inherit from the appropriate platform driver such as C or -C. Then, the driver calls C. This sets up the model classes and -configures your application. The default model class for Maypole uses +C. Then, the driver calls C. This sets up the model classes +and configures your application. The default model class for Maypole uses L to map a database to classes, but this can be changed by altering configuration (B calling setup.) diff --git a/lib/Maypole/View/TT.pm b/lib/Maypole/View/TT.pm index 1ea4a8e..6f9fbc6 100644 --- a/lib/Maypole/View/TT.pm +++ b/lib/Maypole/View/TT.pm @@ -58,9 +58,9 @@ Maypole::View::TT - A Template Toolkit view class for Maypole =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, 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, and in particular, the L chapter for the template variables available and for a refresher on how template components are resolved. @@ -78,7 +78,8 @@ Processes the template and sets the output. See L =head1 TEMPLATE TOOLKIT INTRODUCTION -The Template Toolkit uses it's own mini language described in L. +The Template Toolkit uses it's own mini language described in +L. A simple example would be : @@ -94,18 +95,22 @@ enclose more details of ... =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 @@ -117,13 +122,15 @@ You can specify expressions using the logical (and, or, not, ?:) and mathematic =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 @@ -141,7 +148,8 @@ Conditional directives are IF, UNLESS, ELSIF, ELSE and behave as they would in p 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 @@ -163,10 +171,10 @@ Looping through an array of hashes 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 @@ -180,33 +188,38 @@ count(), etc 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. +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. One plugin that is indispensible when using Maypole and the Template View is -C -- This allows you to import and use any class installed -within a template. For example : +C -- This allows you to import and use any class +installed within a template. For example : =over 4 @@ -215,22 +228,24 @@ within a template. For example : =back -Would do the equivilent of 'use Foo; Foo->bar;' in perl. See L -for details. +Would do the equivilent of 'use Foo; Foo->bar;' in perl. See +L 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. +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. -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 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 documentation. =head1 MAYPOLE MACROS AND FILTERS diff --git a/wishlist.txt b/wishlist.txt new file mode 100644 index 0000000..21cdea9 --- /dev/null +++ b/wishlist.txt @@ -0,0 +1,30 @@ +2.12/3.0 wishlist +================= + +Not for inclusion in the MANIFEST. + +2.11 +==== +Fix factory roots, document and explain behaviour +send_output() should return a status code +Move template test out of process() and into handler_guts() - maybe +Fix bug 14570 - returning error codes breaks CGI::Maypole +Write Maypole::Manual::Exceptions + +2.12 +==== +Maypole::instance() +Better plugin architecture, for models and bits of models. +Investigate problems reported with adopt() - rt 15598 + +3.0 +==== +encapsulate all request data in HTTP::Request object, and all response data +in HTTP::Response object + +add email handling - like Rails - via model plugins + +add validation layer, or just an API + +killer apps: SVN model; mitiki; Pet Shop; + -- 2.39.5