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;
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(); ?>