X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=lib%2FMaypole.pm;h=587bdc7f56174babce89a7b31d69389bc598bbc0;hb=1ea25ed1ecc3c2baa71a985e8a94a55bb8f871f2;hp=e71c31f27f155b3fe9f3a41d178345fae071d069;hpb=b6e2413ee413ce21b28429c05bbcc3f516a0754a;p=maypole.git diff --git a/lib/Maypole.pm b/lib/Maypole.pm index e71c31f..587bdc7 100644 --- a/lib/Maypole.pm +++ b/lib/Maypole.pm @@ -7,7 +7,7 @@ use Maypole::Config; use Maypole::Constants; use Maypole::Headers; -our $VERSION = '2.05'; +our $VERSION = '2.10_pre2'; __PACKAGE__->mk_classdata($_) for qw( config init_done view_object ); __PACKAGE__->mk_accessors( @@ -34,7 +34,7 @@ sub setup { my $config = $calling_class->config; $config->model || $config->model("Maypole::Model::CDBI"); $config->model->require; - die "Couldn't load the model class $config->model: $@" if $@; + die "Couldn't load the model class $config->{model}: $@" if $@; $config->model->setup_database( $config, $calling_class, @_ ); for my $subclass ( @{ $config->classes } ) { no strict 'refs'; @@ -186,8 +186,7 @@ sub exception { return ERROR } sub parse_path { my $self = shift; $self->{path} ||= "frontpage"; - my @pi = split /\//, $self->{path}; - shift @pi while @pi and !$pi[0]; + my @pi = $self->{path} =~ m{([^/]+)/?}g; $self->{table} = shift @pi; $self->{action} = shift @pi; $self->{action} ||= "index"; @@ -223,6 +222,13 @@ sub send_output { die "Do not use Maypole directly; use Apache::MVC or similar"; } +# Session and Repeat Submission Handling + +sub make_random_id { + use Maypole::Session; + return Maypole::Session::generate_unique_id(); +} + =head1 NAME Maypole - MVC web application framework @@ -236,7 +242,7 @@ See L. This documents the Maypole request object. See the L, for a detailed guide to using Maypole. -Maypole is a Perl web application framework to Java's struts. It is +Maypole is a Perl web application framework similar to Java's struts. It is essentially completely abstracted, and so doesn't know anything about how to talk to the outside world. @@ -333,12 +339,15 @@ You should only need to define this method if you are writing a new Maypole backend. +=head3 param + +An accessor for request parameters. It behaves similarly to CGI::param() for +accessing CGI parameters. + =head3 params -Returns a hash of request parameters. The source of the parameters may -vary -depending on the Maypole backend, but they are usually populated from -request +Returns a hash of request parameters. The source of the parameters may vary +depending on the Maypole backend, but they are usually populated from request query string and POST data. B Where muliple values of a parameter were supplied, the @@ -462,6 +471,9 @@ This method first checks if the relevant model class can handle exceptions the user, or falls back to the default exception method of your Maypole application. +=head3 make_random_id + +returns a unique id for this request can be used to prevent or detect repeat submissions. =head3 handler @@ -489,11 +501,13 @@ Maypole is currently maintained by Simon Flack C Simon Cozens, C +Sebastian Riedel, C maintained Maypole from 1.99_01 to 2.04 + =head1 THANKS TO -Danijel Milicevic, Dave Slack, Jesse Sheidlower, Jody Belka, Marcus Ramberg, -Mickael Joanne, Randal Schwartz, Simon Flack, Steve Simms, Veljko Vidovic -and all the others who've helped. +Sebastian Riedel, Danijel Milicevic, Dave Slack, Jesse Sheidlower, Jody Belka, +Marcus Ramberg, Mickael Joanne, Randal Schwartz, Simon Flack, Steve Simms, +Veljko Vidovic and all the others who've helped. =head1 LICENSE