. /** * Theme functions. * * @package theme_boost * @copyright 2016 Frédéric Massart - FMCorz.net * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ defined('MOODLE_INTERNAL') || die(); /** * Post process the CSS tree. * * @param string $tree The CSS tree. * @param theme_config $theme The theme config object. */ function theme_boost_css_tree_post_processor($tree, $theme) { $prefixer = new theme_boost\autoprefixer($tree); $prefixer->prefix(); } /** * Get the SCSS file to include. * * @param theme_config $theme The theme config object. * @return string The name of the file without 'scss'. */ function theme_boost_get_scss_file($theme) { $preset = !empty($theme->settings->preset) ? $theme->settings->preset : 'default'; return 'preset-' . $preset; } /** * Inject additional SCSS. * * @param theme_config $theme The theme config object. * @return string */ function theme_boost_get_extra_scss($theme) { return !empty($theme->settings->scss) ? $theme->settings->scss : ''; } /** * Get SCSS to prepend. * * @param theme_config $theme The theme config object. * @return array */ function theme_boost_get_pre_scss($theme) { $scss = ''; $configurable = [ // Config key => [variableName, ...]. 'brandcolor' => ['brand-primary'], ]; // Prepend variables first. foreach ($configurable as $configkey => $targets) { $value = $theme->settings->{$configkey}; if (empty($value)) { continue; } array_map(function($target) use (&$scss, $value) { $scss .= '$' . $target . ': ' . $value . ";\n"; }, (array) $targets); } // Prepend pre-scss. if (!empty($theme->settings->scsspre)) { $scss .= $theme->settings->scsspre; } return $scss; }