The Gitlab instance will be restarted on Monday April 28th at 2AM. There will be a short interruption of service.

Skip to content
Snippets Groups Projects
Commit 12a1712d authored by Chris Hallberg's avatar Chris Hallberg
Browse files

LESS and SCSS now have an active boolean. Toggling off switched to CSS,...

LESS and SCSS now have an active boolean. Toggling off switched to CSS, toggling on activates dynamic CSS and automatically cancels out matching CSS files (combined.less -> combined.css).
parent e21494d9
No related merge requests found
......@@ -341,7 +341,7 @@ class Initializer
$resources->addLessCss($currentThemeInfo['less']);
}
if (isset($currentThemeInfo['scss'])) {
$resources->addSassCss($currentThemeInfo['scss']);
$resources->addScssCss($currentThemeInfo['scss']);
}
if (isset($currentThemeInfo['css'])) {
$resources->addCss($currentThemeInfo['css']);
......
......@@ -44,13 +44,25 @@ class ResourceContainer
* @var array
*/
protected $less = array();
/**
* Sass CSS files
* Less CSS active boolean
*
* @var array
*/
protected $sass = array();
protected $lessActive = false;
/**
* scss CSS files
*
* @var array
*/
protected $scss = array();
/**
* SCSS CSS active boolean
*
* @var array
*/
protected $scssActive = false;
/**
* CSS files
......@@ -99,25 +111,35 @@ class ResourceContainer
if (!is_array($less) && !is_a($less, 'Traversable')) {
$less = array($less);
}
foreach ($less as $current) {
$this->less[] = $current;
$this->lessActive = !isset($less['active']) || $less['active'] === true;
if ($this->lessActive) {
unset($less['active']);
foreach ($less as $index=>$current) {
$this->less[$index] = $current;
$this->removeCSS($current);
}
}
}
/**
* Add a Sass CSS file.
* Add a scss CSS file.
*
* @param array|string $sass Sass CSS file (or array of Sass CSS files) to add
* @param array|string $scss scss CSS file (or array of scss CSS files) to add
*
* @return void
*/
public function addSassCss($sass)
public function addScssCss($scss)
{
if (!is_array($sass) && !is_a($sass, 'Traversable')) {
$sass = array($sass);
if (!is_array($scss) && !is_a($scss, 'Traversable')) {
$scss = array($scss);
}
foreach ($sass as $current) {
$this->sass[] = $current;
$this->scssActive = !isset($scss['active']) || $scss['active'] === true;
if ($this->scssActive) {
unset($scss['active']);
foreach ($scss as $index=>$current) {
$this->scss[$index] = $current;
$this->removeCSS($current);
}
}
}
......@@ -135,7 +157,9 @@ class ResourceContainer
$css = array($css);
}
foreach ($css as $current) {
$this->css[] = $current;
if (!$this->activeInLess($current) && !$this->activeInScss($current)) {
$this->css[] = $current;
}
}
}
......@@ -167,13 +191,13 @@ class ResourceContainer
return array_unique($this->less);
}
/**
* Get Sass CSS files.
* Get SCSS CSS files.
*
* @return array
*/
public function getSassCss()
public function getScssCss()
{
return array_unique($this->sass);
return array_unique($this->scss);
}
/**
......@@ -261,4 +285,46 @@ class ResourceContainer
{
return $this->generator;
}
/**
* Check if a CSS file is being dynamically compiled in LESS
*
* @return boolean
*/
private function activeInLess($file)
{
if (empty($this->less) || $this->lessActive === false) {
return false;
}
list($lessFile,) = explode('.', $file);
$lessFile .= '.less';
return in_array($lessFile, $this->less, true) ? true : false;
}
/**
* Check if a CSS file is being dynamically compiled in SCSS
*
* @return boolean
*/
private function activeInScss($file)
{
if (empty($this->scss) || $this->scssActive === false) {
return false;
}
list($scssFile,) = explode('.', $file);
$scssFile .= '.scss';
return in_array($scssFile, $this->scss, true) ? true : false;
}
/**
* Check if a CSS file is being dynamically compiled in SCSS
*
* @return boolean
*/
private function removeCSS($file)
{
list($name, ) = explode('.', $file);
$name .= '.css';
unset($this->css[array_search($name, $this->css)]);
}
}
......@@ -87,7 +87,7 @@ class HeadThemeResources extends \Zend\View\Helper\AbstractHelper
isset($parts[2]) ? trim($parts[2]) : false
);
}
// Compile and load LESS (make sure we prepend them in the appropriate order
// theme resources should load before extras added by individual templates):
foreach (array_reverse($this->container->getLessCss()) as $current) {
......@@ -96,8 +96,8 @@ class HeadThemeResources extends \Zend\View\Helper\AbstractHelper
// Compile and load SASS (make sure we prepend them in the appropriate order
// theme resources should load before extras added by individual templates):
foreach (array_reverse($this->container->getSassCss()) as $current) {
$headLink()->addSassStylesheet($current);
foreach (array_reverse($this->container->getScssCss()) as $current) {
$headLink()->addScssStylesheet($current);
}
// Load Javascript (same ordering considerations as CSS, above):
......
......@@ -20,10 +20,12 @@ return array(
'lightbox.js',
),
'less' => array(
//'compiled.less'
'active' => true,
'compiled.less'
),
'scss' => array(
//'compiled.scss'
'active' => false,
'compiled.scss'
),
'favicon' => 'vufind-favicon.ico',
'helpers' => array(
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment