diff --git a/index.php b/index.php index 93b058bd..95a4ac11 100755 --- a/index.php +++ b/index.php @@ -195,6 +195,7 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") { if (isset($_POST["blogPostTitle"]) && isset($_POST["blogPostContent"]) && isset($_POST["blogPostAuthor"])) { $post['title'] = test_input($_POST["blogPostTitle"]); + $post['SEF_URL'] = preg_replace('/\s+/', '+', test_input($_POST["blogPostLink"])); $post['author'] = test_input($_POST["blogPostAuthor"]); $post['image'] = test_input($_POST["blogPostImageURL"]); $post['password'] = test_input($_POST["blogPostPassword"]); @@ -307,6 +308,7 @@ "title" => test_input($_POST["blogPostTitle"]), "date" => time(), "draft" => true, + "SEF_URL"=>preg_replace('/\s+/', '+', test_input($_POST["blogPostLink"])), "author" => test_input($_POST["blogPostAuthor"]), "content" => test_input($_POST["blogPostContent"]), "password" => test_input($_POST["blogPostPassword"]) @@ -410,6 +412,37 @@ } }, 'dashboard'); +// Get Specific Post - Config file must exist, User does not need to be authenticated +$router->map('GET', '/[:SEF_URL]', function ($SEF_URL) { + global $router; + if (file_exists("config.php")) { + global $siteConfig; + global $blogStore; + global $Extra; + + $post = $blogStore->findOneBy(["SEF_URL", "=", urldecode($SEF_URL)]); + + if ($post == null) { + // Build out nice 404 page and header to it + echo ("404 Not Found"); + } else { + $passAttempt = ""; + if (isset($_REQUEST['password'])) { + $passAttempt = $_REQUEST['password']; + } + if (empty($post["password"]) || $passAttempt === $post["password"]) { + $pageTitle = $post['title']; + require __DIR__ . '/templates/' . $siteConfig['template'] . '/post.php'; + } else { + $pageTitle = "Private post"; + require __DIR__ . '/internal/private.php'; + } + } + } else { + header("Location: " . $router->generate('settings')); + } +}, "SEF_URL"); + $match = $router->matcher(); session_start(); diff --git a/internal/dashboard.php b/internal/dashboard.php index e6665de2..0d86e377 100644 --- a/internal/dashboard.php +++ b/internal/dashboard.php @@ -18,7 +18,7 @@

- +

-
@@ -41,7 +41,7 @@

- +

-
diff --git a/internal/i18n.php b/internal/i18n.php index 67a475ff..b509f6f5 100644 --- a/internal/i18n.php +++ b/internal/i18n.php @@ -57,6 +57,7 @@ "write_title" => "Time to write your prose", "write_post_title_placeholder" => "The post title", "write_post_author_placeholder" => "The post author", + "write_post_link_placeholder" => "Link to this post", "write_post_image_placeholder" => "A featured image for this post", "write_post_password_placeholder" => "Password if you want to hide the post", "write_post_markdown_placeholder" => "Write your post here, you can use Markdown", @@ -163,7 +164,7 @@ "dashboard_draft_post" => "Чернетки дописів:", "dashboard_published_post" => "Опубліковані дописи:", "dashboard_posted_by" => "Опубліковано:", - "dashboard_post_fulldate" => "F d, Y @ g:i A", + "dashboard_post_fulldate" => "H:i d.m.Y", "dashboard_publish" => "Опублікувати", "dashboard_draft" => "Створити чернетку", "dashboard_edit" => "Змінити", @@ -179,6 +180,7 @@ "write_title" => "Створення/редагування допису", "write_post_title_placeholder" => "Назва", "write_post_author_placeholder" => "Автор", + "write_post_link_placeholder" => "Посилання на цей допис", "write_post_image_placeholder" => "Рекомендоване зображення для цього допису", "write_post_password_placeholder" => "Пароль, якщо ви хочете приховати публікацію", "write_post_markdown_placeholder" => "Напишіть свій допис тут, ви можете використовувати Markdown", diff --git a/internal/write.php b/internal/write.php index 340ec5f0..2e7ae299 100644 --- a/internal/write.php +++ b/internal/write.php @@ -17,6 +17,9 @@ " required value="" /> + " value="" /> " value="'; }?>