Source of file ManifestController.php
Size: 3,280 Bytes - Last Modified: 2021-03-22T10:26:20+00:00
/var/www/docs.ssmods.com/process/src/src/Controllers/ManifestController.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 | <?php namespace SilverStripePWA\Controllers; use SilverStripe\Control\Controller; use SilverStripe\SiteConfig\SiteConfig; use SilverStripe\Control\Director; class ManifestController extends Controller { /** * @var array */ private static $allowed_actions = [ 'index' ]; /** * Default controller action for the manifest.json file * * @return mixed */ public function index($url) { // Generate Manifest from ManifestSiteConfigExtension $config = SiteConfig::current_site_config(); $baseURL = Director::BaseURL(); $manifestContent = []; $manifestContent['start_url'] = $baseURL; if($config->ManifestName){ $manifestContent['name'] = $config->ManifestName; } if($config->ManifestShortName){ $manifestContent['short_name'] = $config->ManifestShortName; } if($config->ManifestDescription){ $manifestContent['description'] = $config->ManifestDescription; } if($config->ManifestColor){ $manifestContent['background_color'] = $config->ManifestColor; $manifestContent['theme_color'] = $config->ManifestColor; } if($config->ManifestOrientation){ $manifestContent['orientation'] = $config->ManifestOrientation; } if($config->ManifestDisplay){ $manifestContent['display'] = $config->ManifestDisplay; } // Resample icon for different sizes (Desktop icon, mobile icon etc.) $logo = $config->ManifestLogo(); if($logo && $logo->exists()){ $mime = $logo->getMimeType(); $manifestContent['icons'] = [ [ 'src' => $logo->Fill(48,48)->Link(), 'sizes' => '48x48', 'type' => $mime ], [ 'src' => $logo->Fill(72,72)->Link(), 'sizes' => '72x72', 'type' => $mime ], [ 'src' => $logo->Fill(96,96)->Link(), 'sizes' => '96x96', 'type' => $mime ], [ 'src' => $logo->Fill(144,144)->Link(), 'sizes' => '144x144', 'type' => $mime ], [ 'src' => $logo->Fill(168,168)->Link(), 'sizes' => '168x168', 'type' => $mime ], [ 'src' => $logo->Fill(192,192)->Link(), 'sizes' => '192x192', 'type' => $mime ], [ 'src' => $logo->Fill(256,256)->Link(), 'sizes' => '256x256', 'type' => $mime ], [ 'src' => $logo->Fill(512,512)->Link(), 'sizes' => '512x512', 'type' => $mime ] ]; } $this->getResponse()->addHeader('Content-Type', 'application/manifest+json; charset="utf-8"'); return json_encode($manifestContent); } } |