NAME
ClearPress::view - MVC view superclass
VERSION
$Revision: 470 $
SYNOPSIS
my $oView = ClearPress::view::<subclass>->new({util => $oUtil});
$oView->model($oModel);
print $oView->decor?
$oDecorator->header
:
q[Content-type: ].$oView->content_type."\n\n";
print $oView->render;
print $oView->decor?$oDecorator->footer:q[];
DESCRIPTION
View superclass for the ClearPress framework
SUBROUTINES/METHODS
new - constructor
my $oView = ClearPress::view::<subclass>->new({util => $oUtil, ...});
init - additional post-constructor hook
setup_filters - adds default tt_filters, called by ->new()
locales - hashref of locale lexicons to feed Locale::Maketext::Lexicon
Defaults are:
{
'*' => [Gettext => sprintf q[%s/po/*.po], $util->data_path],
'en' => ['Auto'],
}
determine_aspect - URI processing
sets the aspect based on the HTTP Accept: header
- useful for API access setting Accept: text/xml
template_name - the name of the template to load, based on view class and method_name. Can be overridden
my $sTemplateName = $oView->template_name;
$oView->template_name($sOverriddenName);
method_name - the name of the method to invoke on the model, based on action and aspect
my $sMethodName = $oView->method_name;
add_warning
$oView->add_warning($sWarningMessage);
warnings - an arrayref of warning strings set for this view
my $arWarningStrings = $oView->warnings;
authorised - Verify authorisation for this view
This should usually take into account $self->action which suggests
read or write access.
my $bIsAuthorised = $oView->authorised;
render - generates and returns content for this view
my $sViewOutput = $oView->render;
streamed_aspects - an arrayref of aspects which perform streamed output.
Implemented in subclass:
sub streamed_aspects {
return [qw(list list_xml list_json)];
}
sub list { ... }
sub list_xml { ... }
sub list_json { ... }
list - stub for entity list actions
create - A default model creation/save method
$oView->create;
Populates $oSelf->model with its expected parameters from the CGI
block, then calls $oModel->create;
add - stub for single-entity-creation actions
edit - stub for single-entity editing
read - stub for single-entity-view actions
update - stub for entity update actions
delete - stub for entity delete actions
tt - a configured Template (TT2) object
my $tt = $oView->tt;
tt_opts - a hashref of options for Template::Toolkit construction
e.g.
sub tt_opts {
return {
COMPILE_EXT => '.ttc',
COMPILE_DIR => '/ramdisk',
};
}
add_tt_filter - add a named template toolkit content filter, usually performed in init
sub init {
my $self = shift;
$self->add_tt_filter('foo_filter',
sub {
my $string = shift;
$string =~ s/foo/bar/smxg;
return $string;
});
return;
}
tt_filters - hashref of configured template toolkit filters
my $hrFilters = $oView->tt_filters;
util - get/set accessor for utility object
$oView->util($oUtil);
my $oUtil = $oView->util;
model - get/set accessor for data model object
$oView->model($oModel);
my $oModel = $oView->model;
action - get/set accessor for the action being performed on this view
$oView->action($sAction);
my $sAction = $oView->action;
aspect - get/set accessor for the aspect being performed on this view
$oView->aspect($sAction);
my $sAction = $oView->aspect;
content_type - get/set accessor for content mime-type (Content-Type HTTP header)
$oView->content_type($sContentType);
my $sContentType = $oView->content_type;
charset - get/set accessor for content charset (Content-Type header charset) - default UTF-8
$oView->charset($sCharSet);
my $sCharSet = $oView->charset;
decor - get/set accessor for page decoration toggle
$oView->decor($bDecorToggle);
my $bDecorToggle = $oView->decor;
streamed - current aspect is streamed, based on @{streamed_aspects}
my $bStreamedResponse = $oView->streamed;
entity_name - get/set accessor for the entity_name
Usually set by the controller, after processing the request. Used for
remapping requests to classes (specifically things of the form
application::(model|view)::something::somethingelse .
$oView->entity_name($sEntityName);
my $sEntityName = $oView->entity_name;
actions - templated output for available actions
my $sActionOutput = $oView->actions;
redirect - Apache internal redirect via mod-perl subrequest
$oView->redirect($sURL);
$oView->redirect($sURL, $sStatus); # optional status
list_xml - default passthrough to list for xml service
read_xml - default passthrough to read for xml service
create_xml - default passthrough to create for xml service
update_xml - default passthrough to update for xml service
delete_xml - default passthrough to delete for xml service
list_ajax - default passthrough to list for ajax service
read_ajax - default passthrough to read for ajax service
create_ajax - default passthrough to create for ajax service
update_ajax - default passthrough to update for ajax service
delete_ajax - default passthrough to delete for ajax service
list_json - default passthrough to list for json service
read_json - default passthrough to read for json service
create_json - default passthrough to create for json service
update_json - default passthrough to update for json service
delete_json - default passthrough to delete for json service
list_csv - default passthrough to list for csv service
read_csv - default passthrough to read for csv service
create_csv - default passthrough to create for csv service
update_csv - default passthrough to update for csv service
delete_csv - default passthrough to delete for csv service
options_ajax - default passthrough to options for customised options calls
options_csv - default passthrough to options for customised options calls
options_json - default passthrough to options for customised options calls
options_xml - default passthrough to options for customised options calls
init - post-constructor initialisation hook for subclasses
headers - an HTTP::Headers object for responses
my $oHeaders = $oView->headers;
$oView->headers->header('Status', 500); # usually symbolic named values from HTTP::Status
process_template - process a template with standard parameters
Process template.tt2 with standard parameters, output to stdout.
$oView->process_template('template.tt2');
Process template.tt2 with standard parameters plus extras, output to
stdout.
$oView->process_template('template.tt2', {extra=>'params'});
Process template.tt2 with standard plus extra parameters and output
into $to_scalar.
$oView->process_template('template.tt2', {extra=>'params'}, $to_scalar);
output_buffer - For streamed output: queue a string for output
$oView->output_buffer(q[my string]);
$oView->output_buffer(@aStrings);
output_prepend - prepend something for output - usually headers
$oView->output_prepend(q[my string]);
$oView->output_prepend(@aStrings);
output_end - For streamed output: flag no more output and flush buffer
$oView->output_end;
output_finished - For streamed output: flag there's no more output
$oView->output_finished(1);
$oViwe->output_finished(0);
output_flush - For streamed output: flush output buffer to STDOUT
$oView->output_flush;
output_reset - clear data pending output
$oView->output_reset;
autoescape - turn auto-escaping of input on/off, usually in a subclass
If you're producing applications of moderate complexity, you almost
certainly want to disable autoescaping and handle it more cleverly
yourself. Subclass ClearPress::view and set self->autoescape to zero
or override the subroutine:
sub autoescape { return 0; }
decorator - get/set accessor for decorator object for cases where a view needs to reset & resend the decorated header. Set by the controller during $view->render()
$oView->decorator($oDecorator);
my $oDecorator = $oView->decorator();
DIAGNOSTICS
CONFIGURATION AND ENVIRONMENT
Set $ClearPress::view::DEBUG_L10N = 1 to report missing locali[zs]ation strings.
Set $ClearPress::view::DEBUG_OUTPUT = 1 to report output buffer operations.
Set $ClearPress::view::TRAP_REDIR_OVERFLOW = 1024 to enable experimental redirect header overflow handling after that many bytes
DEPENDENCIES
- base
- strict
- warnings
- Class::Accessor
- Template
- Template::Filters
- HTML::Entities
- XML::Simple
- ClearPress::util
- Carp
- English
- POSIX
INCOMPATIBILITIES
BUGS AND LIMITATIONS
AUTHOR
Roger Pettett, <rpettett@cpan.org>
LICENSE AND COPYRIGHT
Copyright (C) 2008 Roger Pettett
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.8 or, at your option, any later version of Perl 5 you may have available.