diff --git a/www/src/db_handler/post.php b/www/src/db_handler/post.php
index 5e339e4..a61504f 100644
--- a/www/src/db_handler/post.php
+++ b/www/src/db_handler/post.php
@@ -6,8 +6,6 @@ class Post implements ArrayAccess {
private $content_html;
private $content_markdown;
- private $site_defaults;
-
public $data;
public $html_data;
@@ -66,14 +64,12 @@ class Post implements ArrayAccess {
$this->content_html = null;
$this->content_markdown = null;
-
- $this->site_defaults = $site_defaults;
if(!isset($post_data) or !isset($post_data['id'])) {
$post_data = $this->_generate_404($post_data);
}
- $data = $post_data;
+ $data = array_merge($site_defaults, $post_data);
if($data['path'] == '') {
$data['path'] = '/';
@@ -127,11 +123,7 @@ class Post implements ArrayAccess {
return $this->data[$name];
}
- if(is_null($this->site_defaults)) {
- throw new RuntimeException("Post site defaults have not been set properly!");
- }
-
- return $this->site_defaults[$name] ?? null;
+ return null;
}
public function offsetGet($offset) : mixed {
@@ -141,9 +133,6 @@ class Post implements ArrayAccess {
if(isset($this->data[$offset])) {
return true;
}
- if(isset($this->site_defaults[$offset])) {
- return true;
- }
return !is_null($this->offsetGet($offset));
}
@@ -179,7 +168,7 @@ class Post implements ArrayAccess {
}
public function to_array($options = []) {
- $out_data = array_merge($this->site_defaults, $this->data);
+ $out_data = $this->data;
if(isset($options['markdown'])) {
$out_data['markdown'] = $this->get_markdown();
diff --git a/www/src/dbtest.php b/www/src/dbtest.php
index ffbc378..01c795a 100644
--- a/www/src/dbtest.php
+++ b/www/src/dbtest.php
@@ -61,6 +61,8 @@ $db_connection->execute_query("DELETE FROM posts;");
$sql_adapter = new MySQLHandler($db_connection, $SERVER_HOST);
$adapter = new PostHandler($sql_adapter);
+$adapter->site_defaults = [];
+
$sql_adapter->debugging = true;
function test_accounce($title) {
@@ -127,15 +129,23 @@ test_accounce("Setting post markdown...");
$sql_adapter->set_postdata([
'path' => '/testing/markdowntest',
'markdown' => 'Inline markdown test should work...',
- 'title' => "A Markdown Test"
+ 'title' => "A Markdown Test",
+ 'brief' => "The dragons explore markdown, sort of properly... Maybe.",
+ 'tags' => ['one', 'two', 'three', 'sexee']
]);
$post = $sql_adapter->get_postdata('/testing/markdowntest');
var_dump($sql_adapter->get_post_markdown($post['id']));
$sql_adapter->set_post_markdown($post['id'],
'
- This is one hell of a cute test!
+
+This is one hell of a cute test!
+
> Just checking in...
+
+{{
+template: fragments/blog/card.html
+}}
'
);
var_dump($sql_adapter->get_post_markdown($post['id']));
diff --git a/www/src/dergdown.php b/www/src/dergdown.php
index 0405127..1f8dbcd 100644
--- a/www/src/dergdown.php
+++ b/www/src/dergdown.php
@@ -1,22 +1,97 @@
highlighter = new Highlighter();
+ $this->highlighter = null;
+ $this->BlockTypes['{'] []= 'DergInsert';
+
+ $this->dergInsertRenderer = null;
+ }
+
+ public function setDergRenderer($dergRenderer) {
+ $this->dergInsertRenderer = $dergRenderer;
+ }
+
+ protected function blockDergInsert($Line, $currentBlock) {
+ if (preg_match('/^{{\s?(.*)$/', $Line['body'], $match)) {
+ return array(
+ 'text' => $match[1] ?? ''
+ );
+ }
+ }
+
+ protected function blockDergInsertContinue($Line, $Block) {
+ if(isset($Block['complete'])) {
+ return;
+ }
+
+ if(preg_match('/(.*)}}/', $Line['body'], $match)) {
+ $Block['text'] .= "\n" . $match[1];
+ $Block['complete'] = true;
+ return $Block;
+ }
+
+ $Block['text'] .= "\n" . $Line['body'];
+
+ return $Block;
+ }
+
+ protected function blockDergInsertComplete($Block) {
+ try {
+ $parsed_data = Yaml::parse($Block['text']);
+ }
+ catch (Exception $ex) {
+ return array(
+ 'markup' => '
+
+
Error in a dergen template!
+ YAML could not be parsed properly:
+
+ ' . $ex->getMessage() . '
'
+ );
+ }
+
+ try {
+ if(!isset($this->dergInsertRenderer)) {
+ throw new Exception("No Dergen Renderer was set!");
+ }
+
+ $render_output = $this->dergInsertRenderer->dergRender($parsed_data);
+ } catch (Exception $ex) {
+ return array(
+ 'markup' => '
+
+
Error in a dergen template!
+ Rendering engine threw an error:
+
+ ' . $ex->getMessage() . '
'
+ );
+ }
+
+ return array(
+ 'markup' => $render_output
+ );
}
protected function blockFencedCodeComplete($block)
- {
+ {
if (! isset($block['element']['text']['attributes'])) {
return $block;
}
+ if(!isset($this->highlighter)) {
+ $this->highlighter = new Highlighter();
+ }
+
$code = $block['element']['text']['text'];
$languageClass = $block['element']['text']['attributes']['class'];
$language = explode('-', $languageClass);
diff --git a/www/src/serve/ajax.php b/www/src/serve/ajax.php
index 679afe0..1746732 100644
--- a/www/src/serve/ajax.php
+++ b/www/src/serve/ajax.php
@@ -21,6 +21,8 @@ if(isset($REQUEST_QUERY['page'])) {
$ajax_args['fa'] = $FONT_AWESOME_ARRAY;
$ajax_args['page'] ??= $SITE_CONFIG['site_defaults'];
-echo $twig->render('/ajax/' . $AJAX_REQUEST_TEMPLATE, $ajax_args);
+$ajax_args['post'] ??= $ajax_args['page'];
+
+echo $twig->render($AJAX_REQUEST_TEMPLATE, $ajax_args);
?>
\ No newline at end of file
diff --git a/www/src/setup/db.php b/www/src/setup/db.php
index 70b3d88..30a7357 100644
--- a/www/src/setup/db.php
+++ b/www/src/setup/db.php
@@ -29,14 +29,27 @@ $sql_adapter = new MySQLHandler($db_connection, $SERVER_HOST);
$adapter = new PostHandler($sql_adapter);
require_once 'dergdown.php';
+require_once 'setup/derg_insert.php';
-function dergdown_to_html($text) {
+function dergdown_to_html($post) {
+ $DergInsert = new DergInsertRenderer($post);
$Parsedown = new Dergdown();
+ $Parsedown->setDergRenderer($DergInsert);
- return $Parsedown->text($text);
+ $markdown = $post->markdown;
+
+ if($markdown == '') {
+ $markdown = '
+{{
+template: fragments/directory/inline.html
+}}
+';
+ }
+
+ return $Parsedown->text($markdown);
}
function post_to_html($post) {
- return dergdown_to_html($post->markdown);
+ return dergdown_to_html($post);
}
$adapter->markdown_engine = "post_to_html";
diff --git a/www/src/setup/derg_insert.php b/www/src/setup/derg_insert.php
new file mode 100644
index 0000000..8051a3e
--- /dev/null
+++ b/www/src/setup/derg_insert.php
@@ -0,0 +1,43 @@
+twig = $twig;
+ $this->post = $post;
+ $this->postAdapter = $adapter;
+ }
+
+ public function dergRender($renderConfig) {
+ global $FONT_AWESOME_ARRAY;
+
+ if(!isset($renderConfig['template'])) {
+ throw new Exception("No template type given!");
+ }
+
+ $template = $renderConfig['template'];
+
+ $args = [
+ 'post' => $this->post,
+ 'page' => $this->post,
+ 'fa' => $FONT_AWESOME_ARRAY
+ ];
+
+ if(isset($renderConfig['post'])) {
+ $args['post'] = $this->postAdapter->get_post($renderConfig['post']);
+ }
+ if(isset($renderConfig['page'])) {
+ $args['page'] = $this->postAdapter->get_post($renderConfig['page']);
+ }
+
+ return $this->twig->render($template, $args);
+ }
+}
+
+?>
\ No newline at end of file
diff --git a/www/static/banner.js b/www/static/banner.js
index 3da66de..b3101df 100644
--- a/www/static/banner.js
+++ b/www/static/banner.js
@@ -1,6 +1,8 @@
const BANNER_TIME = 600 * 1000.0
-const BANNER_ANIMATION = "opacity 0.8s linear, transform 0.1s linear"
+// const BANNER_ANIMATION = "opacity 0.8s linear, transform 0.1s linear"
+const BANNER_ANIMATION = "opacity 0.8s linear"
+
class BannerHandler {
constructor(banner_container, banner_image, banner_link) {
@@ -32,7 +34,7 @@ class BannerHandler {
console.log("Starting tick")
- this.bannerUpdateTimer = setInterval(() => { this.updateTick() }, 100);
+ this.bannerUpdateTimer = setInterval(() => { this.updateTick() }, 1000);
}
stopUpdateTick() {
if(this.bannerUpdateTimer === null) {
diff --git a/www/templates/ajax/compact_filelist/listing.html b/www/templates/ajax/compact_filelist/listing.html
deleted file mode 100644
index ccdc7c9..0000000
--- a/www/templates/ajax/compact_filelist/listing.html
+++ /dev/null
@@ -1,4 +0,0 @@
-
-{% for post in page.child_posts %}
-{{ include('ajax/compact_filelist/entry.html') }}
-{% endfor %}
\ No newline at end of file
diff --git a/www/templates/fragments/article_blop.html b/www/templates/fragments/blog/card.html
similarity index 93%
rename from www/templates/fragments/article_blop.html
rename to www/templates/fragments/blog/card.html
index 0000271..f084f0a 100644
--- a/www/templates/fragments/article_blop.html
+++ b/www/templates/fragments/blog/card.html
@@ -1,5 +1,4 @@
-
@@ -16,7 +15,7 @@
- {{post.excerpt}}
+ {{ post.brief }}
diff --git a/www/templates/fragments/blog/listing.html b/www/templates/fragments/blog/listing.html
new file mode 100644
index 0000000..e69de29
diff --git a/www/templates/fragments/decoration/blog_header.html b/www/templates/fragments/decoration/blog_header.html
new file mode 100644
index 0000000..7dd4d48
--- /dev/null
+++ b/www/templates/fragments/decoration/blog_header.html
@@ -0,0 +1,10 @@
+
+
+
+ {{ post.title }}
+
+
+ {% if post.authors %}
+ Written by {{ post.authors }}
+ {% endif %}
+
\ No newline at end of file
diff --git a/www/templates/fragments/filepath_bar.html b/www/templates/fragments/decoration/navbar.html
similarity index 96%
rename from www/templates/fragments/filepath_bar.html
rename to www/templates/fragments/decoration/navbar.html
index f4a43a2..854a30c 100644
--- a/www/templates/fragments/filepath_bar.html
+++ b/www/templates/fragments/decoration/navbar.html
@@ -61,7 +61,7 @@
..
- {{ include('ajax/compact_filelist/listing.html') }}
+ {{ include('fragments/directory/compact/listing.html') }}
diff --git a/www/templates/ajax/compact_filelist/entry.html b/www/templates/fragments/directory/compact/entry.html
similarity index 87%
rename from www/templates/ajax/compact_filelist/entry.html
rename to www/templates/fragments/directory/compact/entry.html
index 6c63345..be4ca6d 100644
--- a/www/templates/ajax/compact_filelist/entry.html
+++ b/www/templates/fragments/directory/compact/entry.html
@@ -6,7 +6,7 @@