The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Mojolicious::Plugin::BootstrapAlerts - Bootstrap alerts for your web app

VERSION

version 0.07

SYNOPSIS

In your startup:

  sub startup {
      my $self = shift;

      # do some Mojolicious stuff
      $self->plugin( 'BootstrapAlerts' );

      # more Mojolicious stuff
  }

In your controller:

$self->notify( 'success', 'message' );
$self->notify( 'danger', [qw/item1 item2/] );

In your template:

<%= notifications() %>

HELPERS

This plugin adds two helper methods to your web application:

notify

Add a new notification. The first parameter is the notification type, one of these

  • success

  • info

  • warning

  • danger (alias: error)

The second parameter is the notification message. If it is a plain string, that's the message. If the parameter is an array reference an unordered list will be created.

A third parameter is optional. That is a hashreference to configure the notification:

# this notification is not dismissable
$self->notify( 'success', 'message', { dismissable => 0 } );

# this notification has an ordered list
$self->notify( 'danger', [qw/item1 item2/], { ordered_list => 1 } );

notifications

Creates the HTML for the notifications. The notifications call in the SYNOPSIS will create

<div class="alert alert-success alert-dismissable">
  <button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>
  message
</div>
<div class="alert alert-danger alert-dismissable">
  <button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>
  <ul>
      <li>item1</li>
      <li>item2</li>
  </ul>
</div>

METHODS

register

Called when registering the plugin. On creation, the plugin accepts a hashref to configure the plugin.

# load plugin, alerts are dismissable by default
$self->plugin( 'BootstrapAlerts' );

Configuration

$self->plugin( 'BootstrapAlerts' => {
    dismissable => 0,          # notifications aren't dismissable by default anymore
    auto_inject => 1,          # inject notifications into your HTML output, no need for "notifications()" anymore
    after       => $selector,  # CSS selector to find the element after that the notifications should be injected
    before      => $selector,  # CSS selector to find the element before that the notifications should be injected
});

NOTES

You have to include the Bootstrap CSS and JavaScript yourself!

This plugin uses the stash key __NOTIFICATIONS__, so you should avoid using this stash key for your own purposes.

Known Issues

Mojo::DOM html_unescapes HTML entities when the HTML is parsed. So the injection might fail if you have a HTML entity in the element before/after that the notifications are injected.

AUTHOR

Renee Baecker <reneeb@cpan.org>

COPYRIGHT AND LICENSE

This software is Copyright (c) 2013 by Renee Baecker.

This is free software, licensed under:

The Artistic License 2.0 (GPL Compatible)