Commit bf15a194 authored by Administrator's avatar Administrator 💬

feat: add the translations menu on lessons pages

parent 5cff8910
Pipeline #11273 failed with stage
...@@ -355,6 +355,7 @@ class M3P2Plugin extends Plugin ...@@ -355,6 +355,7 @@ class M3P2Plugin extends Plugin
return; return;
} }
$current_lesson_lang = $target_pages[0]->language();
$current_lesson_name = ""; $current_lesson_name = "";
$other_lessons = []; // of slug => ['name' => …, 'slug' => …] $other_lessons = []; // of slug => ['name' => …, 'slug' => …]
foreach ($target_pages as $target_page) { foreach ($target_pages as $target_page) {
...@@ -378,15 +379,53 @@ class M3P2Plugin extends Plugin ...@@ -378,15 +379,53 @@ class M3P2Plugin extends Plugin
} }
} }
//dd($other_lessons); $translated_lessons = []; // lang => slug
$translated_lessons_contenders = []; // lang => [ slug => likelihood ]
foreach ($target_pages as $target_page) {
$translated_target_pages = $this->getTranslationsOfPage($target_page);
foreach ($translated_target_pages as $translated_target_page) {
/** @var Page $translated_target_page */
$lang = $translated_target_page->language();
if ($lang == $current_lesson_lang) { continue; }
$page_config = $translated_target_page->header();
if ( ! isset($page_config->lessons) || empty($page_config->lessons)) {
return false;
}
foreach ($page_config->lessons as $lesson) {
if ( ! isset($lesson['slug'])) { continue; }
if ( ! isset($translated_lessons_contenders[$lang])) {
$translated_lessons_contenders[$lang] = [];
}
if ( ! isset($translated_lessons_contenders[$lang][$lesson['slug']])) {
$translated_lessons_contenders[$lang][$lesson['slug']] = 0;
}
$translated_lessons_contenders[$lang][$lesson['slug']] += 1;
}
}
}
foreach ($translated_lessons_contenders as $lang => $slug_to_likelihood) {
$best_likelihood = 0;
foreach ($slug_to_likelihood as $slug => $likelihood) {
if ($likelihood > $best_likelihood) {
$best_likelihood = $likelihood;
$translated_lessons[$lang] = $slug;
}
}
}
// dd($translated_lessons);
$this->grav['twig']->twig()->addGlobal('target_pages', $target_pages); $this->grav['twig']->twig()->addGlobal('target_pages', $target_pages);
$this->grav['twig']->twig()->addGlobal('related_lessons', $other_lessons); $this->grav['twig']->twig()->addGlobal('related_lessons', $other_lessons);
$this->grav['twig']->twig()->addGlobal('disable_multilingual', true); $this->grav['twig']->twig()->addGlobal('translated_lessons', $translated_lessons);
// hotfix until we know how to fetch the appropriate translation
// disabled in template lesson-columns.html.twig
//$this->grav['twig']->twig()->addGlobal('disable_language_selector', true);
$page = new Page(); $page = new Page();
$page->init(new \SplFileInfo(__DIR__ . '/pages/lesson-columns.md')); $page->init(new \SplFileInfo(__DIR__ . '/pages/lesson-columns.md'));
......
...@@ -30,6 +30,11 @@ ...@@ -30,6 +30,11 @@
{# Disable the language selector. #} {# Disable the language selector. #}
{# We also do this procedurally in user/plugins/m3-p2/m3-p2.php #} {# We also do this procedurally in user/plugins/m3-p2/m3-p2.php #}
{% block header_language_selection %} {% block header_language_selection %}
{% embed 'partials/language-selector.html.twig' %}
{% block polyglot_language_selector %}{% endblock %}
{% endembed %}
{% if related_lessons %} {% if related_lessons %}
<div id="lesson-selector" class="dropdown-selector"> <div id="lesson-selector" class="dropdown-selector">
......
...@@ -14,9 +14,12 @@ ...@@ -14,9 +14,12 @@
{% set show_language = true %} {% set show_language = true %}
{% if uri.paths and uri.paths(0) == "lesson" %} {% if uri.paths and uri.paths(0) == "lessons" %}
{% set base_lang_url = base_url_simple ~ grav.language.getLanguageURLPrefix(language) %} {% set base_lang_url = base_url_simple ~ grav.language.getLanguageURLPrefix(language) %}
{% set lang_url = base_lang_url ~ uri.path %} {% set lang_url = base_lang_url ~ "/lessons/" ~ translated_lessons[language] %}
{% if language == language_selector.current %}
{% set show_language = false %}
{% endif %}
{% else %} {% else %}
{% if language == language_selector.current %} {% if language == language_selector.current %}
{% set lang_url = page.url %} {% set lang_url = page.url %}
......
Markdown is supported
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