This repository has been archived on 2022-07-28. You can view files and clone it, but cannot push or open issues or pull requests.
md-cms/edit/page.php

197 lines
5.6 KiB
PHP

<?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($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();
?>