<?PHP /** * This page offers the opportunity to edit static pages. * * @author Joshua Ramon Enslin <joshua@jrenslin.de> */ /* * Require files and ensure environment. */ require_once __DIR__ . "/inc/functions.php"; ensureEnvironment(); // Ensure existence of system files. $translations = loadLanguage($settings['defaultLang']); // Load translations. ensureBackendEnv(); // Ensure session is started etc. $pages = loadPages(); // Load overview of pages. /* * Load contents */ // Check for vars. loadHttpToGlobals(["id", "task", "title", "content", "higher", "public"]); if (isset($task) and !isset($public)) $public = false; // Load from ID if (isset($id) and is_numeric($id) and $id) { $existent = json_decode(file_get_contents(__DIR__ . "/../data/static/$id.json"), true); foreach (["title", "content", "higher", "public"] as $var) { if (!isset($$var) and isset($existent[$var])) $$var = $existent[$var]; } } // Set page title if (!isset($id)) $pageTitle = $translations['newPage']; else $pageTitle = $translations['edit'] . ': ' . $title; /* * Store if need be */ if (isset($task)) { if ($task == "update") { if (!isset($title)) $title = ""; if (!isset($content)) $content = ""; if (!isset($higher) or !is_numeric($higher)) $higher = "0"; if (!isset($id)) $id = "0"; $targetID = storePage($pages, ["title" => (string)$title, "content" => (string)$content, "higher" => $higher, "public" => (bool)$public], (int)$id); $_SESSION["editHistory"] = ["changesStored", $translations['storedEditsToPage'] . " $title"]; header('Location: page.php?id=' . $targetID); return; } else if ($task == "delete") { if (!isset($id)) { echo printErrorPage($settings, $translations['specifyToDelete']); return; } unlink(__DIR__ . "/../data/static/$id.json"); generateStaticPgCaches(); $_SESSION["editHistory"] = ["changesAborted", $translations['deletedPage'] . " $title"]; header('Location: pages.php'); return; } } /* * Output */ if (!isset($public)) $public = false; echo printBackendHead($settings, $pageTitle, $pageTitle, $settings['logo']); echo printBackendHeader($pageTitle, $translations['helpSinglePage']); echo ' <div id="mainWrapper"> '; echo printBackendNav($translations); echo ' <main class="noPadding"> <form action="" method="POST" class="withAside"> <section id="inputSection"> <input type="text" name="title" class="h1Input" placeholder="' . $translations['staticPageTitle'] . '"'; if (isset($title)) echo " value='$title'"; echo ' required /> <textarea type="text" name="content" id="pageContent" class="mceEditor" placeholder="' . $translations['staticPageTitle'] . '" required>'; if (isset($content)) echo $content; echo ' </textarea> </section> <aside> <div id="staticPageOptions"> <!-- Public or draft --> <span class="labelLine"> <label for="public">' . $translations['staticPagePublic'] . '</label> ' . generateHelpToolTip("helpPublic", $translations['staticPagePublic'], $translations['helpStaticPagePublic']) . ' </span> <span> <label class="switch"> <input name="public" id="public" type="checkbox"'; if (isset($public) and $public) echo " checked"; echo '> <span class="slider round"></span> </label> </span> <!-- Determine hierarchy --> <span class="labelLine"> <label for="higher">' . $translations['staticPageHigher'] . '</label> ' . generateHelpToolTip("helpHigher", $translations['staticPageHigher'], $translations['helpStaticPageHigher']) . ' </span> <span> <select name="higher" id="higher"> <option value="0"></option>'; foreach ($pages as $page) { if (isset($id) && $page['id'] == $id or $page['higher'] == $id) continue; echo '<option value="' . $page['id'] . '"'; if (isset($higher) and $page['id'] == $higher) echo " selected"; echo '>' . $page['title'] . '</option>'; } echo ' </select> </span> <span> <button type="submit">' . $translations['submit'] . '</button> ' . printHiddenInputs(["task" => "update"]) . ' </span> </div> <div id="pageTools"> <h3>' . $translations['tools'] . '</h3> <div id="embedGenerator"> </div> '; if (isset($id)) { echo ' <div> <a href="../?id=' . $id . '&preview=1" class="buttonLike">' . $translations['preview'] . '</a>'; // Check if there is a page subordinate to the current one. $hasSubordinate = false; foreach ($pages as $page) { if ($page['higher'] == $id) $hasSubordinate = true; } if (!$hasSubordinate) echo ' <a href="page.php?id=' . $id . '&task=delete" class="buttonLike">' . $translations['delete'] . '</a>'; echo ' </div> '; } echo ' </div> </aside> </form> </main> </div> <script src="./js/tinymce471/js/tinymce/tinymce.min.js"></script> <script type="text/javascript" src="./js/runTinyMCE.js"></script> '; echo printBackendEnd(); ?>