samkitano/laragrowl

Flash Notifications with jGrowl for Laravel

v1.0 2016-06-12 08:44 UTC

This package is not auto-updated.

Last update: 2024-11-09 20:22:54 UTC


README

Latest Version on Packagist Software License Build Status Total Downloads

All the awesomeness and functionality of jGrowl made simple, for your Laravel project.

jGrowl is "an unobtrusive notification system for web applications", by Stan Lemon. If you are not acquainted with this marvelous notification system, I encourage you to pay a visit and read the documentation.

I find this notification system to be primus inter pares. Very well documented and mantained, "unobtrusive" as advertised, lightweight, flexible, and easy to use. Since I constantly use it, particularly in the Admin sections of my projects, I wrote Laragrowl to easily include it in my Laravel apps.

The main goal of Laragrowl, rather than fully exploit jGrowl's capabilities, is to provide an out-of-the-box, easy-to-use, consistent notification system within Laravel. I believe this is fully achieved with single-liners like Laragrowl::success('Your model has been updated');.

Furthermore, with Laravel's awesome ability to use Aliases for the facades, you can even "rename" Laragrowl into something like Notify or Inform. I.e. Inform::error('Validation Failed'). Whatever suits your taste.

Requirements

-Laravel >= 5.2.X
-PHP >= 5.6
-jQuery >= 1.9.0

Installation

1 - Require with Composer: composer require samkitano/laragrowl

2 - Include the service provider in the 'providers' array within config/app.php.

'providers' => [
    Kitano\Laragrowl\LaragrowlServiceProvider::class,
];

3 - Scroll down config/app.php and add an alias of your convenience (i.e. 'Notify') for the facade:

'aliases' => [
    'Notify' => Kitano\Laragrowl\Laragrowl::class,
];

3 - At this point, you must decide whether to a) download jGrowl; b) use a CDN; or c) publish the included version of jGrowl (1.4.5)

a) Download jGrowl, copy the files to a directory of your convenience and include them in your template:

<!DOCTYPE html>
<html>
    <head>
        ...
        <link href="path_to_your_downloaded_jGrowl_css_files" rel="stylesheet" type="text/css"/>
        ...
    </head>

    <body>
        ...
        <!-- Place jQuery Here -->
        <script src="path_to_your_downloaded_jGrowl_js_files"></script>
        ...
    </body>
</html>

b) Using a CDN:

<!DOCTYPE html>
<html>
    <head>
      ...
      <link rel="stylesheet" type="text/css" href="//cdnjs.cloudflare.com/ajax/libs/jquery-jgrowl/1.4.1/jquery.jgrowl.min.css" />
	  <!-- Place Your Theme Here -->
	  ...
    </head>

    <body>
        ...
        <!-- Place jQuery Here -->
        <script src="https//cdnjs.cloudflare.com/ajax/libs/jquery-jgrowl/1.4.1/jquery.jgrowl.min.js"></script>
        ...
    </body>
</html>

If you decide to download, or to use a CDN, you'll have to provide your own styling for the notifications. A basic theme is included in this package in src\assets\css\jquery.jgrowl.theme.css Feel free to use it "as is", or as a boilerplate to suit your own needs.

c) Publish included jGrowl version:

php artisan vendor:publish --provider="Kitano\Laragrowl\LaragrowlServiceProvider" --tag=assets

4 - Include the CSS files within your master template <head> section, and the core jGrowl script file right before the closing </body> tag.

<!DOCTYPE html>
<html>
    <head>
        <title>Laragrowl</title>
        <link href="{{ url('vendor/css/jquery.jgrowl.min.css') }}" rel="stylesheet" type="text/css">
        <link href="{{ url('vendor/css/jquery.jgrowl.theme.min.css') }}" rel="stylesheet" type="text/css">
    <head>

    <body>
        <script src="your.jquery.version.js"></script>
        <script src="{{ url('vendor/js/jquery.jgrowl.min.js') }}"></script>
    </body>

</html>

5 - Publish the message view:

php artisan vendor:publish --provider="Kitano\Laragrowl\LaragrowlServiceProvider" --tag=views

6 - Include the view after the jGrowl <script> tag in your master template:

	<body>
		<script src="your.jquery.version"></script>
		<script src="{{ url('vendor/js/jquery.jgrowl.min.js) }}"></script>

		@include('vendor.laragrowl.message')
	</body>

REMEMBER: jGrowl is a jQuery plugin, so you MUST have jQuery loaded before your jGrowl source.

If you are comfortable with elixir, and/or you like to master your own assets, you know what to do next.

By all means, feel free to modify the provided view resources\vendor\laragrowl\message.blade.php to fit your own requirements.

Usage

Where? Where you'd usually place a Session::flash('important message').

How? You can either use the facade Laragrowl::message or the alias you have provided (if so):

// Examples
public function store()
{
	...

	// PICK YOUR FLAVOUR

	// With an Alias, like "Notify"
	Notify::message('Your stuff has been stored.', 'success');

	// With the Facade
	Laragrowl::message('Your stuff has been stored', 'success');

	// Using available methods to declare the message type
	Laragrowl::default('Your stuff has been stored');
	Laragrowl::success('Your stuff has been stored');
	Laragrowl::error('Your stuff was NOT stored');
	Laragrowl::warning('Your form contains errors, check fields');
	Laragrowl::info('You have a neww message');

	...
}

Methods

Arguments

License

Laragrowl is open-sourced software licensed under the MIT license.