samkitano / laragrowl by SamKitano

Flash Notifications with jGrowl for Laravel
152
0
2
Package Data
Maintainer Username: SamKitano
Maintainer Contact: sam@samkitano.com (Sam Kitano)
Package Create Date: 2016-06-11
Package Last Update: 2016-06-12
Language: PHP
License: MIT
Last Refreshed: 2024-04-23 03:05:48
Package Statistics
Total Downloads: 152
Monthly Downloads: 0
Daily Downloads: 0
Total Stars: 0
Total Watchers: 2
Total Forks: 0
Total Open Issues: 0

Laravel Flash Messages with jGrowl

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

Method | Arguments | Description | Example | -------|-----------|-------------|----------------------| ::message | message, type, header, sticky, life, group | Displays a notification according to parameters. If type is not provided, theme will be "default". | Laragrowl::message('Welcome, User!', 'default', 'HI THERE') ::default| message, header, sticky | Displays a "default" themed notification. | Laragrowl::default('Welcome, User!'); ::info | message, header, sticky | Displays an "info" themed notification. Ideal for quickly provide an informational message. | Laragrowl::info('Please fill out this form') ::success | message, header, sticky | Displays a "success" themed notification. Ideal for quickly provide a success message. | Laragrowl::success('Data Saved!', 'SUCCESS!') ::warning | message, header, sticky | Displays a "warning" themed notification. Ideal for quickly provide a warning message. | Laragrowl::warning('FYI: Third party service is not available at this time.', 'HEY!') ::error | message, header, sticky | Displays an "error" themed notification. Ideal for quickly provide an error message. | Laragrowl::error('Validation Failed! Please correct form erros', 'ERROR', 'sticky')

Arguments

Argument | Type |Default value | Description | ---------|:----------:|:------:|:--------------| message | String | | The message to display. type | String | 'success' | The default theme for messages. Available: 'default', 'info', 'success', 'warning' and 'error'. header | String | '' | The message prefix, i.e. 'Error'. sticky | Boolean or String | False | Weather or not the message will display forever until closed. life | Integer or String | 6000 | Lifetime of a non-sticky message, in milisseconds. group | String | '' | An extra CSS selector useful to group messages.


License

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