Commit e9db60b8 authored by Administrator's avatar Administrator 💬

Add support for polyglot columns.

We still need a proper flag for the rosetta stone.
parent 35bdf614
Pipeline #52 passed with stage
in 45 seconds
......@@ -2,7 +2,10 @@
namespace Grav\Plugin;
use Grav\Common\Page\Page;
use Grav\Common\Page\Pages;
use Grav\Common\Plugin;
use Grav\Common\Uri;
use Symfony\Component\EventDispatcher\Event;
/**
* Features:
......@@ -40,10 +43,12 @@ class M3P2Plugin extends Plugin
return;
}
// /sync
$uri = $this->grav['uri'];
$route = $this->config->get('plugins.m3-p2.route');
if ($route && $route == $uri->path()) {
$current_route = $uri->path();
// /sync
$route_sync = $this->config->get('plugins.m3-p2.routes.sync');
if ($route_sync && $route_sync == $current_route) {
$this->enable([
'onPageInitialized' => ['onSyncPageInitialized', 0]
]);
......@@ -52,6 +57,24 @@ class M3P2Plugin extends Plugin
$this->enable([
'onTwigInitialized' => ['setupWebIdeUrl', 0],
]);
// $that_page_route = $uri->query('page');
// if ($that_page_route) {
// $this->enable([
// 'onPageNotFound' => ['setupQueryPage', 0],
// ]);
// }
$this->enable([
'onPageNotFound' => ['perhapsDisplayPolyglotColumns', 1],
]);
// if ("" == $current_route) {
// $this->enable([
// 'onPageInitialized' => ['onSyncPageInitialized', 0]
// ]);
// }
}
/**
......@@ -83,9 +106,21 @@ class M3P2Plugin extends Plugin
);
}
public function setupQueryPage()
{
$that_page_route = $this->grav['uri']->query('page');
// die($that_page_route);
var_dump($that_page_route);
$that_page = $this->grav['pages']->find($that_page_route);
var_dump($that_page);
$this->grav['twig']->twig()->addGlobal(
'that_page', $that_page
);
}
public function getWebIdeUrlForPage(Page $page)
{
$url = "https://m3p2.ljbac.com/-/ide/project/m3p2/courses/edit/master/-/";
$url = "https://m3p2.ljbac.com/-/ide/project/m3p2/courses/edit/master/-/"; # todo: move to YAML config
$url .= substr($page->filePathClean(), 11); // 11==strlen('/user/pages')
return $url;
......@@ -144,4 +179,37 @@ class M3P2Plugin extends Plugin
return $translations;
}
public function perhapsDisplayPolyglotColumns(Event $event)
{
/** @var Uri $uri */
$uri = $this->grav['uri'];
// var_dump($uri); // best doc ftw
if ("polyglot-columns" != $uri->paths(0)) {
return; // perhaps not
}
/** @var Pages $pages */
$pages = $this->grav['pages'];
$that_page_route = "/" . join("/", array_slice($uri->paths(), 1));
// var_dump($that_page_route);
$target_page = $pages->find($that_page_route);
if ( ! $target_page) {
return;
}
$this->grav['twig']->twig()->addGlobal('target_page', $target_page);
$page = new Page;
$page->init(new \SplFileInfo(__DIR__ . '/pages/polyglot-columns.md'));
// here: perhaps add a title and other metadata
$event->page = $page;
$event->stopPropagation();
}
}
enabled: true
#text_var: Custom Text added by the **M3p2** plugin (disable plugin to remove)
route: "/sync"
routes:
# Homemade git-sync, with not as much features.
sync: "/sync"
......@@ -19,3 +19,12 @@
</div>
{#{{ page.content|raw }}#}
{% endblock %}
{# Disable the Rosetta option of the language selector, for now. #}
{# How to access the Rosettas of the children poages? #}
{% block header_language_selection %}
{% embed 'partials/language-selector.html.twig' %}
{% block polyglot_language_selector %}{% endblock %}
{% endembed %}
{% endblock %}
{% extends 'partials/base.html.twig' %}
{# DEPRECATED -- see polyglot-columns #}
{% extends 'partials/base.html.twig' %}
{% block stylesheets %}
{% do assets.addCss('theme://css/columns.css') %}
{{ parent() }}
......
......@@ -26,7 +26,7 @@
{{ assets.css()|raw }}
{% block javascripts %}
{# TODO: ZEPTO #}
{# TODO: ZEPTO JS PLS #}
{% do assets.addJs('jquery', 101) %}
{% do assets.addJs('theme://js/jquery.treemenu.js', {group:'bottom'}) %}
{% do assets.addJs('theme://js/site.js', {group:'bottom'}) %}
......@@ -59,11 +59,15 @@
</section>
{% block header_language_selection_section %}
<section class="navbar-section">
<div>{# Wrapper div to make centering vertically easy #}
{% block header_language_selection %}
{% include 'partials/language-selector.html.twig' %}
{% endblock %}
</div>
</section>
{% endblock %}
</nav>
</section>
</section>
......
<div class="language-selector">
<button class="btn" type="button" data-dropdown="langSelectorList">
{% if language_display.button == 'default' or language_display.button == 'flag' %}
<img alt="{{ native_name(language_selector.current)|capitalize }}" src="{{ path_flags ~ language_selector.current }}.png" />
{% endif %}
{% if language_display.button == 'default' or language_display.button == 'name' %}
{{ native_name(language_selector.current)|capitalize }}
{% endif %}
<i class="fa fa-caret-down"></i>
</button>
<ul class="dropdown-menu" id="langSelectorList">
{% for language in language_selector.languages %}
{% set show_language = true %}
{% if language == language_selector.current %}
{% set lang_url = page.url %}
{% else %}
{% set base_lang_url = base_url_simple ~ grav.language.getLanguageURLPrefix(language) %}
{% set lang_url = base_lang_url ~ language_selector.page_route ~ page.urlExtension %}
{% set untranslated_pages_behavior = grav.config.plugins.language_selector.untranslated_pages_behavior %}
{% if untranslated_pages_behavior != 'none' %}
{% set translated_page = language_selector.translated_pages[language] %}
{% if (not translated_page) or (not translated_page.published) %}
{% if untranslated_pages_behavior == 'redirect' %}
{% set lang_url = base_lang_url ~ '/' %}
{% elseif untranslated_pages_behavior == 'hide' %}
{% set show_language = false %}
{% endif %}
{% endif %}
{% endif %}
{% endif %}
{% if show_language %}
<li>
<a href="{{ lang_url ~ uri.params }}">
{% if language_display.select == 'default' or language_display.select == 'flag' %}
<img alt="{{ native_name(language)|capitalize }}" src="{{ path_flags ~ language }}.png" />
{% endif %}
{% if language_display.select == 'default' or language_display.select == 'name' %}
{{ native_name(language)|capitalize }}
{% endif %}
</a>
</li>
{% endif %}
{% endfor %}
{% block polyglot_language_selector %}
{% if uri.paths and uri.paths(0) != "polyglot-columns" %}
<li>
<a href="{{ '/polyglot-columns' ~ uri.path }}">
{% if language_display.select == 'default' or language_display.select == 'flag' %}
<img alt="Rosetta" src="fr.png" />
{% endif %}
{% if language_display.select == 'default' or language_display.select == 'name' %}
Rosetta
{% endif %}
</a>
</li>
{% endif %}
{% endblock %}
</ul>
</div>
{% extends 'partials/base.html.twig' %}
{# page is irrelevant here #}
{# use target_page, injected by m3-p2 plugin #}
{% block stylesheets %}
{% do assets.addCss('theme://css/columns.css') %}
{{ parent() }}
{% endblock %}
{% block javascripts %}
{% do assets.addJs('theme://js/syncscroll.js', {group:'bottom'}) %}
{{ parent() }}
{% endblock %}
{% block body %}
<div class="claude-columns">
{% for column in target_page | translations %}
<section id="{{ macro.pageLinkName(column.menu) }}" class="claude-column syncscroll" name="language">
{{ column.content | raw }}
{#{% include 'partials/contributions-incentive.html.twig' with {page: column} %}#}
</section>
{% endfor %}
</div>
{% endblock %}
{# Disable the language selector. #}
{% block header_language_selection %}{% endblock %}
{# … disabling the whole section instead is semantically correct but it offsets the navigation. TBD #}
{#{% block header_language_selection_section %}{% endblock %}#}
{% extends 'blog.html.twig' %}
{# Disable the Rosetta option of the language selector. #}
{% block header_language_selection %}
{% embed 'partials/language-selector.html.twig' %}
{% block polyglot_language_selector %}{% endblock %}
{% endembed %}
{% endblock %}
\ No newline at end of file
......@@ -5,6 +5,12 @@
{{ parent() }}
{% endblock %}
{% block javascripts %}
{{ parent() }}
{% do assets.add('theme://js/bricklayer.min.js') %}
{% do assets.add('theme://js/scopedQuerySelectorShim.min.js') %}
{% endblock %}
{% block content %}
{{ page.content|raw }}
......@@ -13,4 +19,16 @@
{% include 'partials/topic-list-item.html.twig' with {parent: page, page: topic} %}
{% endfor %}
</section>
<script>
//Bricklayer
var bricklayer = new Bricklayer(document.querySelector('.bricklayer'))
</script>
{% endblock %}
{# Disable the Rosetta option of the language selector. #}
{% block header_language_selection %}
{% embed 'partials/language-selector.html.twig' %}
{% block polyglot_language_selector %}{% endblock %}
{% endembed %}
{% endblock %}
\ No newline at end of file
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