Added interpreter for pseudocode for displaying exhibitions, events.

Added basic search.
Added object pages.
This commit is contained in:
2018-06-15 11:26:25 +02:00
committed by Stefan Rohde-Enslin
parent a49746ab10
commit 80485a98ab
19 changed files with 1573 additions and 82 deletions

View File

@ -36,7 +36,7 @@ function printBackendHead(string $page = "home", string $title = "Home", string
$output .= '
<meta name="viewport" content="width=device-width, initial-scale=1" />
<script type="text/javascript" src="./js/newToolTip.js"></script>
<script type="text/javascript" src="./js/newToolTip.js" defer></script>
<script type="text/javascript" src="./js/main.js"></script>
<script type="text/javascript" src="../js/main.js"></script>

View File

@ -5,7 +5,7 @@
*
* @return {void}
*/
function removeElement(elem) {
async function removeElement(elem) {
while (elem.firstChild) {
elem.removeChild(elem.firstChild);
}
@ -29,16 +29,28 @@ document.addEventListener("DOMContentLoaded", function() {
let translations = {
"en" : {
"uploadFile" : "Upload file",
"submit" : "Submit",
"generate" : "Generate",
"eventCalendar" : "Event calendar",
"uploadFile" : "Upload file",
"submit" : "Submit",
"generate" : "Generate",
"embedCodeGenerator" : "Generator for embed code",
"helpEmbedCode" : "Here you can create embed code.",
"singleObjectTile" : "Single object (tile)",
"singleObjectDetails": "Single object (details)",
"singleCollection" : "Single collection",
"exhibitionCalendar" : "Exhibition calendar",
"eventCalendar" : "Event calendar",
},
"de" : {
"uploadFile" : "Eine Datei heraufladen",
"submit" : "Abschicken",
"generate" : "Generieren",
"eventCalendar" : "Veranstaltungen (Kalender)",
"uploadFile" : "Eine Datei heraufladen",
"submit" : "Abschicken",
"generate" : "Generieren",
"embedCodeGenerator" : "Generator für Einbettungen",
"helpEmbedCode" : "Hier können sie den embed-code generieren.",
"singleObjectTile" : "Einzelobjekt (Kachel)",
"singleObjectDetails": "Einzelobjekt (Details)",
"singleCollection" : "Einzelsammlung",
"exhibitionCalendar" : "Ausstellungskalender",
"eventCalendar" : "Veranstaltungen (Kalender)",
}
};
@ -159,7 +171,7 @@ document.addEventListener("DOMContentLoaded", function() {
}
}
(function() {
(async function() {
let trigger = document.getElementById("uploadFile");
if (trigger === undefined || trigger === null) return;
@ -206,7 +218,7 @@ document.addEventListener("DOMContentLoaded", function() {
overlay.appendChild(uploadForm);
document.getElementsByTagName("body")[0].appendChild(overlay);
document.getElementsByTagName("body")[0].addEventListener('keydown', function(e) {
document.getElementsByTagName("body")[0].addEventListener('keydown', async function(e) {
if (e.keyCode != 27) return;
removeElement(overlay);
});
@ -214,7 +226,7 @@ document.addEventListener("DOMContentLoaded", function() {
queryPage(
encodeURI('./files.php'),
function (request) {
let allFiles = request.response;
let allFiles = JSON.parse(request.response);
for (let i = 0, max = allFiles.length; i < max; i++) {
console.log(allFiles[i]);
@ -231,14 +243,56 @@ document.addEventListener("DOMContentLoaded", function() {
*/
(function() {
function generateToolTip(toolTipID, toolTipText, toolTipTitle = "", triggerId = "") {
let trigger = document.createElement("span");
trigger.classList.add("newToolTipTag");
trigger.classList.add("helpToolTip");
trigger.setAttribute("data-for", toolTipID);
let toolTip = document.createElement("div");
toolTip.id = "tooltip_" + toolTipID;
toolTip.classList.add("newToolTip");
toolTip.setAttribute("data-title", toolTipTitle);
let toolTipCont = document.createElement("p");
toolTipCont.textContent = toolTipText;
toolTip.appendChild(toolTipCont);
trigger.appendChild(toolTip);
return trigger;
}
let generator = document.getElementById("embedGenerator");
if (generator === undefined || generator === null) return;
// Define generator types
let generatorTypes = [
["", "", false, "text"],
["eventCalendar", getTranslation(translations, "eventCalendar"), true, "number"],
["", "", false],
["singleObjectTile", getTranslation(translations, "singleObjectTile"), true],
["singleObjectDetails", getTranslation(translations, "singleObjectDetails"), true],
["singleCollectionTile", getTranslation(translations, "singleCollection"), true],
["exhibitionCalendar", getTranslation(translations, "exhibitionCalendar"), true],
["eventCalendar", getTranslation(translations, "eventCalendar"), true],
];
// Add help tooltip
let generatorLabelSpan = document.createElement("span");
generatorLabelSpan.classList.add("labelLine");
let generatorLabel = document.createElement("label");
generatorLabel.textContent = getTranslation(translations, "embedCodeGenerator");
generatorLabelSpan.appendChild(generatorLabel);
generatorLabelSpan.appendChild(generateToolTip("embedGeneratorToolTip", getTranslation(translations, "helpEmbedCode"), getTranslation(translations, "embedCodeGenerator")));
generator.appendChild(generatorLabelSpan);
let selectType = document.createElement("select");
for (let i = 0, max = generatorTypes.length; i < max; i++) {
@ -246,7 +300,6 @@ document.addEventListener("DOMContentLoaded", function() {
generatorOption.value = generatorTypes[i][0];
generatorOption.textContent = generatorTypes[i][1];
generatorOption.setAttribute("data-useSpecifier", generatorTypes[i][2]);
generatorOption.setAttribute("data-inputType", generatorTypes[i][3]);
selectType.appendChild(generatorOption);
}
@ -274,7 +327,6 @@ document.addEventListener("DOMContentLoaded", function() {
generatorSpecifier.value = "";
if (selectType.options[selectType.selectedIndex].getAttribute("data-useSpecifier") == "true") {
generatorSpecifier.classList.remove("invisible");
generatorSpecifier.type = selectType.options[selectType.selectedIndex].getAttribute("data-inputType");
}
else generatorSpecifier.classList.add("invisible");
@ -283,13 +335,20 @@ document.addEventListener("DOMContentLoaded", function() {
});
buttonGenerate.addEventListener('click', function(e) {
function runGenerator() {
if (selectType.value == "") return;
generatorFieldCont.textContent = "[" + selectType.value + "]";
if (generatorSpecifier.value != "") {
generatorFieldCont.textContent += "{" + generatorSpecifier.value + "}";
}
}
generatorSpecifier.addEventListener('keydown', function(e) {
if (e.keyCode != 13) return;
e.stopPropagation(); e.preventDefault();
runGenerator();
});
buttonGenerate.addEventListener('click', function() { runGenerator(); });
generator.appendChild(generatorField);

View File

@ -22,7 +22,7 @@ $pages = loadPages(); // Load overview of pages.
*/
// Check for vars.
loadHttpToGlobals(["task", "startPage", "pageTitle", "logo", "url", "mdVersion", "maxFileSize", "defaultLang"]);
loadHttpToGlobals(["task", "startPage", "pageTitle", "logo", "url", "mdVersion", "mdImgFolder", "cacheRefreshInterval", "maxFileSize", "defaultLang"]);
if (isset($task) and $task == "update") { // Adding new users.
@ -32,11 +32,10 @@ if (isset($task) and $task == "update") { // Adding new users.
}
// Ensure that URLs end with a trailing slash.
if (isset($mdVersion)) {
$mdVersion = rtrim($mdVersion, "/") . "/";
}
if (isset($mdVersion)) $mdVersion = rtrim($mdVersion, "/") . "/";
if (isset($mdImgFolder)) $mdImgFolder = rtrim($mdImgFolder, "/") . "/";
foreach (["startPage", "pageTitle", "logo", "url", "mdVersion", "maxFileSize", "defaultLang"] as $var) {
foreach (["startPage", "pageTitle", "logo", "url", "mdVersion", "mdImgFolder", "cacheRefreshInterval", "maxFileSize", "defaultLang"] as $var) {
if (isset($$var)) $settings[$var] = $$var;
}
@ -117,6 +116,20 @@ echo '
<td>' . generateHelpToolTip("helpMDVersion", $translations['mdVersion'], $translations['helpMDVersion']) . '</td>
</tr>
<!-- MD Image Folder -->
<tr>
<th><label for="mdImgFolder">' . $translations['mdImgFolder'] . '</label></th>
<td><input type="url" id="mdImgFolder" name="mdImgFolder" placeholder="' . $translations['mdImgFolder']. '" value="'.$settings['mdImgFolder'].'" required /></td>
<td>' . generateHelpToolTip("helpMDimgFolder", $translations['mdImgFolder'], $translations['helpMDimgFolder']) . '</td>
</tr>
<!-- Refresh Interval -->
<tr>
<th><label for="cacheRefreshInterval">' . $translations['cacheRefreshInterval'] . '</label></th>
<td><input type="number" id="cacheRefreshInterval" name="cacheRefreshInterval" placeholder="' . $translations['cacheRefreshInterval']. '" value="'.$settings['cacheRefreshInterval'].'" required /></td>
<td>' . generateHelpToolTip("helpCacheRefreshInterval", $translations['cacheRefreshInterval'], $translations['helpCacheRefreshInterval']) . '</td>
</tr>
<!-- Max Upload Size -->
<tr>
<th><label for="maxFileSize">' . $translations['maxFileSize'] . '</label></th>

View File

@ -222,22 +222,28 @@ main { padding: .5em 5em 3em 3em; }
*/
#staticPageOptions > * { display: block; padding: .5em 1rem; }
#staticPageOptions > .labelLine { display: table; width: 100%; }
#staticPageOptions .helpToolTip { width: 2em; text-align: center; }
#staticPageOptions > .labelLine > * { display: table-cell; }
#staticPageOptions label { font-weight: bold; }
#staticPageOptions select { display: block; width: 100%; }
#staticPageOptions button { display: block; width: 100%; background: #0277BD; color: #FFF; transition: background .4s; }
#staticPageOptions button:hover { background: #039BE5; }
#embedGenerator .helpToolTip,
#staticPageOptions .helpToolTip { width: 2em; text-align: center; }
#pageTools > #embedGenerator { display: block;
margin-bottom: 1em; padding-bottom: 1em;
box-sizing: content-box; border-bottom: 1px solid #D6D6D6; }
#embedGenerator > * { display: block; width: 100%; }
#embedGenerator .buttonLike { cursor: pointer; }
#embedGenerator > .labelLine { margin-bottom: .5em; }
#pageTools > * { padding: 0 1rem; }
#staticPageOptions > .labelLine,
#embedGenerator > .labelLine,
.labelLine { display: table; width: 100%; }
.labelLine > * { display: table-cell; }
.labelLine label { font-weight: bold; }
/************
* Login Page
*/

View File

@ -29,6 +29,8 @@ $translations = [
"helpURL" => "<p>URL of the page. Filling out this field helps with optimization for search engines.</p>",
"startPage" => "Start page",
"helpStartPage" => "<p>The start page of the public site.</p>",
"mdImgFolder" => "Image folder (md)",
"helpMDimgFolder" => "<p>The folder in which image files are stored in the given instance of museum-digital.</p>",
"logo" => "Logo",
"helpLogo" => "<p>The logo of the site. Is mainly used for the little icon you see in the browser, right next to the title of the tab.</p>",
"mdVersion" => "Version of Museum-Digital",
@ -41,6 +43,14 @@ $translations = [
"helpLanguage" => "<p>The default language of this instance of md:cms.</p>",
"maxFileSize" => "Maximum upload size",
"helpMaxFileSize" => "<p>The maximum file size of file uploads.</p>",
"cacheRefreshInterval" => "Cache Refresh Interval",
"helpCacheRefreshInterval" => "<p>This setting determines how often contents fetched from museum-digital should be refreshed (the number equals X seconds).
<ul>
<li>Setting it to <code>0</code> disables it</li>
<li>Using a low value, means more accurate data, but slower loading time.</li>
<li>Using a high value, means data could be slightly outdated, but makes loading much faster.</li>
</ul>
</p>",
"IDatMD" => "ID at museum-digital",
"embedFromMD" => "Embed from museum-digital",