mirror of
https://github.com/BookStackApp/BookStack.git
synced 2025-04-23 12:20:21 +00:00
Support custom commands via logical theme system
Added initial work to support registering commands through the logical theme system. Includes docs changes and example. Not yet covered via testing.
This commit is contained in:
parent
4ddbc9556b
commit
cdaad2f40e
3 changed files with 58 additions and 0 deletions
|
@ -2,8 +2,11 @@
|
|||
|
||||
namespace BookStack\Console;
|
||||
|
||||
use BookStack\Facades\Theme;
|
||||
use BookStack\Theming\ThemeService;
|
||||
use Illuminate\Console\Scheduling\Schedule;
|
||||
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
|
||||
use Symfony\Component\Console\Command\Command;
|
||||
|
||||
class Kernel extends ConsoleKernel
|
||||
{
|
||||
|
@ -35,6 +38,13 @@ class Kernel extends ConsoleKernel
|
|||
*/
|
||||
protected function commands()
|
||||
{
|
||||
// Default framework command loading from 'Commands' directory
|
||||
$this->load(__DIR__ . '/Commands');
|
||||
|
||||
// Load any user commands that have been registered via the theme system.
|
||||
$themeService = $this->app->make(ThemeService::class);
|
||||
foreach ($themeService->getRegisteredCommands() as $command) {
|
||||
$this->registerCommand($command);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,11 +3,17 @@
|
|||
namespace BookStack\Theming;
|
||||
|
||||
use BookStack\Auth\Access\SocialAuthService;
|
||||
use Symfony\Component\Console\Command\Command;
|
||||
|
||||
class ThemeService
|
||||
{
|
||||
protected $listeners = [];
|
||||
|
||||
/**
|
||||
* @var Command[]
|
||||
*/
|
||||
protected $commands = [];
|
||||
|
||||
/**
|
||||
* Listen to a given custom theme event,
|
||||
* setting up the action to be ran when the event occurs.
|
||||
|
@ -43,6 +49,22 @@ class ThemeService
|
|||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Register a new custom artisan command to be available.
|
||||
*/
|
||||
public function registerCommand(Command $command)
|
||||
{
|
||||
$this->commands[] = $command;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the custom commands that have been registered.
|
||||
*/
|
||||
public function getRegisteredCommands(): array
|
||||
{
|
||||
return $this->commands;
|
||||
}
|
||||
|
||||
/**
|
||||
* Read any actions from the set theme path if the 'functions.php' file exists.
|
||||
*/
|
||||
|
|
|
@ -77,6 +77,32 @@ Theme::listen(ThemeEvents::APP_BOOT, function($app) {
|
|||
});
|
||||
```
|
||||
|
||||
## Custom Commands
|
||||
|
||||
The logical theme system supports adding custom [artisan commands](https://laravel.com/docs/8.x/artisan) to BookStack. These can be registered in your `functions.php` file by calling `Theme::registerCommand($command)`, where `$command` is an instance of `\Symfony\Component\Console\Command\Command`.
|
||||
|
||||
Below is an example of registering a command that could then be ran using `php artisan bookstack:meow` on the command line.
|
||||
|
||||
```php
|
||||
<?php
|
||||
|
||||
use BookStack\Facades\Theme;
|
||||
use Illuminate\Console\Command;
|
||||
|
||||
class MeowCommand extends Command
|
||||
{
|
||||
protected $signature = 'bookstack:meow';
|
||||
protected $description = 'Say meow on the command line';
|
||||
|
||||
public function handle()
|
||||
{
|
||||
$this->line('Meow there!');
|
||||
}
|
||||
}
|
||||
|
||||
Theme::registerCommand(new MeowCommand);
|
||||
```
|
||||
|
||||
## Custom Socialite Service Example
|
||||
|
||||
The below shows an example of adding a custom reddit socialite service to BookStack.
|
||||
|
|
Loading…
Add table
Reference in a new issue