X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=lib%2FMaypole.pm;h=5837848df1c59e3ebeebec65aab5ef94dff1d744;hb=29550a30ca082a8f1f1d0cb1b4a92eb39bc3dd84;hp=ab05605105bdde76df8a486519ae46e8099b15e7;hpb=ef9ebe8ef9785b0fec3e3b20e70212e701f1c397;p=maypole.git diff --git a/lib/Maypole.pm b/lib/Maypole.pm index ab05605..5837848 100644 --- a/lib/Maypole.pm +++ b/lib/Maypole.pm @@ -12,7 +12,7 @@ use URI::QueryParam; use NEXT; use File::MMagic::XS qw(:compat); -our $VERSION = '2.11_pre2'; +our $VERSION = '2.11'; our $mmagic = File::MMagic::XS->new(); # proposed privacy conventions: @@ -401,11 +401,16 @@ Constructs a very minimal new Maypole request object. sub new { my ($class) = @_; - my $self = bless { - template_args => {}, config => $class->config, }, $class; + + $self->stash({}); + $self->params({}); + $self->query({}); + $self->template_args({}); + $self->args([]); + $self->objects([]); return $self; } @@ -453,20 +458,14 @@ sub handler : method { $self->status(Maypole::Constants::OK()); # set the default $self->__call_hook('start_request_hook'); return $self->status unless $self->status == Maypole::Constants::OK(); - die "status undefined after start_request_hook()" unless defined $self->status; - $self->get_session; $self->get_user; - my $status = $self->handler_guts; - return $status unless $status == OK; - # TODO: require send_output to return a status code $self->send_output; - return $status; } @@ -492,7 +491,14 @@ to the method sub component { my ( $r, $path ) = @_; - my $self = bless { parent => $r, config => $r->{config}, template_args => {}, }, ref $r; + my $self = bless { parent => $r, config => $r->{config}, } , ref $r; + $self->stash({}); + $self->params({}); + $self->query({}); + $self->template_args({}); + $self->args([]); + $self->objects([]); + $self->get_user; my $url = URI->new($path); warn "path : $path\n"; @@ -1140,6 +1146,24 @@ If the first item in C<$self-Eargs> can be Cd by the model class, it will be removed from C and the retrieved object will be added to the C list. See L for more information. + +=item object + +Alias to get/set the first/only model object. The object will be accessible +in the view templates. + +When used to set the object, will overwrite the request objects +with a single object. + +=cut + +sub object { + my ($r,$object) = @_; + $r->objects([$object]) if ($object); + return undef unless $r->objects(); + return $r->objects->[0]; +} + =item template_args $self->template_args->{foo} = 'bar'; @@ -1148,7 +1172,7 @@ Get/set a hash of template variables. =item stash -A place to put custom application data. Not used by Maypole itself. +A place to put custom application data. Not used by Maypole itself. =item template