HTML-Mason
view release on metacpan or search on metacpan
- Trying to load HTML::Mason::ApacheHandler outside of mod_perl caused
an error "like Undefined subroutine &Apache::perl_hook called at
/usr/local/share/perl/5.8.7/HTML/Mason/ApacheHandler.pm line
257". While it will never _run_ outside of mod_perl, it should at
least load.
- Fixed test in 14a-fake_apache.t that failed with CGI.pm >= 3.16.
- The example code in the HTML::Mason::Resolver::Null code was
just wrong. Fixed by John Siracusa.
- Fixed a test failure in 06-compile.t when using bleadperl. RT
#17118.
1.32 January 3, 2006
[ BUG FIXES ]
- Under mod_perl 1.x with error_mode set to output, the headers were
sent after the content when a compilation error occurred. Reported by
Gareth Kirwan. Task id #592.
- URI-escape utf8 characters the same way that CGI::escape and
URI::Escape::uri_escape_utf8 do. Patch by Denis Shaposhnikov.
- On startup Mason creates a file named ".__obj_create_marker" in the
object directory. Under mod_perl, Mason was not chmod'ing the file
when Apache was started as root. This led to permission errors in
environments where the Interp is created anew every request. Task id
#593.
- Treat the return value of component execution as a string in
ApacheHandler. This prevent warnings about comparing the empty string
to a number when a component returns "". Reported by Benjamin Franz.
- Setting a MasonPlugins Apache parameter caused a fatal error. Patch
by David Jack Olrik.
- Calling base_comp() on the Request object inside a plugin's
start_request_hook method caused an infinite recursion in Mason.
Reported by Jesse Vincent.
1.3101 August 23, 2005
[ BUG FIXES ]
- One last fix for CGIHandler. If you provided your own out_method it
was ignoring it and using its own. Reported by David Glasser.
1.31 August 20, 2005
[ BUG FIXES ]
- Fix several regressions in the CGIHandler and FakeApache modules.
Some changes from the stable branch were never merged into the trunk
before 1.30. Reported by Jesse Vincent. Task id #589.
- Under Apache2, if an ApacheHandler object was created during server
startup and the associated Interp object created any files or
directories, Mason would crash when attempting to chown those
files/dirs to the uid/gid that Apache will use after forking. Task
#586.
- The compiler was adding an extra block around a component's
body, which meant that variables declared in the body (in perl lines
or blocks) were not seen in the cleanup section. Task id #587.
- The compiler was also adding "no warnings 'uninitialized'" in this
block, which could hide various errors.
- Hopefully fix $VERSION in ApacheHandler so PAUSE will not be
confused and think we have regressed.
- Turned off some prompts during the module's installation. These
were intended to help new users configure Apache to run Mason
components, but they're probably a bit confusing. Will return in a
future release as a separate script that can be run from the command
line.
1.30 August 11, 2005
[ INCOMPATIBLE CHANGES ]
- ** Under mod_perl2, MasonArgsMethod will default to "CGI", since
libapreq2 is still in development. If you have successfully installed
libapreq2, just set MasonArgsMethod to "mod_perl" to use it.
[ ENHANCEMENTS ]
- Some doc tweaks to clarify that Mason should work out of the box
with both mod_perl 1 and 2.
- Added "use warnings" to all modules and made sure all tests ran
warnings-free.
[ BUG FIXES ]
- Silence a warning when HTML::Mason::ApacheHandler was loaded outside
of mod_perl.
- Support renamed Apache2::Status module.
1.29_02 June 22, 2005
[ ENHANCEMENTS ]
- ** Support for mod_perl-2.00 (mod_perl-1.99 is no longer supported
because of API changes in 2.0RC5).
- Mason recovers more gracefully from an empty or corrupted object
file. Task id #579.
[ BUG FIXES ]
- Fixed bug with content type being reset when decline_dirs=0.
Submitted by Brian Phillips. Task id #584.
- Put "Mason" prefix back in Params.pod. Task id #575.
- Fixed fetch_comp(undef) to not return an empty hash. Task id #578.
- static_source_touch_file did not take effect until after one request
for a top-level component. Reported by Lai Zit Seng. Task id #576.
1.29_01 January 25, 2005
'HTML::Mason::Resolver::File::ApacheHandler'. However, you can now
pass Interp constructor params directly to the ApacheHandler
constructor, which will create the interp object internally.
- ** The MasonMultipleConfig httpd.conf parameter has been removed.
Mason can now figure this out by itself.
- ** The HTML::Mason::Interp time() method has gone away.
- ** The base_comp is now changed for each component call, unless that
component call uses a component object for its first argument, or the
call starts with SELF: or PARENT:.
- ** The "perl_" prefix for Mason tags is no longer supported.
- ** The backslash character now eliminates a newline at the end of
any line, not just before %-lines and section tags.
[ ENHANCEMENTS AND NEW FEATURES ]
- It is now possible to pass chunks of component content as part of a
component call.
- Mason now supports subrequests via the new $m->subexec and
$m->make_subrequest methods.
- Mason no longer requires you to specify a component root or data
directory. The component root now defaults to your document root in a
web context, or your filesystem root in a standalone context. The
data directory will be a subdirectory of your server root under
mod_perl, and Mason can work without any data directory at all in
other contexts.
- The Resolver class API has been redesigned and is documented for the
first time.
- The installation process will offer to help you setup Mason for use
with mod_perl if it can find your Apache configuration file and it
cannot find an existing Mason configuration.
- The HTML::Mason::Request->instance method is now the officially
supported way of getting at the current request object outside of a
Mason component (suggested by John Siracusa).
- The HTML::Mason::Interp->comp_exists method now checks for a
component's existence without loading the component (suggested by
Randal Schwartz).
- Mason now includes a module called HTML::Mason::CGIHandler, which
greatly simplifies the use of Mason via CGI scripts.
- Mason now uses File::Spec for all filesystem operations.
- All the .pod files have been merged into their corresponding .pm
files, where appropriate.
- Added the Component attr_if_exists method (suggested by Joe
Frisbie).
- We now use the HTML::Entities module's encode function for the 'h'
substitution escape flag. This module escapes high-ascii characters
properly.
- Calling a method via $m->comp('comp:method') works just like
$comp->call_method('method').
- When an object contains other objects then the containing object's
constructor accepts parameters intended for the contained objects.
For example, the Interp object contains a Resolver object and Request
objects. The Interp's new method will accept constructor parameter
for both the Resolver and Request objects.
- The ApacheHandler args_method is now a per-object parameter.
- Mason is now much smarter about recompiling components. In general,
it can detect if compiler options for a compiled component are
different from the current options, and will recompile the component
if necessary. The exception to this is that with compiler parameters
which take callbacks (such as preprocess), Mason can only tell if such
a parameter is present, not whether the actual callback has changed.
- The ApacheHandler object will chown any files created during server
startup as needed.
[ BUG FIXES ]
- The <%args> section can now contain comments which contain the
string '=>' (reported by Chris Hutchinson).
- Fixed the longstanding bug that using print() or $r->print() causes
output/headers to appear out of order. You can now safely use these,
though we still recommend that you use Mason to send output.
- Filtered output now does appear when $m->abort() used. However, an
abort inside a component called via $m->scomp() still cause the output
generated by that component to disappear.
[ INTERNALS ]
- Output buffering and filtering is handled by the new
HTML::Mason::Buffer class.
- All fatal errors thrown during component execution are exception
objects in the HTML::Mason::Exception class hierarchy.
- The CGI GET/POST argument processing code has been simplified
(submitted by Ilmari Karonen).
- ApacheHandler now uses a special Resolver subclass to translate URIs
to component paths.
- Parameters passed to "set" accessors are now validated in the same
way as constructor parameters.
- The component requested and the arguments it was passed are now
properties of the Request object.
1.05 April 30, 2002
- Fixed improper handling of parameters for non-GET/POST
request. (submitted by Radu Greab)
- Fixed Interp to accept a resolver object param. (reported by Bojan
Jovanovic)
- Fixed infinite loop when calling $m->decline with // in dhandler
arg. (reported by Baldur Kristinsson)
1.04 October 30, 2001
- Fixed locale parser_version 0,8 problem. (submitted by Louis-David Mitterrand)
- Fixed inability to use '/' for comp_root. (reported by Doug Hunt)
- Fixed HTML::Mason::Parser::make_dirs dying when reload_file not
defined. (reported by Ivan E. Panchenko)
- Made error_process regexps more specific. (suggested by Vadim Belman)
- Fixed $m->count. (reported by David Wheeler)
- Fixed writing of object files in taint mode. (submitted by Barrie Slaymaker)
- Made it possible to run Makefile.PL without prompts.
1.03 May 17, 2001
- Made raw error message accessible from the new error display via
an unobtrusive link.
- Fixed Apache tests when started by a non-root user. (reported
by Barrie Slaymaker)
- Added short-circuits for Apache tests on Win32 and on systems with
Apache configurations that cannot be properly parsed. (reported by
Jindra Vavruska)
1.02 April 17, 2001
non-existent URL
- Fixed "keys" cache action which never worked as documented
(submitted by Scott Straley)
- Fixed source references on Win32 platforms by using text mode when
reading object file (submitted by Michael Shulman)
- Fixed various methods in FakeApache
- Remove final slash from system paths (component root, etc.) and
check that those paths are absolute
- Fixed all-text subcomponents, by bypassing the pure-text
optimization
- Quoted all hash strings in object file to reduce "Ambiguous use
of ..." warnings (suggested by Paul Schilling)
- Replaced */* with default-handler as recommended way to bypass Mason
(suggested by Dirk Koopman)
- Removed defunct pure text section in Administrators Guide (reported
by Michael Shulman)
0.71 September 14, 1999
- Logic of top_level_predicate was reversed in 0.7; fixed.
(reported by Tom Hughes, Eric Hammond)
- mc_suppress_http_header(0) was broken in 0.7; fixed.
(reported by Michael Alan Dorman)
- Fixed bug in parser section that determines whether % is at the
beginning of a line. (reported by Tom Hughes)
- Parser no longer inadvertently accepts argument names with
whitespace. (reported by Phillip Gwyn)
0.7 September 1, 1999
- Improved core implementation with two new classes,
HTML::Mason::Request and HTML::Mason::Component. Code is now cleaner
and more scalable, and the new APIs give developers control and
introspection over Mason's inner workings.
- Added documentation to accommodate new classes: created
Request.pod and Component.pod, and moved component developer's guide
(previously at Components.pod) to Devel.pod to avoid
confusion.
- Object files have changed significantly (they now return a
component object). Pre-0.7 object files will be detected and
automatically updated, unless you are running in reload file mode
in which case you are responsible for generating new object files.
- New <%def> section defines a subcomponent embedded inside a larger
component. This allows repeated code and HTML to be modularized
without affecting the global component namespace.
- <%args> section now accommodates optional comments for declarations
- Improved Perl translation of <%args> section (submitted by Ken
Williams)
- Autohandler and dhandler file names are now configurable
- Dhandlers, which formerly worked only in mod_perl mode, now work in
stand-alone mode as well
- Interp::exec is now re-entrant with all request specific information
having been moved to Request class.
- ** Reworked Parser API. parse is now called make_component, has a
simplified set of options, and returns a component object
directly. make is now called make_dirs.
- Source references now read from the object file, cleaner for a
variety of reasons. Preprocess and postprocess now work with source
references.
- Removed obsolete and undocumented Interp::vars and mc_var functions
- Simplified chown/getpwuid usage in handler.pl (submitted by Randal
Schwartz)
0.6.2 August 20, 1999
- Fixed problem with shared data cache locks over NFS (submitted by
Tom Hughes)
- Fixed mc_auto_comp, which never really worked as documented
- Fixed preloading for directories (submitted by Dennis Watson)
- Added back Utils::get_lock, which is used by content management
0.6.1 July 27, 1999
- Added warnings to convert-0.6.pl about occasional erroneous
component call syntax conversions (reported by Oleg Bartunov)
- Fixed conversion of <% mc_comp("/foo/$bar") %> (reported by Oleg
Bartunov)
- Fixed cache access under high concurrencies (reported by Oleg
Bartunov)
- Fixed uppercase <%PERL>, broken in 0.6 (reported by Daniel L. Jones)
- Fixed mc_suppress_http_header(0), broken in 0.6 (reported by Jim
Mortko)
0.6 July 16, 1999
- New <& &> tag provides a more convenient way to call components
inside HTML. mc_comp still works.
- The "perl_" prefix has been eliminated from section names: now
simply use <%init>, <%cleanup>, <%args>, etc. The old names still
work.
- The utility bin/convert0.6.pl converts existing components to use
the above new syntax.
- New autohandler feature finally provides an easy way to specify a
common template or behavior for a directory. An autohandler is invoked
just before any top-level components in its directory begins executing.
It can display header/footers, apply a filtering function, set up
globals, etc. A good complement to dhandlers.
- New <%once> section contains code that will be executed once when a
component is loaded. It is useful for defining persistent variables
and named subroutines.
- New <%filter> section and mc_call_self command allow you to arbitrarily
filter the output of the current component.
- New <%text> section allows you to turn off Mason processing for a
particular section of text.
- Implemented first installation test suite! [modus]
- HEAD optimization: we now automatically abort after headers are sent
on a HEAD request.
- New Parser make() utility traverses a tree of components, compiling
any out-of-date components into object files and reporting errors.
- New mc_comp_source command returns the source filename of this or
any component.
- mc_file now uses current component path by default for relative paths
if no static_file_root defined (suggested by John Landahl)
- Various previewer interface improvements
- Removed link tags in pods documentation due to 5.004 problems
- Took out previewer stub from Mason.pm to eliminate "subroutine
redefined" warning
- Updated makeconfig.pl to prefer GDBM_File, to avoid a bug in
Berkeley DB 1.x
- Cleaned and sped up interp hooks facility
- Stopped substituting control characters for section strings in Parser
( run in 1.832 second using v1.01-cache-2.11-cpan-71847e10f99 )