Add themed manifest.json to theming app
Signed-off-by: Julius Haertl <jus@bitgrid.net>
This commit is contained in:
parent
b49ab065b7
commit
770aae42f6
|
@ -60,6 +60,12 @@ return ['routes' => [
|
|||
'url' => '/js/theming',
|
||||
'verb' => 'GET',
|
||||
],
|
||||
[
|
||||
'name' => 'Theming#getManifest',
|
||||
'url' => '/manifest/{app}',
|
||||
'verb' => 'GET',
|
||||
'defaults' => array('app' => 'core')
|
||||
],
|
||||
[
|
||||
'name' => 'Icon#getFavicon',
|
||||
'url' => '/favicon/{app}',
|
||||
|
|
|
@ -423,4 +423,39 @@ class ThemingController extends Controller {
|
|||
$response->cacheFor(3600);
|
||||
return $response;
|
||||
}
|
||||
|
||||
/**
|
||||
* @NoCSRFRequired
|
||||
* @PublicPage
|
||||
*
|
||||
* @return Http\JSONResponse
|
||||
*/
|
||||
public function getManifest($app) {
|
||||
$cacheBusterValue = $this->config->getAppValue('theming', 'cachebuster', '0');
|
||||
$responseJS = [
|
||||
'name' => $this->themingDefaults->getName(),
|
||||
'start_url' => $this->urlGenerator->getBaseUrl(),
|
||||
'icons' =>
|
||||
[
|
||||
[
|
||||
'src' => $this->urlGenerator->linkToRoute('theming.Icon.getTouchIcon',
|
||||
['app' => $app]) . '?v=' . $cacheBusterValue,
|
||||
'type'=> 'image/png',
|
||||
'sizes'=> '128x128'
|
||||
],
|
||||
[
|
||||
'src' => $this->urlGenerator->linkToRoute('theming.Icon.getFavicon',
|
||||
['app' => $app]) . '?v=' . $cacheBusterValue,
|
||||
'type' => 'image/svg+xml',
|
||||
'sizes' => '16x16'
|
||||
]
|
||||
],
|
||||
'display' => 'standalone'
|
||||
];
|
||||
$response = new Http\JSONResponse($responseJS);
|
||||
$response->addHeader('Expires', date(\DateTime::RFC2822, $this->timeFactory->getTime()));
|
||||
$response->addHeader('Pragma', 'cache');
|
||||
$response->cacheFor(3600);
|
||||
return $response;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -729,4 +729,53 @@ class ThemingControllerTest extends TestCase {
|
|||
$expected->cacheFor(3600);
|
||||
@$this->assertEquals($expected, $this->themingController->getJavascript());
|
||||
}
|
||||
|
||||
public function testGetManifest() {
|
||||
$this->config
|
||||
->expects($this->once())
|
||||
->method('getAppValue')
|
||||
->with('theming', 'cachebuster', '0')
|
||||
->willReturn('0');
|
||||
$this->themingDefaults
|
||||
->expects($this->any())
|
||||
->method('getName')
|
||||
->willReturn('Nextcloud');
|
||||
$this->urlGenerator
|
||||
->expects($this->at(0))
|
||||
->method('getBaseUrl')
|
||||
->willReturn('localhost');
|
||||
$this->urlGenerator
|
||||
->expects($this->at(1))
|
||||
->method('linkToRoute')
|
||||
->with('theming.Icon.getTouchIcon', ['app' => 'core'])
|
||||
->willReturn('touchicon');
|
||||
$this->urlGenerator
|
||||
->expects($this->at(2))
|
||||
->method('linkToRoute')
|
||||
->with('theming.Icon.getFavicon', ['app' => 'core'])
|
||||
->willReturn('favicon');
|
||||
$response = new Http\JSONResponse([
|
||||
'name' => 'Nextcloud',
|
||||
'start_url' => 'localhost',
|
||||
'icons' =>
|
||||
[
|
||||
[
|
||||
'src' => 'touchicon?v=0',
|
||||
'type'=> 'image/png',
|
||||
'sizes'=> '128x128'
|
||||
],
|
||||
[
|
||||
'src' => 'favicon?v=0',
|
||||
'type' => 'image/svg+xml',
|
||||
'sizes' => '16x16'
|
||||
]
|
||||
],
|
||||
'display' => 'standalone'
|
||||
]);
|
||||
$response->addHeader('Expires', date(\DateTime::RFC2822, $this->timeFactory->getTime()));
|
||||
$response->addHeader('Pragma', 'cache');
|
||||
$response->cacheFor(3600);
|
||||
$this->assertEquals($response, $this->themingController->getManifest('core'));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue