mirror of
https://github.com/BookStackApp/BookStack.git
synced 2024-10-01 01:36:00 -04:00
Added default favicon creation upon access.
This commit is contained in:
parent
48f1934387
commit
da42fc7457
@ -10,6 +10,7 @@ use BookStack\Entities\Queries\TopFavourites;
|
|||||||
use BookStack\Entities\Repos\BookRepo;
|
use BookStack\Entities\Repos\BookRepo;
|
||||||
use BookStack\Entities\Repos\BookshelfRepo;
|
use BookStack\Entities\Repos\BookshelfRepo;
|
||||||
use BookStack\Entities\Tools\PageContent;
|
use BookStack\Entities\Tools\PageContent;
|
||||||
|
use BookStack\Uploads\FaviconHandler;
|
||||||
use BookStack\Util\SimpleListOptions;
|
use BookStack\Util\SimpleListOptions;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
@ -127,4 +128,15 @@ class HomeController extends Controller
|
|||||||
{
|
{
|
||||||
return response()->view('errors.404', [], 404);
|
return response()->view('errors.404', [], 404);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Serve the application favicon.
|
||||||
|
* Ensures a 'favicon.ico' file exists at the web root location (if writable) to be served
|
||||||
|
* directly by the webserver in the future.
|
||||||
|
*/
|
||||||
|
public function favicon(FaviconHandler $favicons)
|
||||||
|
{
|
||||||
|
$favicons->restoreOriginalIfNotExists();
|
||||||
|
return response()->file($favicons->getPath());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,9 +7,12 @@ use Intervention\Image\ImageManager;
|
|||||||
|
|
||||||
class FaviconHandler
|
class FaviconHandler
|
||||||
{
|
{
|
||||||
|
protected string $path;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
protected ImageManager $imageTool
|
protected ImageManager $imageTool
|
||||||
) {
|
) {
|
||||||
|
$this->path = public_path('favicon.ico');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -17,8 +20,7 @@ class FaviconHandler
|
|||||||
*/
|
*/
|
||||||
public function saveForUploadedImage(UploadedFile $file): void
|
public function saveForUploadedImage(UploadedFile $file): void
|
||||||
{
|
{
|
||||||
$targetPath = public_path('favicon.ico');
|
if (!is_writeable($this->path)) {
|
||||||
if (!is_writeable($targetPath)) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -28,7 +30,7 @@ class FaviconHandler
|
|||||||
$bmpData = $image->encode('png');
|
$bmpData = $image->encode('png');
|
||||||
$icoData = $this->pngToIco($bmpData, 32, 32);
|
$icoData = $this->pngToIco($bmpData, 32, 32);
|
||||||
|
|
||||||
file_put_contents($targetPath, $icoData);
|
file_put_contents($this->path, $icoData);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -36,13 +38,30 @@ class FaviconHandler
|
|||||||
*/
|
*/
|
||||||
public function restoreOriginal(): void
|
public function restoreOriginal(): void
|
||||||
{
|
{
|
||||||
$targetPath = public_path('favicon.ico');
|
|
||||||
$original = public_path('icon.ico');
|
$original = public_path('icon.ico');
|
||||||
if (!is_writeable($targetPath)) {
|
if (!is_writeable($this->path)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
copy($original, $targetPath);
|
copy($original, $this->path);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Restore the original favicon image if no favicon image is already in use.
|
||||||
|
*/
|
||||||
|
public function restoreOriginalIfNotExists(): void
|
||||||
|
{
|
||||||
|
if (!file_exists($this->path)) {
|
||||||
|
$this->restoreOriginal();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the path to the favicon file.
|
||||||
|
*/
|
||||||
|
public function getPath(): string
|
||||||
|
{
|
||||||
|
return $this->path;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 11 KiB |
@ -40,6 +40,7 @@ use Illuminate\View\Middleware\ShareErrorsFromSession;
|
|||||||
|
|
||||||
Route::get('/status', [StatusController::class, 'show']);
|
Route::get('/status', [StatusController::class, 'show']);
|
||||||
Route::get('/robots.txt', [HomeController::class, 'robots']);
|
Route::get('/robots.txt', [HomeController::class, 'robots']);
|
||||||
|
Route::get('/favicon.ico', [HomeController::class, 'favicon']);
|
||||||
|
|
||||||
// Authenticated routes...
|
// Authenticated routes...
|
||||||
Route::middleware('auth')->group(function () {
|
Route::middleware('auth')->group(function () {
|
||||||
|
Loading…
Reference in New Issue
Block a user