Readied error pages for variable themes.
Fixed error in parsing pseudocode.
This commit is contained in:
parent
b340c7efff
commit
4e06d0bae7
|
@ -13,12 +13,12 @@ require_once __DIR__ . "/inc/functions.php";
|
|||
// Check validity of request.
|
||||
|
||||
if (!isset($_GET['args']) || !isset($_GET['area'])) {
|
||||
echo printErrorPage("File does not exist.");
|
||||
echo printErrorPage($settings, "File does not exist.");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!in_array($_GET['area'], ['events', 'exhibitions'])) {
|
||||
echo printErrorPage("Using a disallowed value for area.");
|
||||
echo printErrorPage($settings, "Using a disallowed value for area.");
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@ require_once __DIR__ . "/inc/functions.php";
|
|||
// Check validity of request.
|
||||
|
||||
if (!isset($_GET['id']) or !is_numeric($_GET['id'])) {
|
||||
echo printErrorPage("Collection does not exist.");
|
||||
echo printErrorPage($settings, "Collection does not exist.");
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -27,12 +27,12 @@ $pages = loadPublicPages(); // Load overview of pages.
|
|||
$contents = json_decode(queryCachePage($settings['mdVersion'] . "?t=sammlung&gesusa=" . urlencode($_GET['id']) . "&output=json", "institution", $settings), true);
|
||||
|
||||
if (!$contents || (isset($contents[0]) and $contents[0] == "There is no collection with this ID yet.")) {
|
||||
echo printErrorPage("Temporarily unavailable.");
|
||||
echo printErrorPage($settings, "Temporarily unavailable.");
|
||||
return;
|
||||
}
|
||||
|
||||
if ($settings['limitToInstitutions'] != [] and !in_array($contents['collection_id'], $settings['limitToInstitutions'])) {
|
||||
echo printErrorPage("This collection does not belong to an enabled institution.");
|
||||
echo printErrorPage($settings, "This collection does not belong to an enabled institution.");
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -30,11 +30,11 @@ loadHttpToGlobals(["id", "task", "content"]);
|
|||
define("targetFile", __DIR__ . "/../data/$id.htm");
|
||||
|
||||
if (!isset($id) or !in_array($id, ['footer', 'aside', 'banner', 'welcomeMsg'])) {
|
||||
echo printErrorPage($translations['specifyToEdit']); return;
|
||||
echo printErrorPage($settings, $translations['specifyToEdit']); return;
|
||||
}
|
||||
|
||||
if ($id == 'welcomeMsg' and !$_SESSION['admin']) {
|
||||
echo printErrorPage($translations['accessDenied']); return;
|
||||
echo printErrorPage($settings, $translations['accessDenied']); return;
|
||||
}
|
||||
|
||||
// Read file contents if there is no new content sent by $_POST.
|
||||
|
|
|
@ -81,17 +81,17 @@ else if ($task == "upload") {
|
|||
|
||||
// Whitelist of allowed types.
|
||||
if (!in_array($_FILES['file']['type'], $allowedFiletypes)) {
|
||||
printErrorPage($translations['filetypeNotWhitelisted']);
|
||||
echo printErrorPage($settings, $translations['filetypeNotWhitelisted']);
|
||||
return;
|
||||
}
|
||||
|
||||
if (filesize($_FILES['file']['tmp_name']) > 300000) {
|
||||
printErrorPage($translations['fileTooLarge']);
|
||||
if (filesize($_FILES['file']['tmp_name']) > $settings['maxFileSize']) {
|
||||
echo printErrorPage($settings, $translations['fileTooLarge']);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!(move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile))) {
|
||||
printErrorPage($translations['fileUploadError']);
|
||||
echo printErrorPage($settings, $translations['fileUploadError']);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -106,7 +106,7 @@ else if ($task == "upload") {
|
|||
else if ($task == "delete") {
|
||||
|
||||
if (!is_file(fileDir . "/$subject")) {
|
||||
printErrorPage($translations['fileDoesNotExist']); return;
|
||||
echo printErrorPage($settings, $translations['fileDoesNotExist']); return;
|
||||
}
|
||||
|
||||
unlink(fileDir . "/$subject");
|
||||
|
|
|
@ -214,11 +214,6 @@ document.addEventListener("DOMContentLoaded", function() {
|
|||
uploadLabel.textContent = getTranslation(translations, "uploadFile");
|
||||
uploadLabel.for = "fileUploadInput";
|
||||
|
||||
let uploadSize = document.createElement("input");
|
||||
uploadSize.type = "hidden";
|
||||
uploadSize.name = "MAX_FILE_SIZE";
|
||||
uploadSize.value = "300000";
|
||||
|
||||
let uploadBackTo = document.createElement("input");
|
||||
uploadBackTo.type = "hidden";
|
||||
uploadBackTo.name = "backTo";
|
||||
|
@ -233,13 +228,13 @@ document.addEventListener("DOMContentLoaded", function() {
|
|||
uploadInput.type = "file";
|
||||
uploadInput.id = "fileUploadInput";
|
||||
uploadInput.name = "file";
|
||||
uploadInput.value = "";
|
||||
|
||||
let uploadButton = document.createElement("button");
|
||||
uploadButton.type = "submit";
|
||||
uploadButton.textContent = getTranslation(translations, "submit");
|
||||
|
||||
uploadForm.appendChild(uploadLabel);
|
||||
uploadForm.appendChild(uploadSize);
|
||||
uploadForm.appendChild(uploadTask);
|
||||
uploadForm.appendChild(uploadBackTo);
|
||||
uploadForm.appendChild(uploadInput);
|
||||
|
|
|
@ -62,7 +62,7 @@ if (isset($task)) {
|
|||
else if ($task == "delete") {
|
||||
|
||||
if (!isset($id)) {
|
||||
echo printErrorPage($translations['specifyToDelete']); return;
|
||||
echo printErrorPage($settings, $translations['specifyToDelete']); return;
|
||||
}
|
||||
|
||||
unlink(__DIR__ . "/../data/static/$id.json");
|
||||
|
|
|
@ -17,7 +17,7 @@ ensureBackendEnv(); // Ensure session is sta
|
|||
$pages = loadPages(); // Load overview of pages.
|
||||
|
||||
if (!$_SESSION['admin']) {
|
||||
echo printErrorPage($translations['accessDenied']); return;
|
||||
echo printErrorPage($settings, $translations['accessDenied']); return;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -126,4 +126,5 @@ $translations['deletedFile'] = 'Datei wurde gelöscht';
|
|||
$translations['uploadedFile'] = 'Datei wurde heraufgeladen';
|
||||
$translations['fileUploadError'] = 'Ein Fehler ist aufgetreten';
|
||||
$translations['filetypeNotWhitelisted'] = 'Dateityp ist nicht erlaubt';
|
||||
$translations['fileTooLarge'] = 'Die Datei ist zu groß';
|
||||
?>
|
|
@ -126,4 +126,5 @@ $translations['deletedFile'] = 'Deleted file';
|
|||
$translations['uploadedFile'] = 'Uploaded file';
|
||||
$translations['fileUploadError'] = 'Error uploading file';
|
||||
$translations['filetypeNotWhitelisted'] = 'Filetype is not in whitelist';
|
||||
$translations['fileTooLarge'] = 'The file is too large.';
|
||||
?>
|
|
@ -17,7 +17,7 @@ ensureBackendEnv(); // Ensure session is sta
|
|||
$pages = loadPages(); // Load overview of pages.
|
||||
|
||||
if (!$_SESSION['admin']) {
|
||||
echo printErrorPage($translations['accessDenied']); return;
|
||||
echo printErrorPage($settings, $translations['accessDenied']); return;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -13,7 +13,7 @@ require_once __DIR__ . "/inc/functions.php";
|
|||
// Check validity of request.
|
||||
|
||||
if (!isset($_GET['id']) or !is_numeric($_GET['id'])) {
|
||||
echo printErrorPage("Exhibition does not exist.");
|
||||
echo printErrorPage($settings, "Exhibition does not exist.");
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -25,12 +25,12 @@ $pages = loadPublicPages(); // Load overview of pages.
|
|||
$contents = json_decode(queryCachePage($settings['mdVersion'] . "?t=event&id=" . urlencode($_GET['id']) . "&output=json", "event", $settings), true);
|
||||
|
||||
if (!$contents || (isset($contents[0]) and $contents[0] == "There is no event with this ID yet.")) {
|
||||
echo printErrorPage("Temporarily unavailable.");
|
||||
echo printErrorPage($settings, "Temporarily unavailable.");
|
||||
return;
|
||||
}
|
||||
|
||||
if ($settings['limitToInstitutions'] != [] and !in_array($contents['institution_id'], $settings['limitToInstitutions'])) {
|
||||
echo printErrorPage("This exhibition does not belong to an enabled institution.");
|
||||
echo printErrorPage($settings, "This exhibition does not belong to an enabled institution.");
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@ require_once __DIR__ . "/inc/functions.php";
|
|||
// Check validity of request.
|
||||
|
||||
if (!isset($_GET['id']) or !is_numeric($_GET['id'])) {
|
||||
echo printErrorPage("Exhibition does not exist.");
|
||||
echo printErrorPage($settings, "Exhibition does not exist.");
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -25,12 +25,12 @@ $pages = loadPublicPages(); // Load overview of pages.
|
|||
$contents = json_decode(queryCachePage($settings['mdVersion'] . "?t=exhibition&id=" . urlencode($_GET['id']) . "&output=json", "exhibition", $settings), true);
|
||||
|
||||
if (!$contents || (isset($contents[0]) and $contents[0] == "There is no exhibition with this ID yet.")) {
|
||||
echo printErrorPage("Temporarily unavailable.");
|
||||
echo printErrorPage($settings, "Temporarily unavailable.");
|
||||
return;
|
||||
}
|
||||
|
||||
if ($settings['limitToInstitutions'] != [] and !in_array($contents['institution_id'], $settings['limitToInstitutions'])) {
|
||||
echo printErrorPage("This exhibition does not belong to an enabled institution.");
|
||||
echo printErrorPage($settings, "This exhibition does not belong to an enabled institution.");
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -83,7 +83,7 @@ function ensureEnvironment() {
|
|||
"sendHTTPHeaders" => 1,
|
||||
"CSPimageSources" => "",
|
||||
"CSPobjectSources" => "",
|
||||
"maxFileSize" => 300000,
|
||||
"maxFileSize" => 300000000,
|
||||
],
|
||||
json_decode(file_get_contents(__DIR__ . "/../data/settings.json"), true)
|
||||
);
|
||||
|
@ -138,7 +138,8 @@ function queryCachePage(string $url, string $area = "", array $settings = ['cach
|
|||
|
||||
// Ignore caching if cacheRefreshInterval equals zero.
|
||||
if ($settings['cacheRefreshInterval'] == 0) {
|
||||
return file_get_contents($url);
|
||||
$content = file_get_contents($url);
|
||||
return $content;
|
||||
}
|
||||
|
||||
$fileDir = __DIR__ . "/../data/caches/$area";
|
||||
|
|
|
@ -33,52 +33,56 @@ function checkForEmbeds(string $text, array $settings):string {
|
|||
|
||||
foreach ($embedOptions as $option) {
|
||||
|
||||
if (strpos($text, $option) === false) continue;
|
||||
$position = strpos($text, $option) - 1;
|
||||
$i = 0;
|
||||
while (strpos($text, $option) !== false) {
|
||||
$position = strpos($text, $option) - 1;
|
||||
|
||||
$nextTag = $nextWhitespace = strlen($text);
|
||||
if (strpos($text, "<", $position) !== false) $nextTag = strpos($text, "<", $position);
|
||||
if (strpos($text, " ", $position) !== false) $nextWhitespace = strpos($text, " ", $position);
|
||||
$nextTag = $nextWhitespace = $nextNBSP = strlen($text);
|
||||
if (strpos($text, "<", $position) !== false) $nextTag = strpos($text, "<", $position);
|
||||
if (strpos($text, " ", $position) !== false) $nextWhitespace = strpos($text, " ", $position);
|
||||
if (strpos($text, " ", $position) !== false) $nextNBSP = strpos($text, " ", $position);
|
||||
|
||||
$end = min($nextTag, $nextWhitespace);
|
||||
// The pseudocode ends with a whitespace. No two tiles can be immediately after each other.
|
||||
$end = min($nextTag, $nextWhitespace, $nextNBSP);
|
||||
|
||||
$pseudocode = substr($text, $position, $end - $position);
|
||||
$pseudocode = substr($text, $position, $end - $position);
|
||||
|
||||
$command = substr($pseudocode, 1, strpos($pseudocode, "]") - 1);
|
||||
$arguments = [];
|
||||
if (strpos($pseudocode, "{") !== false) $arguments = explode("&", substr($pseudocode, strpos($pseudocode, "{") + 1, -1));
|
||||
$command = substr($pseudocode, 1, strpos($pseudocode, "]") - 1);
|
||||
$arguments = [];
|
||||
if (strpos($pseudocode, "{") !== false) $arguments = explode("&", substr($pseudocode, strpos($pseudocode, "{") + 1, -1));
|
||||
|
||||
switch ($command) {
|
||||
case "singleObjectTile":
|
||||
$text = str_replace($pseudocode, embedObject($arguments, $settings), $text);
|
||||
break;
|
||||
case "singleObjectDetails":
|
||||
$text = str_replace($pseudocode, embedObject($arguments, $settings, true), $text);
|
||||
break;
|
||||
case "singleCollectionTile":
|
||||
$text = str_replace($pseudocode, embedCollection($arguments, $settings), $text);
|
||||
break;
|
||||
case "singleCollectionDetails":
|
||||
$text = str_replace($pseudocode, embedCollection($arguments, $settings, true), $text);
|
||||
break;
|
||||
case "singleInstitutionTile":
|
||||
$text = str_replace($pseudocode, embedInstitution($arguments, $settings), $text);
|
||||
break;
|
||||
case "singleInstitutionDetails":
|
||||
$text = str_replace($pseudocode, embedInstitution($arguments, $settings, true), $text);
|
||||
break;
|
||||
case "exhibitionCalendar":
|
||||
$text = str_replace($pseudocode, embedExhibitionCalendar($arguments), $text);
|
||||
break;
|
||||
case "singleExhibitionDetails":
|
||||
$text = str_replace($pseudocode, embedExhibition($arguments, $settings, true), $text);
|
||||
break;
|
||||
case "eventCalendar":
|
||||
$text = str_replace($pseudocode, embedEventCalendar($arguments), $text);
|
||||
break;
|
||||
case "singleEventDetails":
|
||||
$text = str_replace($pseudocode, embedEvent($arguments, $settings, true), $text);
|
||||
break;
|
||||
switch ($command) {
|
||||
case "singleObjectTile":
|
||||
$text = str_replace($pseudocode, embedObject($arguments, $settings), $text);
|
||||
break;
|
||||
case "singleObjectDetails":
|
||||
$text = str_replace($pseudocode, embedObject($arguments, $settings, true), $text);
|
||||
break;
|
||||
case "singleCollectionTile":
|
||||
$text = str_replace($pseudocode, embedCollection($arguments, $settings), $text);
|
||||
break;
|
||||
case "singleCollectionDetails":
|
||||
$text = str_replace($pseudocode, embedCollection($arguments, $settings, true), $text);
|
||||
break;
|
||||
case "singleInstitutionTile":
|
||||
$text = str_replace($pseudocode, embedInstitution($arguments, $settings), $text);
|
||||
break;
|
||||
case "singleInstitutionDetails":
|
||||
$text = str_replace($pseudocode, embedInstitution($arguments, $settings, true), $text);
|
||||
break;
|
||||
case "exhibitionCalendar":
|
||||
$text = str_replace($pseudocode, embedExhibitionCalendar($arguments), $text);
|
||||
break;
|
||||
case "singleExhibitionDetails":
|
||||
$text = str_replace($pseudocode, embedExhibition($arguments, $settings, true), $text);
|
||||
break;
|
||||
case "eventCalendar":
|
||||
$text = str_replace($pseudocode, embedEventCalendar($arguments), $text);
|
||||
break;
|
||||
case "singleEventDetails":
|
||||
$text = str_replace($pseudocode, embedEvent($arguments, $settings, true), $text);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -134,11 +134,12 @@ function printStaticPagePart(string $file, string $elem):string {
|
|||
/**
|
||||
* This function prints an error page.
|
||||
*
|
||||
* @param string $content The error message.
|
||||
* @param array $settings General site settings / including the CSS.
|
||||
* @param string $content The error message.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
function printErrorPage(string $content):string {
|
||||
function printErrorPage(array $settings, string $content):string {
|
||||
|
||||
$output = '
|
||||
<!DOCTYPE html>
|
||||
|
@ -149,7 +150,7 @@ function printErrorPage(string $content):string {
|
|||
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
|
||||
<meta charset="UTF-8" />
|
||||
<title>' . $content . '</title>
|
||||
<link rel="stylesheet" type="text/css" href="themes/default/default.css" />
|
||||
<link rel="stylesheet" type="text/css" href="themes/' . $settings['css'] . '/theme.css" />
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@ require_once __DIR__ . "/inc/functions.php";
|
|||
// Check validity of request.
|
||||
|
||||
if (isset($_GET['id']) and !file_exists(__DIR__ . "/data/static/" . $_GET['id'] . ".json")) {
|
||||
echo printErrorPage("File does not exist.");
|
||||
echo printErrorPage($settings, "File does not exist.");
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -35,7 +35,7 @@ else if (file_exists(__DIR__ . "/data/static/" . $settings['startPage'] . ".json
|
|||
$id = $settings['startPage'];
|
||||
}
|
||||
else {
|
||||
echo printErrorPage("This file does not exist.");
|
||||
echo printErrorPage($settings, "This file does not exist.");
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@ require_once __DIR__ . "/inc/functions.php";
|
|||
// Check validity of request.
|
||||
|
||||
if (!isset($_GET['id']) or !is_numeric($_GET['id'])) {
|
||||
echo printErrorPage("Institution does not exist.");
|
||||
echo printErrorPage($settings, "Institution does not exist.");
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -25,12 +25,12 @@ $pages = loadPublicPages(); // Load overview of pages.
|
|||
$contents = json_decode(queryCachePage($settings['mdVersion'] . "?t=institution&instnr=" . urlencode($_GET['id']) . "&output=json", "institution", $settings), true);
|
||||
|
||||
if (!$contents || (isset($contents[0]) and $contents[0] == "There is no institution with this ID yet.")) {
|
||||
echo printErrorPage("Temporarily unavailable.");
|
||||
echo printErrorPage($settings, "Temporarily unavailable.");
|
||||
return;
|
||||
}
|
||||
|
||||
if ($settings['limitToInstitutions'] != [] and !in_array($_GET['id'], $settings['limitToInstitutions'])) {
|
||||
echo printErrorPage("This object does not belong to an enabled institution.");
|
||||
echo printErrorPage($settings, "This object does not belong to an enabled institution.");
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@ require_once __DIR__ . "/inc/functions.php";
|
|||
// Check validity of request.
|
||||
|
||||
if (!isset($_GET['id']) or !is_numeric($_GET['id'])) {
|
||||
echo printErrorPage("Object does not exist.");
|
||||
echo printErrorPage($settings, "Object does not exist.");
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -24,12 +24,12 @@ $pages = loadPublicPages(); // Load overview of pages.
|
|||
$contents = json_decode(queryCachePage($settings['mdVersion'] . "?t=objekt&oges=" . urlencode($_GET['id']) . "&output=json", "object", $settings), true);
|
||||
|
||||
if (!$contents || (isset($contents[0]) and $contents[0] == "There is no object with this ID yet.")) {
|
||||
echo printErrorPage("Temporarily unavailable.");
|
||||
echo printErrorPage($settings, "Temporarily unavailable.");
|
||||
return;
|
||||
}
|
||||
|
||||
if ($settings['limitToInstitutions'] != [] and !in_array($contents['object_institution']['institution_id'], $settings['limitToInstitutions'])) {
|
||||
echo printErrorPage("This object does not belong to an enabled institution.");
|
||||
echo printErrorPage($settings, "This object does not belong to an enabled institution.");
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
Reference in New Issue
Block a user