store preset in asset:// rather than admin plugin

This commit is contained in:
Andy Miller
2020-04-19 23:52:23 -06:00
parent e3c73c30a5
commit e1b571a655
5 changed files with 26 additions and 1319 deletions

View File

@@ -615,7 +615,7 @@ class AdminPlugin extends Plugin
$assets->setCssPipeline(false);
// Compile a missing preset.css file
$preset_css = 'plugin://admin/themes/grav/css-compiled/preset.css';
$preset_css = 'asset://admin-preset.css';
$preset_path = $this->grav['locator']->findResource($preset_css);
if (!$preset_path) {
$this->grav['admin-whitebox']->compileScss($this->config->get('plugins.admin.whitebox'));

View File

@@ -2165,20 +2165,20 @@ class AdminController extends AdminBaseController
$preview = $this->data['preview'] ?? false;
$data = ['color_scheme' => $this->data['whitebox']['color_scheme'] ?? null];
$output_file = $preview ? 'admin-preset.css' : 'admin-preset__tmp.css';
if ($preview) {
// send through some tmp filenames
[$compile_status, $msg] = $this->grav['admin-whitebox']->compileScss($data, ['filename' => 'preset_tmp']);
} else {
[$compile_status, $msg] = $this->grav['admin-whitebox']->compileScss($data);
}
$options = [
'input' => 'plugin://admin/themes/grav/scss/preset.scss',
'output' => 'asset://' .$output_file
];
[$compile_status, $msg] = $this->grav['admin-whitebox']->compileScss($data, $options);
$previewSuffix = $preview ? '_tmp' : '';
$json_response = [
'status' => $compile_status ? 'success' : 'error',
'message' => ($preview ? 'Preview ' : 'SCSS ') . $msg,
'files' => [
'color_scheme' => $this->grav['twig']->twig_vars['base_url_relative']. "/user/plugins/admin/themes/grav/css-compiled/preset${previewSuffix}.css"
'color_scheme' => Utils::url($options['output'])
]
];

View File

@@ -2,6 +2,7 @@
namespace Grav\Plugin\Admin;
use Grav\Common\Grav;
use RocketTheme\Toolbox\ResourceLocator\UniformResourceLocator;
class Whitebox
{
@@ -14,7 +15,10 @@ class Whitebox
$this->scss = new ScssCompiler();
}
public function compileScss($config, $options = ['filename' => 'preset'])
public function compileScss($config, $options = [
'input' => 'plugin://admin/themes/grav/scss/preset.scss',
'output' => 'asset://admin-preset.css'
])
{
if (is_array($config)) {
$color_scheme = $config['color_scheme'];
@@ -23,17 +27,20 @@ class Whitebox
}
if ($color_scheme) {
/** @var UniformResourceLocator $locator */
$locator = $this->grav['locator'];
$admin_in_base = $locator->findResource('plugin://admin/themes/grav/scss');
$custom_out_base = $locator->findResource('plugin://admin/themes/grav/css-compiled');
$input_scss = $locator->findResource($options['input']);
$output_css = $locator->findResource(($options['output']), true, true);
$preset_in_path = $admin_in_base .'/preset.scss';
$preset_out_path = $custom_out_base . '/'. $options['filename'] . '.css';
$input_path = dirname($input_scss);
$imports = [$locator->findResource('plugin://admin/themes/grav/scss')];
if (!in_array($input_path, $imports)) {
$imports[] = $input_path;
}
try {
$this->compilePresetScss($color_scheme, $preset_in_path, $preset_out_path);
$this->compilePresetScss($color_scheme, $input_scss, $output_css, $imports);
} catch (\Exception $e) {
return [false, $e->getMessage()];
}
@@ -44,12 +51,12 @@ class Whitebox
return [false, ' Could not be recompiled, missing color scheme...'];
}
public function compilePresetScss($colors, $in_path, $out_path)
public function compilePresetScss($colors, $in_path, $out_path, $imports)
{
$compiler = $this->scss->reset();
$compiler->setVariables($colors['colors'] + $colors['accents']);
$compiler->setImportPaths(dirname($in_path));
$compiler->setImportPaths($imports);
$compiler->compile($in_path, $out_path);

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{% do assets.addCss(theme_url~'/css-compiled/nucleus.css') %}
{% do assets.addCss(theme_url~'/css-compiled/template.css') %}
{% do assets.addCss(theme_url~'/css-compiled/preset.css') %}
{% do assets.addCss(base_url_frontend~'/assets/admin-preset.css') %}
{% if config.plugins.admin.google_fonts %}
{% do assets.addCss(theme_url~'/css-compiled/fonts.css') %}
{% else %}