diff --git a/assets/scss/base.scss b/assets/scss/base.scss
index f03adfc..f362c23 100644
--- a/assets/scss/base.scss
+++ b/assets/scss/base.scss
@@ -4,6 +4,7 @@
$black: #141414;
$orange: #d6972a;
+$white: #f0f0f0;
$font: 'Fira Code', monospace;
html {
@@ -13,6 +14,7 @@ html {
body {
margin-bottom: 60px; /* Margin bottom by footer height */
font-family: 'Mukta', sans-serif;
+ background-color: $white;
}
.footer {
position: absolute;
diff --git a/src/Controller/DefaultController.php b/src/Controller/DefaultController.php
index 8283512..8927cf6 100644
--- a/src/Controller/DefaultController.php
+++ b/src/Controller/DefaultController.php
@@ -14,25 +14,13 @@ class DefaultController extends AbstractController
{
$return = $page->getPage($kernel, $slug);
$response = new Response('', (int)$return['status']);
- return $this->render('/page.html.twig', [
- 'nav' => $return['nav'],
- 'header' => $return['header'],
- 'content' => $return['content'],
- 'title' => $return['title'],
- 'footer' => $return['footer'],
- ], $response);
+ return $this->render('/page.html.twig', $return, $response);
}
public function ErrorAction(Request $request, Page $page, KernelInterface $kernel, string $status)
{
$return = $page->getPage($kernel, 'error/' . $status);
$response = new Response('', (int)$status);
- return $this->render('/page.html.twig', [
- 'nav' => $return['nav'],
- 'header' => $return['header'],
- 'content' => $return['content'],
- 'title' => $return['title'],
- 'footer' => $return['footer'],
- ], $response);
+ return $this->render('/page.html.twig', $return, $response);
}
}
diff --git a/src/Repository/Page.php b/src/Repository/Page.php
index 4e500bd..e84517e 100644
--- a/src/Repository/Page.php
+++ b/src/Repository/Page.php
@@ -11,6 +11,8 @@ class Page
public function getPage(KernelInterface $kernel, string $page)
{
$parsedown = new \Parsedown();
+ $return['js'] = [];
+ $return['css'] = [];
if(file_exists($kernel->getCacheDir() . '/pages/_header.md')) {
$return['header'] = $parsedown->text(file_get_contents($kernel->getCacheDir() . '/pages/_header.md'));
} elseif(file_exists($kernel->getCacheDir() . '/pages/_header.html')) {
@@ -19,6 +21,19 @@ class Page
throw new NotFoundHttpException('Some required files were not found');
}
+ if(file_exists($kernel->getProjectDir() . '/public/assets/js/_header.js')) {
+ $return['js'][] = [
+ 'sha384' => base64_encode(hash('sha384', file_get_contents($kernel->getProjectDir() . '/public/assets/js/_header.js'), true)),
+ 'file' => '/assets/js/_header.js'
+ ];
+ }
+ if(file_exists($kernel->getProjectDir() . '/public/assets/css/_header.css')) {
+ $return['css'][] = [
+ 'sha384' => base64_encode(hash('sha384', file_get_contents($kernel->getProjectDir() . '/public/assets/css/_header.css'), true)),
+ 'file' => '/assets/css/_header.css'
+ ];
+ }
+
if(file_exists($kernel->getCacheDir() . '/pages/_nav.md')) {
$return['nav'] = $parsedown->text(file_get_contents($kernel->getCacheDir() . '/pages/_nav.md'));
} elseif(file_exists($kernel->getCacheDir() . '/pages/_nav.html')) {
@@ -27,6 +42,19 @@ class Page
throw new NotFoundHttpException('Some required files were not found');
}
+ if(file_exists($kernel->getProjectDir() . '/public/assets/js/_nav.js')) {
+ $return['js'][] = [
+ 'sha384' => base64_encode(hash('sha384', file_get_contents($kernel->getProjectDir() . '/public/assets/js/_nav.js'), true)),
+ 'file' => '/assets/js/_nav.js'
+ ];
+ }
+ if(file_exists($kernel->getProjectDir() . '/public/assets/css/_nav.css')) {
+ $return['css'][] = [
+ 'sha384' => base64_encode(hash('sha384', file_get_contents($kernel->getProjectDir() . '/public/assets/css/_nav.css'), true)),
+ 'file' => '/assets/css/_nav.css'
+ ];
+ }
+
if(file_exists($kernel->getCacheDir() . '/pages/_footer.md')) {
$return['footer'] = $parsedown->text(file_get_contents($kernel->getCacheDir() . '/pages/_footer.md'));
} elseif(file_exists($kernel->getCacheDir() . '/pages/_footer.html')) {
@@ -35,6 +63,19 @@ class Page
throw new NotFoundHttpException('Some required files were not found');
}
+ if(file_exists($kernel->getProjectDir() . '/public/assets/js/_footer.js')) {
+ $return['js'][] = [
+ 'sha384' => base64_encode(hash('sha384', file_get_contents($kernel->getProjectDir() . '/public/assets/js/_footer.js'), true)),
+ 'file' => '/assets/js/_footer.js'
+ ];
+ }
+ if(file_exists($kernel->getProjectDir() . '/public/assets/css/_footer.css')) {
+ $return['css'][] = [
+ 'sha384' => base64_encode(hash('sha384', file_get_contents($kernel->getProjectDir() . '/public/assets/css/_footer.css'), true)),
+ 'file' => '/assets/css/_footer.css'
+ ];
+ }
+
if(file_exists($kernel->getCacheDir() . '/pages/' . $page . '.md')) {
$return['content'] = $parsedown->text(file_get_contents($kernel->getCacheDir() . '/pages/' . $page . '.md'));
} elseif(file_exists($kernel->getCacheDir() . '/pages/' . $page . '.html')) {
@@ -43,7 +84,18 @@ class Page
throw new NotFoundHttpException('Some required files were not found');
}
-
+ if(file_exists($kernel->getProjectDir() . '/public/assets/js/' . $page . '.js')) {
+ $return['js'][] = [
+ 'sha384' => base64_encode(hash('sha384', file_get_contents($kernel->getProjectDir() . '/public/assets/js/' . $page . '.js'), true)),
+ 'file' => '/assets/js/' . $page . '.js'
+ ];
+ }
+ if(file_exists($kernel->getProjectDir() . '/public/assets/css/' . $page . '.css')) {
+ $return['css'][] = [
+ 'sha384' => base64_encode(hash('sha384', file_get_contents($kernel->getProjectDir() . '/public/assets/css/' . $page . '.css'), true)),
+ 'file' => '/assets/css/' . $page . '.css'
+ ];
+ }
$titles = json_decode(file_get_contents($kernel->getCacheDir() . '/pages/titles.json'), true);
$return['title'] = $titles[$page] ?? '';
diff --git a/templates/page.html.twig b/templates/page.html.twig
index 501884c..fa071ad 100755
--- a/templates/page.html.twig
+++ b/templates/page.html.twig
@@ -20,10 +20,20 @@
{% block styles %}
{{ encore_entry_link_tags('page') }}
+ {% if css is defined and css is not empty %}
+ {% for sheet in css %}
+
+ {% endfor %}
+ {% endif %}
{% endblock %}
{% block scripts %}
{{ encore_entry_script_tags('page') }}
+ {% if js is defined and js is not empty %}
+ {% for script in js %}
+
+ {% endfor %}
+ {% endif %}
{% endblock %}
{% block footer %}