Merge pull request #358 from Sommerregen/feature/better-theme-inheritance

Improved theme inheritance to support all kinds of streams
This commit is contained in:
Andy Miller
2015-10-14 10:33:27 -06:00

View File

@@ -221,20 +221,43 @@ class Themes extends Iterator
throw new \InvalidArgumentException("Stream '{$type}' could not be initialized.");
}
}
// Load languages after streams has been properly initialized
$this->loadLanguages($this->config);
}
/**
* Load theme configuration.
*
* @param string $name Theme name
* @param Config $config Configuration class
*/
protected function loadConfiguration($name, Config $config)
{
$themeConfig = CompiledYamlFile::instance("themes://{$name}/{$name}" . YAML_EXT)->content();
$config->joinDefaults("themes.{$name}", $themeConfig);
}
/**
* Load theme languages.
*
* @param Config $config Configuration class
*/
protected function loadLanguages(Config $config)
{
/** @var UniformResourceLocator $locator */
$locator = $this->grav['locator'];
if ($config->get('system.languages.translations', true)) {
$languageFiles = array_reverse($locator->findResources("theme://languages" . YAML_EXT));
if ($this->config->get('system.languages.translations', true)) {
$languages = [];
$schemes = array_reverse($config->get("themes.{$name}.streams.schemes.theme.prefixes.", []));
foreach ($schemes as $scheme) {
$languages = array_replace_recursive($languages, CompiledYamlFile::instance("$scheme/languages". YAML_EXT)->content());
foreach ($languageFiles as $language) {
$languages[] = CompiledYamlFile::instance($language)->content();
}
if ($languages) {
$languages = call_user_func_array('array_replace_recursive', $languages);
$config->getLanguages()->mergeRecursive($languages);
}
}