diff --git a/www/commands/html_panel-aoc-calendar.php b/www/commands/html_panel-aoc-calendar.php index 6db0baa..185a81b 100644 --- a/www/commands/html_panel-aoc-calendar.php +++ b/www/commands/html_panel-aoc-calendar.php @@ -18,4 +18,4 @@ $linkheader = boolval($API_OPTIONS['linkheader']); $ajax = boolval($API_OPTIONS['ajax']); $frameid = strval($API_OPTIONS['frameid']); -$SITE->fragments->PanelAdventOfCodeCalendar($year, $shownav, $linkheader, $ajax, false, $frameid); +echo $SITE->fragments->PanelAdventOfCodeCalendar($year, $shownav, $linkheader, $ajax, false, $frameid); diff --git a/www/data/css/styles.css b/www/data/css/styles.css index b36252b..562b2e8 100644 --- a/www/data/css/styles.css +++ b/www/data/css/styles.css @@ -1924,6 +1924,8 @@ html, body { background-color: #BBBBBB; text-align: left; padding: 4px; + font-family: Consolas, Monaco, "Courier New", Menlo, monospace; + font-size: small; overflow-x: auto; white-space: nowrap; width: 100%; diff --git a/www/data/css/styles.min.css b/www/data/css/styles.min.css index 1995694..3245623 100644 --- a/www/data/css/styles.min.css +++ b/www/data/css/styles.min.css @@ -364,7 +364,7 @@ html,body{margin:0;padding:0;height:100%} @media(min-width:851px){.ev_master{padding-bottom:80px}} .ev_master .ev_code{color:#333;text-align:center;font-size:150pt;font-weight:500;font-family:Consolas,Monaco,"Courier New",Menlo,monospace} .ev_master .ev_msg{color:#888;text-align:center;font-size:25pt} -.ev_master .ev_statusmore{color:#333;background-color:#bbb;text-align:left;padding:4px;overflow-x:auto;white-space:nowrap;width:100%} +.ev_master .ev_statusmore{color:#333;background-color:#bbb;text-align:left;padding:4px;font-family:Consolas,Monaco,"Courier New",Menlo,monospace;font-size:small;overflow-x:auto;white-space:nowrap;width:100%} @media(max-width:767px){ .ev_master .ev_code{font-size:75pt} .ev_master .ev_msg{font-size:15pt} diff --git a/www/data/css/styles_errorview.scss b/www/data/css/styles_errorview.scss index 4cdd822..38cb153 100644 --- a/www/data/css/styles_errorview.scss +++ b/www/data/css/styles_errorview.scss @@ -26,6 +26,8 @@ background-color: $LAYER1_BG_DARKER; text-align: left; padding: 4px; + font-family: $FONT_CODE; + font-size: small; overflow-x: auto; white-space: nowrap; diff --git a/www/fragments/blogview_euler_list.php b/www/fragments/blogview_euler_list.php index 6b76e3e..c31978d 100644 --- a/www/fragments/blogview_euler_list.php +++ b/www/fragments/blogview_euler_list.php @@ -1,11 +1,18 @@ + +modules->Euler()->listAll(); ?>
diff --git a/www/fragments/blogview_euler_single.php b/www/fragments/blogview_euler_single.php index a638664..7f06e96 100644 --- a/www/fragments/blogview_euler_single.php +++ b/www/fragments/blogview_euler_single.php @@ -1,18 +1,23 @@ -if ($problem === NULL) httpError(404, 'Project Euler entry not found'); +modules->Euler()->listAll(); +$problem = $SITE->modules->Euler()->getEulerProblemFromStrIdent($subview); +if ($problem === NULL) { $FRAME_OPTIONS->forceResult(404, 'Project Euler entry not found'); return; } $arr = []; $max = 0; @@ -42,28 +47,19 @@ $max = ceil($max / 20) * 20;

Problem :

Description: -
text(file_get_contents($problem['file_description'])); ?>
+
renderMarkdown(file_get_contents($problem['file_description'])); ?>

Solution: file_get_contents($problem['file_code']), - 'url' => $problem['url_raw'], - 'interactive' => !$problem['abbreviated'], - 'speed' => $problem['steps'] < 15000 ? 1 : ($problem['steps'] < 500000 ? 2 : 3), - 'editable' => false, - ]; - echo require (__DIR__ . '/../fragments/widget_befunge93.php'); + echo $SITE->fragments->WidgetBefunge93(file_get_contents($problem['file_code']), $problem['url_raw'], !$problem['abbreviated'], $problem['steps'] < 15000 ? 1 : ($problem['steps'] < 500000 ? 2 : 3), false); if ($problem['abbreviated']) echo 'This program is too big to display/execute here, click [download] to get the full program.
'; ?>
Explanation: -
text(file_get_contents($problem['file_explanation'])); ?>
+
renderMarkdown(file_get_contents($problem['file_explanation'])); ?>

