Merge pull request #3619 from nextcloud/fix-scss-for-apps
Fix SCSS usage in apps
This commit is contained in:
commit
ead9a10cc5
|
@ -88,7 +88,8 @@ class CSSResourceLocator extends ResourceLocator {
|
|||
if (is_file($root.'/'.$file)) {
|
||||
if($this->scssCacher !== null) {
|
||||
if($this->scssCacher->process($root, $file, $app)) {
|
||||
$this->append($root, $this->scssCacher->getCachedSCSS($app, $file), false);
|
||||
|
||||
$this->append($root, $this->scssCacher->getCachedSCSS($app, $file), false, true, true);
|
||||
return true;
|
||||
} else {
|
||||
$this->logger->warning('Failed to compile and/or save '.$root.'/'.$file, ['app' => 'core']);
|
||||
|
@ -101,4 +102,51 @@ class CSSResourceLocator extends ResourceLocator {
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public function append($root, $file, $webRoot = null, $throw = true, $scss = false) {
|
||||
if (!$scss) {
|
||||
parent::append($root, $file, $webRoot, $throw);
|
||||
} else {
|
||||
if (!$webRoot) {
|
||||
$tmpRoot = $root;
|
||||
/*
|
||||
* traverse the potential web roots upwards in the path
|
||||
*
|
||||
* example:
|
||||
* - root: /srv/www/apps/myapp
|
||||
* - available mappings: ['/srv/www']
|
||||
*
|
||||
* First we check if a mapping for /srv/www/apps/myapp is available,
|
||||
* then /srv/www/apps, /srv/www/apps, /srv/www, ... until we find a
|
||||
* valid web root
|
||||
*/
|
||||
do {
|
||||
if (isset($this->mapping[$tmpRoot])) {
|
||||
$webRoot = $this->mapping[$tmpRoot];
|
||||
break;
|
||||
}
|
||||
|
||||
if ($tmpRoot === '/') {
|
||||
$webRoot = '';
|
||||
$this->logger->error('ResourceLocator can not find a web root (root: {root}, file: {file}, webRoot: {webRoot}, throw: {throw})', [
|
||||
'app' => 'lib',
|
||||
'root' => $root,
|
||||
'file' => $file,
|
||||
'webRoot' => $webRoot,
|
||||
'throw' => $throw ? 'true' : 'false'
|
||||
]);
|
||||
break;
|
||||
}
|
||||
$tmpRoot = dirname($tmpRoot);
|
||||
} while(true);
|
||||
|
||||
}
|
||||
|
||||
if ($throw && $tmpRoot === '/') {
|
||||
throw new ResourceNotFoundException($file, $webRoot);
|
||||
}
|
||||
|
||||
$this->resources[] = array($tmpRoot, $webRoot, $file);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -117,7 +117,38 @@ abstract class ResourceLocator {
|
|||
*/
|
||||
protected function append($root, $file, $webRoot = null, $throw = true) {
|
||||
if (!$webRoot) {
|
||||
$webRoot = $this->mapping[$root];
|
||||
$tmpRoot = $root;
|
||||
/*
|
||||
* traverse the potential web roots upwards in the path
|
||||
*
|
||||
* example:
|
||||
* - root: /srv/www/apps/myapp
|
||||
* - available mappings: ['/srv/www']
|
||||
*
|
||||
* First we check if a mapping for /srv/www/apps/myapp is available,
|
||||
* then /srv/www/apps, /srv/www/apps, /srv/www, ... until we find a
|
||||
* valid web root
|
||||
*/
|
||||
do {
|
||||
if (isset($this->mapping[$tmpRoot])) {
|
||||
$webRoot = $this->mapping[$tmpRoot];
|
||||
break;
|
||||
}
|
||||
|
||||
if ($tmpRoot === '/') {
|
||||
$webRoot = '';
|
||||
$this->logger->error('ResourceLocator can not find a web root (root: {root}, file: {file}, webRoot: {webRoot}, throw: {throw})', [
|
||||
'app' => 'lib',
|
||||
'root' => $root,
|
||||
'file' => $file,
|
||||
'webRoot' => $webRoot,
|
||||
'throw' => $throw ? 'true' : 'false'
|
||||
]);
|
||||
break;
|
||||
}
|
||||
$tmpRoot = dirname($tmpRoot);
|
||||
} while(true);
|
||||
|
||||
}
|
||||
$this->resources[] = array($root, $webRoot, $file);
|
||||
|
||||
|
|
|
@ -46,17 +46,26 @@ class SCSSCacher {
|
|||
/** @var SystemConfig */
|
||||
protected $systemConfig;
|
||||
|
||||
/** @var string */
|
||||
protected $serverRoot;
|
||||
|
||||
/**
|
||||
* @param ILogger $logger
|
||||
* @param IAppData $appData
|
||||
* @param IURLGenerator $urlGenerator
|
||||
* @param SystemConfig $systemConfig
|
||||
* @param string $serverRoot
|
||||
*/
|
||||
public function __construct(ILogger $logger, IAppData $appData, IURLGenerator $urlGenerator, SystemConfig $systemConfig) {
|
||||
public function __construct(ILogger $logger,
|
||||
IAppData $appData,
|
||||
IURLGenerator $urlGenerator,
|
||||
SystemConfig $systemConfig,
|
||||
$serverRoot) {
|
||||
$this->logger = $logger;
|
||||
$this->appData = $appData;
|
||||
$this->urlGenerator = $urlGenerator;
|
||||
$this->systemConfig = $systemConfig;
|
||||
$this->serverRoot = $serverRoot;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -74,9 +83,7 @@ class SCSSCacher {
|
|||
|
||||
$path = implode('/', $path);
|
||||
|
||||
$webDir = explode('/', $file);
|
||||
array_pop($webDir);
|
||||
$webDir = implode('/', $webDir);
|
||||
$webDir = substr($path, strlen($this->serverRoot)+1);
|
||||
|
||||
try {
|
||||
$folder = $this->appData->getFolder($app);
|
||||
|
|
|
@ -218,7 +218,8 @@ class TemplateLayout extends \OC_Template {
|
|||
\OC::$server->getLogger(),
|
||||
\OC::$server->getAppDataDir('css'),
|
||||
\OC::$server->getURLGenerator(),
|
||||
\OC::$server->getSystemConfig()
|
||||
\OC::$server->getSystemConfig(),
|
||||
\OC::$SERVERROOT
|
||||
);
|
||||
} else {
|
||||
$SCSSCacher = null;
|
||||
|
|
Loading…
Reference in New Issue