public function init()
{
// Register theme options
$this->addOption('typography', 'radio', array('label' => 'plugins.themes.default.option.typography.label', 'description' => 'plugins.themes.default.option.typography.description', 'options' => array('notoSans' => 'plugins.themes.default.option.typography.notoSans', 'notoSerif' => 'plugins.themes.default.option.typography.notoSerif', 'notoSerif_notoSans' => 'plugins.themes.default.option.typography.notoSerif_notoSans', 'notoSans_notoSerif' => 'plugins.themes.default.option.typography.notoSans_notoSerif', 'lato' => 'plugins.themes.default.option.typography.lato', 'lora' => 'plugins.themes.default.option.typography.lora', 'lora_openSans' => 'plugins.themes.default.option.typography.lora_openSans')));
$this->addOption('baseColour', 'colour', array('label' => 'plugins.themes.default.option.colour.label', 'description' => 'plugins.themes.default.option.colour.description', 'default' => '#1E6292'));
// Load primary stylesheet
$this->addStyle('stylesheet', 'styles/index.less');
// Store additional LESS variables to process based on options
$additionalLessVariables = array();
// Load fonts from Google Font CDN
// To load extended latin or other character sets, see:
// https://www.google.com/fonts#UsePlace:use/Collection:Noto+Sans
if (Config::getVar('general', 'enable_cdn')) {
if ($this->getOption('typography') === 'notoSerif') {
$this->addStyle('fontNotoSerif', '//fonts.googleapis.com/css?family=Noto+Serif:400,400i,700,700i', array('baseUrl' => ''));
$additionalLessVariables[] = '@font: "Noto Serif", -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen-Sans", "Ubuntu", "Cantarell", "Helvetica Neue", sans-serif;';
} elseif (strpos($this->getOption('typography'), 'notoSerif') !== false) {
$this->addStyle('fontNotoSansNotoSerif', '//fonts.googleapis.com/css?family=Noto+Sans:400,400i,700,700i|Noto+Serif:400,400i,700,700i', array('baseUrl' => ''));
// Update LESS font variables
if ($this->getOption('typography') == 'notoSerif_notoSans') {
$additionalLessVariables[] = '@font-heading: "Noto Serif", serif;';
} elseif ($this->getOption('typography') == 'notoSans_notoSerif') {
$additionalLessVariables[] = '@font: "Noto Serif", serif;@font-heading: "Noto Sans", serif;';
}
} elseif ($this->getOption('typography') == 'lato') {
$this->addStyle('fontLato', '//fonts.googleapis.com/css?family=Lato:400,400i,900,900i', array('baseUrl' => ''));
$additionalLessVariables[] = '@font: Lato, sans-serif;';
} elseif ($this->getOption('typography') == 'lora') {
$this->addStyle('fontLora', '//fonts.googleapis.com/css?family=Lora:400,400i,700,700i', array('baseUrl' => ''));
$additionalLessVariables[] = '@font: Lora, serif;';
} elseif ($this->getOption('typography') == 'lora_openSans') {
$this->addStyle('fontLoraOpenSans', '//fonts.googleapis.com/css?family=Lora:400,400i,700,700i|Open+Sans:400,400i,700,700i', array('baseUrl' => ''));
$additionalLessVariables[] = '@font: "Open Sans", sans-serif;@font-heading: Lora, serif;';
} else {
$this->addStyle('fontNotoSans', '//fonts.googleapis.com/css?family=Noto+Sans:400,400italic,700,700italic', array('baseUrl' => ''));
}
}
// Update colour based on theme option
if ($this->getOption('baseColour') !== '#1E6292') {
$additionalLessVariables[] = '@bg-base:' . $this->getOption('baseColour') . ';';
if (!$this->isColourDark($this->getOption('baseColour'))) {
$additionalLessVariables[] = '@text-bg-base:rgba(0,0,0,0.84);';
}
}
// Pass additional LESS variables based on options
if (!empty($additionalLessVariables)) {
$this->modifyStyle('stylesheet', array('addLessVariables' => join($additionalLessVariables)));
}
// Load jQuery from a CDN or, if CDNs are disabled, from a local copy.
$min = Config::getVar('general', 'enable_minified') ? '.min' : '';
$request = Application::getRequest();
if (Config::getVar('general', 'enable_cdn')) {
$jquery = '//ajax.googleapis.com/ajax/libs/jquery/' . CDN_JQUERY_VERSION . '/jquery' . $min . '.js';
$jqueryUI = '//ajax.googleapis.com/ajax/libs/jqueryui/' . CDN_JQUERY_UI_VERSION . '/jquery-ui' . $min . '.js';
} else {
// Use OJS's built-in jQuery files
$jquery = $request->getBaseUrl() . '/lib/pkp/lib/components/jquery/jquery' . $min . '.js';
$jqueryUI = $request->getBaseUrl() . '/lib/pkp/lib/components/jquery-ui/jquery-ui' . $min . '.js';
}
// Use an empty `baseUrl` argument to prevent the theme from looking for
// the files within the theme directory
$this->addScript('jQuery', $jquery, array('baseUrl' => ''));
$this->addScript('jQueryUI', $jqueryUI, array('baseUrl' => ''));
$this->addScript('jQueryTagIt', $request->getBaseUrl() . '/lib/pkp/js/lib/jquery/plugins/jquery.tag-it.js', array('baseUrl' => ''));
// Load custom JavaScript for this theme
$this->addScript('default', 'js/main.js');
}