Theming: Add OCA.Theming Js for app interaction
This commit is contained in:
parent
5bf85b727b
commit
0b838b8eef
|
@ -39,3 +39,15 @@ $linkToCSS = \OC::$server->getURLGenerator()->linkToRoute(
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$linkToJs = \OC::$server->getURLGenerator()->linkToRoute(
|
||||||
|
'theming.Theming.getJavascript',
|
||||||
|
[
|
||||||
|
'v' => \OC::$server->getConfig()->getAppValue('theming', 'cachebuster', '0'),
|
||||||
|
]
|
||||||
|
);
|
||||||
|
\OCP\Util::addHeader(
|
||||||
|
'script',
|
||||||
|
[
|
||||||
|
'src' => $linkToJs,
|
||||||
|
], ''
|
||||||
|
);
|
||||||
|
|
|
@ -55,5 +55,10 @@ return ['routes' => [
|
||||||
'url' => '/loginbackground',
|
'url' => '/loginbackground',
|
||||||
'verb' => 'GET',
|
'verb' => 'GET',
|
||||||
],
|
],
|
||||||
|
[
|
||||||
|
'name' => 'Theming#getJavascript',
|
||||||
|
'url' => '/js/theming',
|
||||||
|
'verb' => 'GET',
|
||||||
|
],
|
||||||
]];
|
]];
|
||||||
|
|
||||||
|
|
|
@ -337,4 +337,26 @@ class ThemingController extends Controller {
|
||||||
$response->cacheFor(3600);
|
$response->cacheFor(3600);
|
||||||
return $response;
|
return $response;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* @NoCSRFRequired
|
||||||
|
* @PublicPage
|
||||||
|
*
|
||||||
|
* @return DataDownloadResponse
|
||||||
|
*/
|
||||||
|
public function getJavascript() {
|
||||||
|
$responseJS = '(function() {
|
||||||
|
OCA.Theming = {
|
||||||
|
name: ' . json_encode($this->template->getName()) . ',
|
||||||
|
url: ' . json_encode($this->template->getBaseUrl()) . ',
|
||||||
|
slogan: ' . json_encode($this->template->getSlogan()) . ',
|
||||||
|
color: ' . json_encode($this->template->getMailHeaderColor()) . ',
|
||||||
|
inverted: ' . json_encode($this->util->invertTextColor($this->template->getMailHeaderColor())) . ',
|
||||||
|
};
|
||||||
|
})();';
|
||||||
|
$response = new Http\DataDisplayResponse($responseJS);
|
||||||
|
$response->addHeader("Content-type","text/javascript");
|
||||||
|
$response->addHeader('Expires', date(\DateTime::RFC2822, $this->timeFactory->getTime()));
|
||||||
|
$response->cacheFor(3600);
|
||||||
|
return $response;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -700,4 +700,72 @@ class ThemingControllerTest extends TestCase {
|
||||||
$expected->addHeader('Expires', date(\DateTime::RFC2822, 123));
|
$expected->addHeader('Expires', date(\DateTime::RFC2822, 123));
|
||||||
@$this->assertEquals($expected, $this->themingController->getStylesheet());
|
@$this->assertEquals($expected, $this->themingController->getStylesheet());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testGetJavascript() {
|
||||||
|
$this->template
|
||||||
|
->expects($this->at(0))
|
||||||
|
->method('getName')
|
||||||
|
->willReturn("");
|
||||||
|
$this->template
|
||||||
|
->expects($this->at(1))
|
||||||
|
->method('getBaseUrl')
|
||||||
|
->willReturn("");
|
||||||
|
$this->template
|
||||||
|
->expects($this->at(2))
|
||||||
|
->method('getSlogan')
|
||||||
|
->willReturn("");
|
||||||
|
$this->template
|
||||||
|
->expects($this->at(3))
|
||||||
|
->method('getMailHeaderColor')
|
||||||
|
->willReturn("#000");
|
||||||
|
|
||||||
|
|
||||||
|
$expectedResponse = '(function() {
|
||||||
|
OCA.Theming = {
|
||||||
|
name: "",
|
||||||
|
url: "",
|
||||||
|
slogan: "",
|
||||||
|
color: "#000",
|
||||||
|
inverted: false,
|
||||||
|
};
|
||||||
|
})();';
|
||||||
|
$expected = new Http\DataDisplayResponse($expectedResponse);
|
||||||
|
$expected->addHeader("Content-type","text/javascript");
|
||||||
|
$expected->addHeader('Expires', date(\DateTime::RFC2822, $this->timeFactory->getTime()));
|
||||||
|
$expected->cacheFor(3600);
|
||||||
|
@$this->assertEquals($expected, $this->themingController->getJavascript());
|
||||||
|
}
|
||||||
|
public function testGetJavascriptInverted() {
|
||||||
|
$this->template
|
||||||
|
->expects($this->at(0))
|
||||||
|
->method('getName')
|
||||||
|
->willReturn("Nextcloud");
|
||||||
|
$this->template
|
||||||
|
->expects($this->at(1))
|
||||||
|
->method('getBaseUrl')
|
||||||
|
->willReturn("nextcloudurl");
|
||||||
|
$this->template
|
||||||
|
->expects($this->at(2))
|
||||||
|
->method('getSlogan')
|
||||||
|
->willReturn("awesome");
|
||||||
|
$this->template
|
||||||
|
->expects($this->any())
|
||||||
|
->method('getMailHeaderColor')
|
||||||
|
->willReturn("#ffffff");
|
||||||
|
|
||||||
|
$expectedResponse = '(function() {
|
||||||
|
OCA.Theming = {
|
||||||
|
name: "Nextcloud",
|
||||||
|
url: "nextcloudurl",
|
||||||
|
slogan: "awesome",
|
||||||
|
color: "#ffffff",
|
||||||
|
inverted: true,
|
||||||
|
};
|
||||||
|
})();';
|
||||||
|
$expected = new Http\DataDisplayResponse($expectedResponse);
|
||||||
|
$expected->addHeader("Content-type","text/javascript");
|
||||||
|
$expected->addHeader('Expires', date(\DateTime::RFC2822, $this->timeFactory->getTime()));
|
||||||
|
$expected->cacheFor(3600);
|
||||||
|
@$this->assertEquals($expected, $this->themingController->getJavascript());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue