GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages


Manual Reference Pages  -  CATALYST::PLUGIN::STATUSMESSAGE (3)

.ds Aq ’

NAME

Catalyst::Plugin::StatusMessage - Handle passing of status (success and error) messages between screens of a web application.

CONTENTS

SYNOPSIS

In MyApp.pm:



    use Catalyst qr/
        StatusMessage
    /;



In controller where you want to save a message for display on the next page (here, once the delete action taken is complete, we are redirecting to a list page to show the status [we don’t want to leave the delete action in the browser URL]):



   $c->response->redirect($c->uri_for($self->action_for(list),
        {mid => $c->set_status_msg("Deleted widget")}));



Or, to save an error message:



   $c->response->redirect($c->uri_for($self->action_for(list),
        {mid => $c->set_error_msg("Error deleting widget")}));



Then, in the controller action that corresponds to the redirect above:



    sub list :Path {
        my ($self, $c) = @_;
        ...
        $c->load_status_msgs;
        ...
    }



And, to display the output (here using Template Toolkit):



    ...
    <span class="message">[% status_msg %]</span>
    <span class="error">[% error_msg %]</span>
    ...



DESCRIPTION

There are a number of ways people commonly use to pass status messages between screens in a web application.
o Using $c->stash: The stash only exists for a single request, so this approach can leave the wrong URL in the user’s browser.
o Using $c->flash: The flash feature does provide a mechanism where the application can redirect to an appropriate URL, but it can also lead to a race condition where the wrong status message is displayed in the wrong browser window or tab (and can therefore be confusing to the users of your application).
o Query parameters in the URL: This suffers from issues related to long/ugly URLs and leaves the message displayed even after a browser refresh.
This plugin attempts to address these issues through the following mechanisms:
o Stores messages in the $c->session so that the application is free to redirect to the appropriate URL after an action is taken.
o Associates a random 8-digit token with each message, so it’s completely unambiguous what message should be shown in each window/tab.
o Only requires that the token (not the full message) be included in the redirect URL.
o Automatically removes the message after the first time it is displayed. That way, if users hit refresh in their browsers they only see the messages the first time.

METHODS

    load_status_msgs

Load both messages that match the token parameter on the URL (e.g., http://myserver.com/widgits/list?mid=1234567890) into the stash for display by the viewer.

In general, you will want to include this in an auto or base (if using Chained dispatch) controller action. Then, if you have a template wrapper page that displays both "status_msg and error_msg", you can automatically and safely send status messages to any related controller action.

CONFIGURABLE OPTIONS

    session_prefix

The location inside $c->session where messages will be stored. Defaults to "status_msg".

    token_param

The name of the URL param that holds the token on the page where you want to retrieve/display the status message. Defaults to "mid".

    status_msg_stash_key

The name of the stash key where success status messages are loaded when $c->load_status_msgs is called. Defaults to status_msg.

    error_msg_stash_key

The name of the stash key where error messages are loaded when $c->load_status_msgs is called. Defaults to error_msg.

    Configuration Example

Here is a quick example showing how Catalyst::Plugin::StatusMessage can be configured in



    # Configure Catalyst::Plugin::StatusMessage
    __PACKAGE__->config(
        Plugin::StatusMessage => {
            session_prefix          => my_status_msg,
            token_param             => my_mid,
            status_msg_stash_key    => my_status_msg,
            error_msg_stash_key     => my_error_msg,
        }
    );



INTERNALS

Note: You normally shouldn’t need any of the information in this section to use Catalyst::Plugin::StatusMessage.

    get_error_msg

A dynamically generated accessor to retrieve saved error messages

    get_status_msg

A dynamically generated accessor to retrieve saved status messages

    set_error_msg

A dynamically generated accessor to save error messages

    set_status_msg

A dynamically generated accessor to save status messages

    _get_cfg

Subref that handles default values and lets them be overriden from the MyApp configuration.

    get_status_message_by_type

Fetch the requested message type from the user’s session

    set_status_message_by_type

Save a message to the user’s session

    load_status_msgs

Load both messages that match the token param (mid=###) into the stash for display by the view.

    make_status_message_get_set_methods_for_type

Called at startup to install getters and setters for each type of message (status & error)

AUTHOR

Kennedy Clark, hkclark@cpan.org

With many thanks to Matt Trout (MST) for coaching on the details of Catalyst Plugins and for most of the magic behind the current implementation.

COPYRIGHT

This library is free software. You can redistribute it and/or modify it under the same terms as Perl itself.
Search for    or go to Top of page |  Section 3 |  Main Index


perl v5.20.3 CATALYST::PLUGIN::STATUSMESSAGE (3) 2012-05-16

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.