X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;ds=sidebyside;f=lib%2FMaypole%2FWorkflow.pod;fp=lib%2FMaypole%2FWorkflow.pod;h=0000000000000000000000000000000000000000;hb=bf26883dc1ef2013406a5777f60eb007574905f5;hp=5668b3400a8972805a2a7f9787491df911c9d026;hpb=4b6fca4879b54b12587eca6d76d865817fe5e34d;p=maypole.git diff --git a/lib/Maypole/Workflow.pod b/lib/Maypole/Workflow.pod deleted file mode 100644 index 5668b34..0000000 --- a/lib/Maypole/Workflow.pod +++ /dev/null @@ -1,200 +0,0 @@ -=pod - -=head1 NAME - -Maypole::Workflow - Describes the progress of a request through Maypole - -=head1 SYNOPSIS - - config $h - | - Maypole $r - Apache::Request | - +---- $r->get_request ---+ - $ar | - | - $r->parse_location - | - $r->is_applicable - | - BeerDB::Beer $r->call_authenticate - ->authenticate ------------+------------ $r->authenticate - | - $r->additional_data - | - $r->model_class->process($r) - | - $r->view_object->process($r) - - -=head1 DESCRIPTION - -An application based on C will provide an Apache handler, -and eventually deliver a page. This document explains how that happens, -and how to influence it. We'll use the C project as our example. - -=head2 Initialize class - -When the first request comes in, the class will call its own -C method. This creates a new view object, sets up inheritance -relationships between the model classes and their parent, and so on. - -=head2 Construction - -Once we have initialized, the handler obtains the configuration for your -class, and puts it into a new object. We'll call this a request -I for the purposes of this document; it will be a new C -object. - -=head2 Getting the request - -Next, the handler calls C on the new object to have it -store a copy of the C. Of course, if you're not using -Apache, you might want to subclass this method to return something that -looks like an C object, and possibly also subclass the -next stage too to get more control over what methods are called on your -C-lookalike. C is expected to put the object in the -C slot of the request object. - -=head2 Handling the URL - -Typically, the details of the request will be passed in the URL. This is -done with the C method, which is expected to populate -several slots of the request object. First, C and C -should be populated with the name of the table and the action parts of -the URL. Any other arguments should be placed in a listref in the -C slot, and GET and POST parameters should be arranged into a hash -and placed in the C and C slots, respectively. - -Some people may not like the idea of passing everything around in the -URL; this is the method to override for you. Of course, you'll also need -to provide your own default templates to construct links using your -preferred format. - -=head2 Is this an applicable URL? - -Next, the C method works out if this is actually -something that C should care about - whether the class -exists in the application, whether it supports the given action, and so -on. The action is "supported" if it exists in the model class (or its -ancestors) and is marked with the C<:Exported> attribute; this stops web -users from firing off random subroutines in your code. - -This should return an Apache status code; C if the request should -proceed, C if it should be passed on to the default handlers, -or whatever other codes for permissions problems. - -=head2 Are we allowed to do this? - -We then look for an appropriate C method to call; first -it will try calling the C method of the model class, or, -if that does not exist, the C method on itself. By -default, this allows access to everyone for everything. Similarly, this -should return an Apache status code. - -=head2 Add any additional data to the request - -The open-ended C method allows any additional fiddling -with the request object before it is despatched. Specifically, it allows -you to add to the C slot, which is a hash of arguments to -be added to the template. - -=head2 Ask model for widget set - -Asking the model class to C the current request allows it to do -any work it needs for the given command, and populate the C and -C