]> git.decadent.org.uk Git - maypole.git/commitdiff
Empty session attribute, and get_session method added to Maypole.pm, get_session...
authorAaron Trevena <aaron.trevena@gmail.com>
Tue, 18 Oct 2005 10:16:38 +0000 (10:16 +0000)
committerAaron Trevena <aaron.trevena@gmail.com>
Tue, 18 Oct 2005 10:16:38 +0000 (10:16 +0000)
git-svn-id: http://svn.maypole.perl.org/Maypole/trunk@401 48953598-375a-da11-a14b-00016c27c3ee

lib/Maypole.pm

index 34446a2ad147b5ef3b651883486aabecb040be9e..cae420fea4bcf68d88ce41abdeafbfb15b167dbb 100644 (file)
@@ -20,7 +20,7 @@ __PACKAGE__->mk_classdata($_) for qw( config init_done view_object );
 __PACKAGE__->mk_accessors(
     qw( params query objects model_class template_args output path
         args action template error document_encoding content_type table
-        headers_in headers_out stash)
+        headers_in headers_out stash session)
 );
 __PACKAGE__->config( Maypole::Config->new() );
 __PACKAGE__->init_done(0);
@@ -119,10 +119,11 @@ sub handler_guts
     my $applicable = $self->is_model_applicable;
     
     $self->__setup_plain_template unless $applicable;
+
+    $self->session($self->call_get_session);
     
-    # We authenticate every request, needed for proper session management
     my $status;
-    
+
     eval { $status = $self->call_authenticate };
     
     if ( my $error = $@ ) 
@@ -300,6 +301,11 @@ sub call_authenticate
     return $self->authenticate($self);   
 }
 
+sub call_get_session {
+   my ($self) = @_;
+   return $self->get_session($self);
+}
+
 sub call_exception 
 {
     my ($self, $error) = @_;
@@ -339,21 +345,27 @@ sub additional_data { }
 
 sub authenticate { return OK }
 
+sub get_session { }
+
 sub exception { return ERROR }
 
+sub preprocess_path { };
+
 sub parse_path 
 {
     my ($self) = @_;
     
+    $self->preprocess_path;
+
     $self->path || $self->path('frontpage');
     
     my @pi = grep {length} split '/', $self->path;
     
-    $self->table(shift @pi);
+    $self->table || $self->table(shift @pi);
     
-    $self->action( shift @pi or 'index' );
+    $self->action || $self->action( shift @pi or 'index' );
     
-    $self->args(\@pi);
+    $self->args || $self->args(\@pi);
 }
 
 
@@ -540,8 +552,8 @@ Returns the request path
 
 =head3 parse_path
 
-Parses the request path and sets the C<args>, C<action> and C<table> 
-properties
+Parses the request path and sets the C<args>, C<action> and C<table>
+properties. Calls preprocess_path before parsing path and setting properties.
 
 =head3 make_path( %args or \%args or @args )
 
@@ -564,6 +576,18 @@ C<$additional> can be a string, an arrayref, or a hashref. An arrayref is
 expanded into extra path elements, whereas a hashref is translated into a query
 string. 
 
+=head3 preprocess_path
+
+Sometimes when you don't want to rewrite or over-ride parse_path but
+want to rewrite urls or extract data from them before it is parsed.
+
+This method is called after parse_location has populated the request
+information and before parse_path has populated the model and action
+information, and is passed the request object.
+
+You can set action, args or table in this method and parse_path will
+then leave those values in place or populate them if not present
+
 =head3 make_uri( @segments )
 
 Make a L<URI> object given table, action etc. Automatically adds
@@ -797,7 +821,7 @@ L<Maypole::Application>, L<Apache::MVC>, L<CGI::Maypole>.
 
 =head1 AUTHOR
 
-Maypole is currently maintained by Simon Flack C<simonflk#cpan.org>
+Maypole is currently maintained by Aaron Trevena
 
 =head1 AUTHOR EMERITUS