Files
cwsvJudo/DieJudoGürtelprüfung/kyu.php
2021-10-28 11:07:47 +02:00

183 lines
5.2 KiB
PHP

<?php
require("lib/Parsedown.php");
require("lib/Spyc.php");
$mdRoot = "markdown/".(array_key_exists('kyu', $_GET)?$_GET['kyu']:"8")."terKyu";
$Parsedown = new Parsedown();
//! loading a markdownfile with yaml-header
//! returns an assocative array('yaml'=>array(..), 'mdText'=>string)
function loadMarkdownFile($fileName){
$fileText = file_get_contents($fileName);
$fileParts = preg_split('/[\n]*[-]{3}[\n]/', $fileText, 3);
return array(
'yaml' => Spyc::YAMLLoadString($fileParts[1])
, 'mdText' => preg_replace("/^#(.*)$/m", "", $fileParts[2])
);
}
/// @brief Gibt die URL der gerade aufgerufenen Seite zurück
function getCurPagesUrl(){
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on"){
$pageURL .= "s";
}
$pageURL .= "://";
if($_SERVER["SERVER_PORT"] != "80"){
$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
}
else{
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
return $pageURL;
}
function htmlCardCode($article, $Parsedown){
if(
empty($article['yaml'])
&& empty($article['mdText'])
) return "";
return
"<div class=\"col s12 m6\">"
."<div class=\"card blue-grey darken-1\">"
."<div class=\"card-image\">"
.(
array_key_exists('yaml', $article)
?(
array_key_exists('video', $article['yaml'])
?(
"<video "
."style=\"max-width:100%;height: auto;\""
." class=\"materialboxed\""
." src=\"".$article['yaml']['video']['url']."\""
." width=\"".$article['yaml']['video']['width']."\""
." height=\"".$article['yaml']['video']['height']."\""
." controls"
."></video>"
)
:""
)
:""
)
."</div>"
."<div class=\"card-content white-text\">"
."<span class=\"card-title activator\">"
.$article['yaml']['title']
."<i class=\"right\">+</i>"
."</span>"
."</div>"
."<div class=\"card-reveal\">"
."<span class=\"card-title\">"
.$article['yaml']['title']
."<i class=\"right\">X</i>"
."</span>"
.$Parsedown->text($article['mdText'])
."</div>"
."</div>"
."</div>";
}
?>
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<title>Gürtelprüfungsordnung</title>
<!-- Compiled and minified CSS -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@materializecss/materialize@1.1.0-alpha/dist/css/materialize.min.css">
<!-- Compiled and minified JavaScript -->
<script src="https://cdn.jsdelivr.net/npm/@materializecss/materialize@1.1.0-alpha/dist/js/materialize.min.js"></script>
<!--- AutoInit -->
<script>
document.addEventListener('DOMContentLoaded', function() {
var elems = document.querySelectorAll('.materialboxed');
var instances = M.Materialbox.init(elems, {
// specify options here
});
});
document.addEventListener('DOMContentLoaded', function() {
var elems = document.querySelectorAll('.sidenav');
var instances = M.Sidenav.init(elems, {
// specify options here
});
});
</script>
<!--Let browser know website is optimized for mobile-->
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<style>
ul:not(.browser-default) > li{
list-style-type: circle;
}
</style>
</head>
<body>
<ul id="slide-out" class="sidenav">
<li><a href="kyu.php?kyu=8">8. Kyu - weiß-gelb</a></li>
<li><a href="kyu.php?kyu=7">7. Kyu - gelb</a></li>
<li><a href="kyu.php?kyu=6">6. Kyu - gelb-orange</a></li>
<li><a href="kyu.php?kyu=5">5. Kyu - orange</a></li>
</ul>
<a href="#" data-target="slide-out" class="sidenav-trigger"><i class="material-icons">menu</i></a>
<?php
$kyuMetadata = Spyc::YAMLLoad( $mdRoot."/meta.yaml" );
echo("<h1>".$kyuMetadata['title']."</h1>");
$dirNames = [];
$dirIterator = new DirectoryIterator( $mdRoot );
foreach ( $dirIterator as $dirInfo ) {
if(!$dirInfo->isDir() || $dirInfo->isDot()) continue;
$dirNames[] = $dirInfo->__toString();
}
sort($dirNames);
foreach($dirNames as $dirName){
$fullDirName = $mdRoot."/".$dirName;
$sectionMetadata = Spyc::YAMLLoad( $fullDirName."/meta.yaml" );
echo("<div class=\"row\">");
echo("<h2>".$sectionMetadata['title']."</h2>");
$fileIterator = new DirectoryIterator($fullDirName);
$fileNames = [];
foreach($fileIterator as $fileInfo){
if(!$fileInfo->isFile()) continue;
if( $fileInfo->getExtension() != "md") continue;
$fileNames[] = $fileInfo->__toString();
}
sort($fileNames);
foreach( $fileNames as $fileName){
$fullFileName = $fullDirName."/".$fileName;
$article = loadMarkdownFile( $fullFileName );
echo( htmlCardCode($article, $Parsedown) );
}
echo("</div>");
};
?>
<footer class="page-footer">
<div class="container">
<div class="col l4 offset-l2 s12">
<ul>
<li>
<a
title="Seite auf HTML 5 Konformität prüfen"
href="http://validator.w3.org/check?uri=<?php echo(urlencode(getCurPagesUrl()));?>"
rel="nofollow"
>Valid <img
src="/ressourcen/graphiken/icons/HTML5_1Color_Black.svg"
alt="HTML 5"
title="HTML 5 Logo"
style="height:1em;display:inline;vertical-align:middle;">
</a>
</li>
</ul>
</div>
</div>
</footer>
</body>
</html>