Added interpreter for pseudocode for displaying exhibitions, events.
Added basic search. Added object pages.
This commit is contained in:
@ -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>
|
||||
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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>
|
||||
|
@ -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
|
||||
*/
|
||||
|
@ -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",
|
||||
|
Reference in New Issue
Block a user