aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Calviño Sánchez <danxuliu@gmail.com>2017-08-10 11:33:12 +0200
committerDaniel Calviño Sánchez <danxuliu@gmail.com>2017-08-10 12:37:57 +0200
commitdb52e861dd438a78ff492d7ca04209e83d5d8c89 (patch)
tree47cb8e7e4c6fc797d161ecc64d951be3609ee8fa
parent986dffdae45402b9642f51565c608cb7d85ac817 (diff)
downloadnextcloud-server-db52e861dd438a78ff492d7ca04209e83d5d8c89.tar.gz
nextcloud-server-db52e861dd438a78ff492d7ca04209e83d5d8c89.zip
Provide "server.css" URL in ThemingController response
Pull request #5429 made cached SCSS files depend on a hash of the base URL, so the "/css/core/server.css" file does no longer exist. The "server.css" URL must be known by the Theming app in order to update the stylesheets when previewing the changes to the theme, so the DataResponse from the controller now provides the full URL to the "server.css" file that has to be reloaded (if any). The "server.css" URL provided by the response will be taken into account by the JavaScript front-end in a following commit. Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
-rw-r--r--apps/theming/lib/Controller/ThemingController.php13
-rw-r--r--apps/theming/tests/Controller/ThemingControllerTest.php39
2 files changed, 48 insertions, 4 deletions
diff --git a/apps/theming/lib/Controller/ThemingController.php b/apps/theming/lib/Controller/ThemingController.php
index 225673079a3..b409d309f4d 100644
--- a/apps/theming/lib/Controller/ThemingController.php
+++ b/apps/theming/lib/Controller/ThemingController.php
@@ -73,6 +73,8 @@ class ThemingController extends Controller {
private $appData;
/** @var SCSSCacher */
private $scssCacher;
+ /** @var IURLGenerator */
+ private $urlGenerator;
/**
* ThemingController constructor.
@@ -87,6 +89,7 @@ class ThemingController extends Controller {
* @param ITempManager $tempManager
* @param IAppData $appData
* @param SCSSCacher $scssCacher
+ * @param IURLGenerator $urlGenerator
*/
public function __construct(
$appName,
@@ -98,7 +101,8 @@ class ThemingController extends Controller {
IL10N $l,
ITempManager $tempManager,
IAppData $appData,
- SCSSCacher $scssCacher
+ SCSSCacher $scssCacher,
+ IURLGenerator $urlGenerator
) {
parent::__construct($appName, $request);
@@ -110,6 +114,7 @@ class ThemingController extends Controller {
$this->tempManager = $tempManager;
$this->appData = $appData;
$this->scssCacher = $scssCacher;
+ $this->urlGenerator = $urlGenerator;
}
/**
@@ -172,7 +177,8 @@ class ThemingController extends Controller {
[
'data' =>
[
- 'message' => $this->l10n->t('Saved')
+ 'message' => $this->l10n->t('Saved'),
+ 'serverCssUrl' => $this->urlGenerator->linkTo('', $this->scssCacher->getCachedSCSS('core', '/core/css/server.scss'))
],
'status' => 'success'
]
@@ -303,7 +309,8 @@ class ThemingController extends Controller {
'data' =>
[
'value' => $value,
- 'message' => $this->l10n->t('Saved')
+ 'message' => $this->l10n->t('Saved'),
+ 'serverCssUrl' => $this->urlGenerator->linkTo('', $this->scssCacher->getCachedSCSS('core', '/core/css/server.scss'))
],
'status' => 'success'
]
diff --git a/apps/theming/tests/Controller/ThemingControllerTest.php b/apps/theming/tests/Controller/ThemingControllerTest.php
index 960ce03b139..5e6e43ca3cb 100644
--- a/apps/theming/tests/Controller/ThemingControllerTest.php
+++ b/apps/theming/tests/Controller/ThemingControllerTest.php
@@ -70,6 +70,8 @@ class ThemingControllerTest extends TestCase {
private $appData;
/** @var SCSSCacher */
private $scssCacher;
+ /** @var IURLGenerator */
+ private $urlGenerator;
public function setUp() {
$this->request = $this->createMock(IRequest::class);
@@ -85,6 +87,7 @@ class ThemingControllerTest extends TestCase {
->willReturn(123);
$this->tempManager = \OC::$server->getTempManager();
$this->scssCacher = $this->createMock(SCSSCacher::class);
+ $this->urlGenerator = $this->createMock(IURLGenerator::class);
$this->themingController = new ThemingController(
'theming',
@@ -96,7 +99,8 @@ class ThemingControllerTest extends TestCase {
$this->l10n,
$this->tempManager,
$this->appData,
- $this->scssCacher
+ $this->scssCacher,
+ $this->urlGenerator
);
return parent::setUp();
@@ -129,12 +133,23 @@ class ThemingControllerTest extends TestCase {
->method('t')
->with($message)
->willReturn($message);
+ $this->scssCacher
+ ->expects($this->once())
+ ->method('getCachedSCSS')
+ ->with('core', '/core/css/server.scss')
+ ->willReturn('/core/css/someHash-server.scss');
+ $this->urlGenerator
+ ->expects($this->once())
+ ->method('linkTo')
+ ->with('', '/core/css/someHash-server.scss')
+ ->willReturn('/nextcloudWebroot/core/css/someHash-server.scss');
$expected = new DataResponse(
[
'data' =>
[
'message' => $message,
+ 'serverCssUrl' => '/nextcloudWebroot/core/css/someHash-server.scss',
],
'status' => 'success',
]
@@ -448,6 +463,16 @@ class ThemingControllerTest extends TestCase {
->method('undo')
->with('MySetting')
->willReturn('MyValue');
+ $this->scssCacher
+ ->expects($this->once())
+ ->method('getCachedSCSS')
+ ->with('core', '/core/css/server.scss')
+ ->willReturn('/core/css/someHash-server.scss');
+ $this->urlGenerator
+ ->expects($this->once())
+ ->method('linkTo')
+ ->with('', '/core/css/someHash-server.scss')
+ ->willReturn('/nextcloudWebroot/core/css/someHash-server.scss');
$expected = new DataResponse(
[
@@ -455,6 +480,7 @@ class ThemingControllerTest extends TestCase {
[
'value' => 'MyValue',
'message' => 'Saved',
+ 'serverCssUrl' => '/nextcloudWebroot/core/css/someHash-server.scss',
],
'status' => 'success'
]
@@ -481,6 +507,16 @@ class ThemingControllerTest extends TestCase {
->method('undo')
->with($value)
->willReturn($value);
+ $this->scssCacher
+ ->expects($this->once())
+ ->method('getCachedSCSS')
+ ->with('core', '/core/css/server.scss')
+ ->willReturn('/core/css/someHash-server.scss');
+ $this->urlGenerator
+ ->expects($this->once())
+ ->method('linkTo')
+ ->with('', '/core/css/someHash-server.scss')
+ ->willReturn('/nextcloudWebroot/core/css/someHash-server.scss');
$folder = $this->createMock(ISimpleFolder::class);
$file = $this->createMock(ISimpleFile::class);
$this->appData
@@ -503,6 +539,7 @@ class ThemingControllerTest extends TestCase {
[
'value' => $value,
'message' => 'Saved',
+ 'serverCssUrl' => '/nextcloudWebroot/core/css/someHash-server.scss',
],
'status' => 'success'
]