diff --git a/www/fragments/panel_aoc.php b/www/fragments/panel_aoc.php index ac34542..16050e8 100644 --- a/www/fragments/panel_aoc.php +++ b/www/fragments/panel_aoc.php @@ -22,7 +22,7 @@ $year = intval(end($years));
- fragments->PanelAdventOfCodeCalendar($year, true, true, true); ?> + fragments->PanelAdventOfCodeCalendar($year, true, true, true); ?>
diff --git a/www/fragments/widget_befunge93.php b/www/fragments/widget_befunge93.php index 30e30da..ac7b188 100644 --- a/www/fragments/widget_befunge93.php +++ b/www/fragments/widget_befunge93.php @@ -1,15 +1,23 @@ 0) $speed_attr = ' data-b93rnr_initialspeed="'.$initspeed.'" '; $code_attr = ''; @@ -58,7 +67,7 @@ if ($interactive) { $result .= ' ' . "\n"; $result .= '' . "\n"; - includeAdditionalScript("/data/javascript/blogpost_bef93runner.js"); + $FRAME_OPTIONS->addScript("/data/javascript/blogpost_bef93runner.js", false); } else { @@ -72,4 +81,4 @@ else $result .= '' . "\n"; } -return $result; \ No newline at end of file +echo $result; \ No newline at end of file diff --git a/www/fragments/widget_bfjoust.php b/www/fragments/widget_bfjoust.php index e50e1f3..a77a2b2 100644 --- a/www/fragments/widget_bfjoust.php +++ b/www/fragments/widget_bfjoust.php @@ -1,15 +1,25 @@ ' . "\n"; $result .= '
' . "\n"; -$result .= ' ' . "\n"; -$result .= ' ' . "\n"; +$result .= ' ' . "\n"; +$result .= ' ' . "\n"; $result .= '
' . "\n"; $result .= '
' . "\n"; @@ -35,6 +45,6 @@ $result .= '
' . "\n"; $result .= '' . "\n"; -includeAdditionalScript("/data/javascript/blogpost_BFJoustBot_script.js"); +$FRAME_OPTIONS->addScript('/data/javascript/blogpost_BFJoustBot_script.js', false); -return $result; \ No newline at end of file +echo $result; \ No newline at end of file diff --git a/www/internals/fragments.php b/www/internals/fragments.php index e73a840..3a1e7ea 100644 --- a/www/internals/fragments.php +++ b/www/internals/fragments.php @@ -2,89 +2,131 @@ class Fragments { + private function evalFragment($name, $url, $params) + { + try + { + ob_start(); + { + global $FRAGMENT_PARAM; + $FRAGMENT_PARAM = $params; + /** @noinspection PhpIncludeInspection */ + include (__DIR__ . '/../fragments/' . $url); + } + return ob_get_contents(); + } + finally + { + ob_end_clean(); + } + } + public function PanelEuler() { - global $FRAGMENT_PARAM; - $FRAGMENT_PARAM = [ ]; - include (__DIR__ . '/../fragments/panel_euler.php'); + return $this->evalFragment('PanelEuler', 'panel_euler.php', [ ]); } public function PanelPrograms() { - global $FRAGMENT_PARAM; - $FRAGMENT_PARAM = [ ]; - include (__DIR__ . '/../fragments/panel_programs.php'); + return $this->evalFragment('PanelPrograms', 'panel_programs.php', [ ]); } public function PanelBlog() { - global $FRAGMENT_PARAM; - $FRAGMENT_PARAM = [ ]; - include (__DIR__ . '/../fragments/panel_blog.php'); + return $this->evalFragment('PanelBlog', 'panel_blog.php', [ ]); } public function PanelBooks() { - global $FRAGMENT_PARAM; - $FRAGMENT_PARAM = [ ]; - include (__DIR__ . '/../fragments/panel_books.php'); + return $this->evalFragment('PanelBooks', 'panel_books.php', [ ]); } public function PanelAdventOfCode() { - global $FRAGMENT_PARAM; - $FRAGMENT_PARAM = [ ]; - include (__DIR__ . '/../fragments/panel_aoc.php'); + return $this->evalFragment('PanelAdventOfCode', 'panel_aoc.php', [ ]); } public function PanelAdventOfCodeCalendar(int $year, bool $shownav, bool $linkheader, bool $ajax, bool $frame=true, $frameid=null) { - if ($frameid == null) $frameid = 'aoc_frame_' . getRandomToken(16); - - global $FRAGMENT_PARAM; - $FRAGMENT_PARAM = [ 'year' => $year, 'nav'=>$shownav, 'linkheader'=>$linkheader, 'ajax'=>$ajax, 'frame'=>$frame, 'frameid'=>$frameid ]; - include (__DIR__ . '/../fragments/panel_aoc_calendar.php'); + return $this->evalFragment('PanelAdventOfCodeCalendar', 'panel_aoc_calendar.php', + [ + 'year' => $year, + 'nav' => $shownav, + 'linkheader' => $linkheader, + 'ajax' => $ajax, + 'frame' => $frame, + 'frameid' => ($frameid == null) ? ('aoc_frame_' . getRandomToken(16)) : $frameid, + ]); } public function BlogviewPlain(array $blogpost) { - global $FRAGMENT_PARAM; - $FRAGMENT_PARAM = [ 'blogpost' => $blogpost ]; - include (__DIR__ . '/../fragments/blogview_plain.php'); + return $this->evalFragment('BlogviewPlain', 'blogview_plain.php', + [ + 'blogpost' => $blogpost, + ]); } public function BlogviewMarkdown(array $blogpost) { - global $FRAGMENT_PARAM; - $FRAGMENT_PARAM = [ 'blogpost' => $blogpost ]; - include (__DIR__ . '/../fragments/blogview_markdown.php'); + return $this->evalFragment('BlogviewMarkdown', 'blogview_markdown.php', + [ + 'blogpost' => $blogpost, + ]); } public function BlogviewEulerList(array $blogpost) { - global $FRAGMENT_PARAM; - $FRAGMENT_PARAM = [ 'blogpost' => $blogpost ]; - include (__DIR__ . '/../fragments/blogview_euler_list.php'); + return $this->evalFragment('BlogviewEulerList', 'blogview_euler_list.php', + [ + 'blogpost' => $blogpost, + ]); } public function BlogviewEulerSingle(array $blogpost, string $subview) { - global $FRAGMENT_PARAM; - $FRAGMENT_PARAM = [ 'blogpost' => $blogpost, 'subview' => $subview ]; - include (__DIR__ . '/../fragments/blogview_euler_single.php'); + return $this->evalFragment('BlogviewEulerSingle', 'blogview_euler_single.php', + [ + 'blogpost' => $blogpost, + 'subview' => $subview, + ]); } public function BlogviewAdventOfCodeList(array $blogpost) { - global $FRAGMENT_PARAM; - $FRAGMENT_PARAM = [ 'blogpost' => $blogpost ]; - include (__DIR__ . '/../fragments/blogview_aoc_list.php'); + return $this->evalFragment('BlogviewAdventOfCodeList', 'blogview_aoc_list.php', + [ + 'blogpost' => $blogpost, + ]); } public function BlogviewAdventOfCodeSingle(array $blogpost, string $subview) { - global $FRAGMENT_PARAM; - $FRAGMENT_PARAM = [ 'blogpost' => $blogpost, 'subview' => $subview ]; - include (__DIR__ . '/../fragments/blogview_aoc_single.php'); + return $this->evalFragment('BlogviewAdventOfCodeSingle', 'blogview_aoc_single.php', + [ + 'blogpost' => $blogpost, + 'subview' => $subview, + ]); + } + + public function WidgetBefunge93(string $code, string $url, bool $interactive, int $speed, bool $editable) + { + return $this->evalFragment('WidgetBefunge93', 'widget_befunge93.php', + [ + 'code' => $code, + 'url' => $url, + 'interactive' => $interactive, + 'speed' => $speed, + 'editable' => $editable, + ]); + } + + public function WidgetBFJoust(string $codeLeft, string $codeRight) + { + return $this->evalFragment('WidgetBFJoust', 'widget_bfjoust.php', + [ + 'code_left' => $codeLeft, + 'code_right' => $codeRight, + ]); } } \ No newline at end of file diff --git a/www/internals/modules/euler.php b/www/internals/modules/euler.php index b226cbf..d3b91eb 100644 --- a/www/internals/modules/euler.php +++ b/www/internals/modules/euler.php @@ -33,9 +33,9 @@ class Euler $a['url_raw'] = 'https://raw.githubusercontent.com/Mikescher/Project-Euler_Befunge/master/processed/Euler_Problem-' . $n3p . '.b93'; $a['url_github'] = 'https://github.com/Mikescher/Project-Euler_Befunge'; - $a['file_description'] = (__DIR__ . '/../statics/euler/Euler_Problem-'.$n3p.'_description.md'); - $a['file_code'] = (__DIR__ . '/../statics/euler/Euler_Problem-'.$n3p.'.b93'); - $a['file_explanation'] = (__DIR__ . '/../statics/euler/Euler_Problem-'.$n3p.'_explanation.md'); + $a['file_description'] = (__DIR__ . '/../../statics/euler/Euler_Problem-'.$n3p.'_description.md'); + $a['file_code'] = (__DIR__ . '/../../statics/euler/Euler_Problem-'.$n3p.'.b93'); + $a['file_explanation'] = (__DIR__ . '/../../statics/euler/Euler_Problem-'.$n3p.'_explanation.md'); return $a; } diff --git a/www/internals/parsedowncustom.php b/www/internals/parsedowncustom.php index 6ef1164..a665f98 100644 --- a/www/internals/parsedowncustom.php +++ b/www/internals/parsedowncustom.php @@ -67,29 +67,14 @@ class ParsedownCustom extends ParsedownExtra protected function handleBFJoust(array $Element) { - global $PARAM_CODE_LEFT; - global $PARAM_CODE_RIGHT; - $split = preg_split("/-{16,}/", $Element['text']); - $PARAM_CODE_LEFT = trim($split[0]); - $PARAM_CODE_RIGHT = trim($split[1]); - - return require (__DIR__ . '/../fragments/widget_bfjoust.php'); + return Website::inst()->fragments->WidgetBFJoust(trim($split[0]), trim($split[1])); } protected function handleBef93(array $Element) { - global $PARAM_BEFUNGE93RUNNER; - $PARAM_BEFUNGE93RUNNER = - [ - 'code' => $Element['text'], - 'url' => '', - 'interactive' => $Element['b93_interactive'], - 'speed' => $Element['b93_speed'], - 'editable' => $Element['b93_editable'], - ]; - return require (__DIR__ . '/../fragments/widget_befunge93.php'); + return Website::inst()->fragments->WidgetBefunge93($Element['text'], '', $Element['b93_interactive'], $Element['b93_speed'], $Element['b93_editable']); } protected function blockTable($Line, array $Block = null) diff --git a/www/pages/blog_view.php b/www/pages/blog_view.php index 62fb473..595c105 100644 --- a/www/pages/blog_view.php +++ b/www/pages/blog_view.php @@ -33,21 +33,21 @@ else if ($post['type'] === 'plain') { - $SITE->fragments->BlogviewPlain($post); + echo $SITE->fragments->BlogviewPlain($post); } elseif ($post['type'] === 'markdown') { - $SITE->fragments->BlogviewMarkdown($post); + echo $SITE->fragments->BlogviewMarkdown($post); } elseif ($post['type'] === 'euler') { - if ($subview === '') $SITE->fragments->BlogviewEulerList($post); - else $SITE->fragments->BlogviewEulerSingle($post, $subview); + if ($subview === '') echo $SITE->fragments->BlogviewEulerList($post); + else echo $SITE->fragments->BlogviewEulerSingle($post, $subview); } elseif ($post['type'] === 'aoc') { - if ($subview === '') $SITE->fragments->BlogviewAdventOfCodeList($post); - else $SITE->fragments->BlogviewAdventOfCodeSingle($post, $subview); + if ($subview === '') echo $SITE->fragments->BlogviewAdventOfCodeList($post); + else echo $SITE->fragments->BlogviewAdventOfCodeSingle($post, $subview); } ?> diff --git a/www/pages/main.php b/www/pages/main.php index 917d890..7a8942b 100644 --- a/www/pages/main.php +++ b/www/pages/main.php @@ -12,12 +12,12 @@ $FRAME_OPTIONS->canonical_url = 'https://www.mikescher.com'; $FRAME_OPTIONS->activeHeader = 'home'; ?> -fragments->PanelEuler(); ?> +fragments->PanelEuler(); ?> -fragments->PanelPrograms(); ?> +fragments->PanelPrograms(); ?> -fragments->PanelBlog(); ?> +fragments->PanelBlog(); ?> -fragments->PanelBooks(); ?> +fragments->PanelBooks(); ?> -fragments->PanelAdventOfCode(); ?> +fragments->PanelAdventOfCode(); ?>