devonab / filament-easy-footer
A simple plugin to display a customizable footer in your filament application!
Fund package maintenance!
Devonab
Requires
- php: ^8.1|^8.2|^8.3|^8.4
- filament/filament: ^3.0
- spatie/laravel-package-tools: ^1.15.0
Requires (Dev)
- larastan/larastan: ^2.9||^3.0
- laravel/pint: ^1.0
- nunomaduro/collision: ^8.1.1||^7.10.0
- orchestra/testbench: ^10.0.0||^9.0.0||^8.22.0
- pestphp/pest: ^2.20|^3.7
- pestphp/pest-plugin-arch: ^2.0|^v3.0.0
- pestphp/pest-plugin-laravel: ^2.0|^v3.1.0
- pestphp/pest-plugin-livewire: ^2.1|^v3.0.0
README
This filament Plugin provides an easy and flexible way to add a customizable footer to your FilamentPHP application. This plugin integrates seamlessly with Filament's admin interface, enabling you to enhance your application's user experience with a good looking footer.
Navigation
- Installation
- Usage
- Configurations
- Testing
- Contributing
- Changelog
- Security Vulnerabilities
- Credits
- License
Installation
First, you can start to install the package via composer:
composer require devonab/filament-easy-footer
You can publish the config file with:
php artisan vendor:publish --tag="filament-easy-footer-config"
Optionally, you can publish the views using
php artisan vendor:publish --tag="filament-easy-footer-views"
This is the contents of the published config file:
return [ 'app_name' => env('APP_NAME', 'Filament Footer'), 'github' => [ 'repository' => env('GITHUB_REPOSITORY', ''), 'token' => env('GITHUB_TOKEN', ''), 'cache_ttl' => env('GITHUB_CACHE_TTL', 3600) ], ];
Usage
To start using this plugin, simply add it to the Filament provider's plugin array.
use Devonab\FilamentEasyFooter\EasyFooterPlugin; ->plugins([ EasyFooterPlugin::make(), ])
Configurations
Enable or Disable the Footer
You can enable or disable the footer entirely using the following configuration:
use Devonab\FilamentEasyFooter\EasyFooterPlugin; ->plugins([ EasyFooterPlugin::make() ->footerEnabled() // true by default, ]);
Without this configuration, the footer will be enabled by default.
Footer position
You can choose the position of the footer by using this configuration :
use Devonab\FilamentEasyFooter\EasyFooterPlugin; ->plugins([ EasyFooterPlugin::make() ->withFooterPosition('footer'), ])
You can choose between 3 positions, represented by their corresponding render hooks
footer
: panels::footer (by default)sidebar
: panels::sidebar.nav.endsidebar.footer
: panels::sidebar.footer
use Devonab\FilamentEasyFooter\EasyFooterPlugin; ->plugins([ EasyFooterPlugin::make() ->withFooterPosition('footer'), ])
use Devonab\FilamentEasyFooter\EasyFooterPlugin; ->plugins([ EasyFooterPlugin::make() ->withFooterPosition('sidebar'), ])
use Devonab\FilamentEasyFooter\EasyFooterPlugin; ->plugins([ EasyFooterPlugin::make() ->withFooterPosition('sidebar.footer'), ])
Custom sentence
By default, the plugin will display the name of your application (configured from your .ENV) next to the copyright. You can change the phrase by publishing the plugin configuration file.
If you prefer a more personalized approach, you can use the following method:
use Devonab\FilamentEasyFooter\EasyFooterPlugin; ->plugins([ EasyFooterPlugin::make() ->withSentence('your sentence'), ])
The method accepts a string or HTMLString as a parameter. With this, you can get the result you want. For example, for the result shown in the image above :
use Devonab\FilamentEasyFooter\EasyFooterPlugin; ->plugins([ EasyFooterPlugin::make() ->withSentence(new HtmlString('<img src="https://static.cdnlogo.com/logos/l/23/laravel.svg" style="margin-right:.5rem;" alt="Laravel Logo" width="20" height="20"> Laravel')) , ])
The authorized tags are as follows: <strong><img><a><em><span><b><i><small>
.
Show GitHub version
You can show the GitHub version of your application by using this configuration :
use Devonab\FilamentEasyFooter\EasyFooterPlugin; ->plugins([ EasyFooterPlugin::make() ->withGithub(showLogo: true, showUrl: true) ])
- showLogo : Display the GitHub logo next to the version
- showUrl : Add an
<a>
tag to the Github URL around the logo
To make this one work, you need to add this keys to our .env file :
GITHUB_REPOSITORY=user/name-of-the-repo GITHUB_TOKEN= # Recommended but not compulsory for all repos, required for private repos GITHUB_CACHE_TTL= # in seconds, 3600 by default
If needed, you can generate a token here. The token need to have at least the read-only
permission on the "Contents" scope in Repository permissions.
Load time
If you want to display the page load time, you can use this configuration :
use Devonab\FilamentEasyFooter\EasyFooterPlugin; ->plugins([ EasyFooterPlugin::make() ->withLoadTime(), ])
You can also display a prefix by using this configuration :
use Devonab\FilamentEasyFooter\EasyFooterPlugin; ->plugins([ EasyFooterPlugin::make() ->withLoadTime('This page loaded in'), ])
Custom logo with link
Custom logo with link
You can add a custom logo with optional link and text to the footer by using this configuration:
use Devonab\FilamentEasyFooter\EasyFooterPlugin; ->plugins([ EasyFooterPlugin::make() ->withLogo( 'https://static.cdnlogo.com/logos/l/23/laravel.svg', // Path to logo 'https://laravel.com' // URL for logo link (optional) ) ])
You can customize the logo further with optional text and height:
use Devonab\FilamentEasyFooter\EasyFooterPlugin; ->plugins([ EasyFooterPlugin::make() ->withLogo( 'https://static.cdnlogo.com/logos/l/23/laravel.svg', // Path to logo 'https://laravel.com', // URL for logo link (optional) 'Powered by Laravel', // Text to display (optional) 35 // Logo height in pixels (default: 20) ) ])
If you don't need the link, you can pass null
for the second parameter:
use Devonab\FilamentEasyFooter\EasyFooterPlugin; ->plugins([ EasyFooterPlugin::make() ->withLogo( 'https://static.cdnlogo.com/logos/l/23/laravel.svg', // Path to logo null, // No link null, // No text 60 // Logo height in pixels ) ])
Links
You can add custom links (3 links max) to the footer by using this configuration :
use Devonab\FilamentEasyFooter\EasyFooterPlugin; ->plugins([ EasyFooterPlugin::make() ->withLinks([ ['title' => 'About', 'url' => 'https://example.com/about'], ['title' => 'CGV', 'url' => 'https://example.com/cgv'], ['title' => 'Privacy Policy', 'url' => 'https://example.com/privacy-policy'] ]), ])
Border on top
You can add a border on the top of the footer by using this configuration :
use Devonab\FilamentEasyFooter\EasyFooterPlugin; ->plugins([ EasyFooterPlugin::make() ->withBorder(), ])
Hiding from specific pages
By default, the footer is also showed on the 3 auth pages : admin/login, admin/forgot-password and admin/register. You can hide it by using this configuration :
use Devonab\FilamentEasyFooter\EasyFooterPlugin; ->plugins([ EasyFooterPlugin::make() ->hiddenFromPagesEnabled(), ])
If you would like to hide the footer on other pages, you can use this configuration :
use Devonab\FilamentEasyFooter\EasyFooterPlugin; ->plugins([ EasyFooterPlugin::make() ->hiddenFromPagesEnabled() ->hiddenFromPages(['sample-page', 'another-page', 'admin/login', 'admin/forgot-password', 'admin/register']), ])
Note that anything set in hiddenFromPages()
will override the default behavior.
Testing
You can run the test with this command
composer test
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security Vulnerabilities
Please review our security policy on how to report security vulnerabilities.
Credits
License
The MIT License (MIT). Please see License File for more information.