Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
Catalyst::Plugin::StatUsersContributed Perl Catalyst::Plugin::StatusMessage(3)

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

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.

perl v5.24.1			  2012-05-16Catalyst::Plugin::StatusMessage(3)

NAME | SYNOPSIS | DESCRIPTION | METHODS | CONFIGURABLE OPTIONS | INTERNALS | AUTHOR | COPYRIGHT

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=Catalyst::Plugin::StatusMessage&sektion=3&manpath=FreeBSD+12.1-RELEASE+and+Ports>

home | help