diff --git a/controllers/SystemController.php b/controllers/SystemController.php index 88177b5b..a609a688 100644 --- a/controllers/SystemController.php +++ b/controllers/SystemController.php @@ -38,6 +38,28 @@ class SystemController extends BaseController return $response->withRedirect($this->AppContainer->get('UrlManager')->ConstructUrl($this->GetEntryPageRelative())); } + public function Manifest(Request $request, Response $response, array $args) + { + $data = explode('#', base64_decode($request->getQueryParams()['data'])); + + $manifest = [ + 'name' => $data[0] . ' | Grocy', + 'short_name' => $data[0] . ' | Grocy', + 'icons' => [[ + 'src' => './img/icon-1024.png', + 'sizes'=> '1024x1024', + 'type' => 'image/png' + ]], + 'start_url' => $data[1], + 'background_color' => '#333131', + 'theme_color' => '#333131', + 'display' => 'standalone' + ]; + + $response->getBody()->write(json_encode($manifest)); + return $response->withHeader('Content-Type', 'application/json'); + } + private function GetEntryPageRelative() { if (defined('GROCY_ENTRY_PAGE')) diff --git a/public/manifest.json b/public/manifest.json deleted file mode 100644 index 3761dd49..00000000 --- a/public/manifest.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "Grocy", - "short_name": "Grocy", - "icons": [ - { - "src": "./img/icon-1024.png", - "sizes": "1024x1024", - "type": "image/png" - } - ], - "start_url": "../", - "background_color": "#333131", - "theme_color": "#333131", - "display": "standalone" -} diff --git a/routes.php b/routes.php index e89b11e7..9e2d1a88 100644 --- a/routes.php +++ b/routes.php @@ -9,6 +9,7 @@ $app->group('', function (RouteCollectorProxy $group) { // System routes $group->get('/', '\Grocy\Controllers\SystemController:Root')->setName('root'); $group->get('/about', '\Grocy\Controllers\SystemController:About'); + $group->get('/manifest', '\Grocy\Controllers\SystemController:Manifest'); $group->get('/barcodescannertesting', '\Grocy\Controllers\SystemController:BarcodeScannerTesting'); // Login routes diff --git a/views/layout/default.blade.php b/views/layout/default.blade.php index 10669240..46ce60ab 100644 --- a/views/layout/default.blade.php +++ b/views/layout/default.blade.php @@ -16,7 +16,7 @@ sizes="32x32" href="{{ $U('/img/icon-32.png?v=', true) }}{{ $version }}"> + href="{{ $U('/manifest') . '?data=' . base64_encode($__env->yieldContent('title') . '#' . $U($_SERVER['REQUEST_URI'])) }}">