From f8e37db21fc7a338fa70e6c422421de2dfdd8cc4 Mon Sep 17 00:00:00 2001
From: Jonas Leder <git@jonasled.de>
Date: Tue, 13 Apr 2021 10:33:40 +0200
Subject: [PATCH] get post from API

---
 js/script.js           |  1 +
 js/viewPost.js         | 40 +++++++++++++++++++++++++++++++++++++
 public/API/getPost.php | 24 ++++++++++++++++++++++
 public/post.html       | 45 +++++++++++++-----------------------------
 4 files changed, 79 insertions(+), 31 deletions(-)
 create mode 100644 js/viewPost.js
 create mode 100644 public/API/getPost.php

diff --git a/js/script.js b/js/script.js
index 761ff96..63cf079 100644
--- a/js/script.js
+++ b/js/script.js
@@ -4,6 +4,7 @@ require("./imgPreview");
 require("./includeHTML");
 require("./ntpGraph");
 require("./ntpMenu");
+require("./viewPost");
 
 require("./customElements/cookie");
 require("./customElements/svgLoader");
diff --git a/js/viewPost.js b/js/viewPost.js
new file mode 100644
index 0000000..01241e9
--- /dev/null
+++ b/js/viewPost.js
@@ -0,0 +1,40 @@
+if(window.location['pathname'] == "/post.html"){
+    loadPost();
+}
+
+
+function getParameter(key) {
+
+    // Address of the current window
+    let address = window.location.search
+
+    // Returns a URLSearchParams object instance
+    let parameterList = new URLSearchParams(address)
+
+    // Returning the respected value associated
+    // with the provided key
+    return parameterList.get(key)
+}
+
+async function loadPost() {
+    let id =  getParameter("id");
+
+    let header = document.createElement("jl-header");
+    let footer = document.createElement("jl-footer");
+    let content = document.createElement("div");
+
+    if(id == null) {
+        content.innerHTML = "<h1>404 - Post not found</h1>";
+    } else {
+        let post = await (await fetch("/API/getPost.php?id=" + id)).json();
+        content.innerHTML = post["content"];
+        document.title = post["title"] + " - Jonas Leder";
+
+        header.setAttribute("data-title", post["title"]);
+    }
+    content.id = "content";
+
+    document.body.appendChild(header);
+    document.body.appendChild(content);
+    document.body.appendChild(footer);
+}
\ No newline at end of file
diff --git a/public/API/getPost.php b/public/API/getPost.php
new file mode 100644
index 0000000..9ac86e8
--- /dev/null
+++ b/public/API/getPost.php
@@ -0,0 +1,24 @@
+<?php
+include "./lib/config.php";
+include "./lib/mysql.php";
+
+$id = $conn->real_escape_string($_GET["id"]);
+$result = $conn->query("SELECT * FROM posts WHERE id=$id");
+if ($result->num_rows > 0) {
+    $row = $result->fetch_assoc();
+} else {
+    die("Post not found");
+}
+
+$title = $row["title"];
+$content = $row["content"];
+$date = $row["date"];
+$id = $row["id"];
+
+header('Content-Type: application/json');
+echo json_encode([
+    "title" => $title,
+    "content" => $content,
+    "date" => $date,
+    "id" => $id
+]);
\ No newline at end of file
diff --git a/public/post.html b/public/post.html
index ffc7ad0..b89bdff 100644
--- a/public/post.html
+++ b/public/post.html
@@ -1,32 +1,15 @@
-<?php
-include "internal/header.php";
-include "internal/footer.php";
 
-if(isset($_GET["template"])){
-    $title = "[TITLE]";
-    $content = "[CONTENT]";
-    $date = "DATE NOT SHOWN IN PREVIEW";
-    $id = "0";
-
-} else{
-    $id = $conn->real_escape_string($_GET["id"]);
-    $result = $conn->query("SELECT * FROM posts WHERE id=$id");
-    if ($result->num_rows > 0) {
-        $row = $result->fetch_assoc();
-    } else {
-        die("Post not found");
-    }
-
-    $title = $row["title"];
-    $content = $row["content"];
-    $date = $row["date"];
-    $id = $row["id"];
-}
-
-getHeader($title, "");
-?>
-    <p>
-        <?php echo($content); ?>
-    </p>
-<?php
-getFooter();
\ No newline at end of file
+<!DOCTYPE html >
+<html lang = "de" >
+<html >
+<head >
+    <meta charset = "UTF-8" >
+    <meta name = "viewport" content = "width=device-width, initial-scale=1.0" >
+    <title></title >
+
+    <link href = "/css/style.css" rel = "stylesheet" >
+</head >
+<body >
+<script src="/js/script.js"></script>
+</body>
+</html>
\ No newline at end of file
-- 
GitLab