templateGen/js/9.9.3/init.js
maru21 92bbebd2a1 Bugfixes and feature improvements new ver 9.9.3
fixed bug with sidebar click event not being cleared after accessing files and then pressing edit
some cosmetic changes animations
reimplemented bookshelfexport in localonly mode
added logout functionality
2023-10-07 20:42:58 +02:00

161 lines
4.2 KiB
JavaScript

import { hideMenus, showMenu, showSidebar, showTextBlocks, clickSetForm, clickImportFiles } from "./evts.js";
import { buildFile } from "./files.js";
import setPassword, { passwordHash, sessionVerification } from "./scripts.js";
import { getUsrId, logout } from "./scripts.js";
import parseFormOnSubmit from "./parseForm.js";
import { createStorageObj } from "./storage.js";
import XORCipher from "./xorc.js";
import sha256 from "./sha256.min.js";
import { loadNavBar, initTextBlocks } from "./web.js";
window.activeState = {
userId: getUsrId(),
activePage: "landing",
loadedTemplate: "",
fileName: "",
lastElement: "",
serverFilesTs: "",
lineBreak: 100,
localOnly: true,
templates: [],
templateFieldTypes: [
"simpleInput",
"longText",
"hiddenField",
"current_time",
"current_date",
"markup",
],
markups: [
"title",
"link",
"italic",
"green_highlighted",
"highlighted",
]
};
function init() {
//check if user is logged in
sessionVerification();
let verfiedStatus = window.sessionStorage.getItem(sha256("verified"));
if (verfiedStatus != null) {
//user logged in
//write verifiedStatus content into passwordHash for decode check later
passwordHash.set(XORCipher.decode(sha256("passwordHash"), verfiedStatus));
document.getElementById("login").style.display = "none";
} else {
document.getElementById("login").style.display = "block";
}
//load NavigationBar with templates according to server
loadNavBar();
//init Textblocks field with entries according to server
initTextBlocks();
//add event listeners to document and window
eventListeners();
//print current version to footer
printVersion();
//add sign out
document
.getElementById("logout")
.addEventListener("click", logout);
//adjust title for mobile use
if (screen.width < 993) {
document.getElementById("siteTitle").innerHTML = "TG";
}
}
function eventListeners() {
//add hideMenu to Body
document
.getElementsByClassName("w3-main")[0]
.addEventListener("click", hideMenus);
//add set Password to loginForm
document
.getElementById("submitPassword")
.addEventListener("click", setPassword);
//add toggle Navigation Menu
document
.getElementById("toggleNavigationMenu")
.addEventListener("click", showMenu);
//add loadTemplateBtn event showMenu
document
.getElementById("loadTemplateBtn")
.addEventListener("click", showMenu);
//add toggle sideBar Menu
document
.getElementById("toggleSidebarMenu")
.addEventListener("click", showSidebar);
//add toggle files Menu and sidebar button
document
.getElementById("toggleFilesMenuSB")
.addEventListener("click", buildFile);
document
.getElementById("toggleFilesMenu")
.addEventListener("click", buildFile);
//add load template sidebar entry
document
.getElementById("loadTemplateBtn")
.addEventListener("click", showMenu);
//add toggle textBLocks Menu
document
.getElementById("toggleTestBlocksMenu")
.addEventListener("click", showTextBlocks);
//add setFormBtn for use in form
document
.getElementById("setFormBtn")
.addEventListener("click", (e) => clickSetForm(e));
//add saveFiles to server listener on launch page
document
.getElementById("importFilesSB")
.addEventListener("click", () => clickImportFiles());
//add key listener for ctrl s in form mode
window.addEventListener("keydown", (e) => {
if (e.ctrlKey && e.key == "s") {
if (activeState.activePage == "form");
createStorageObj();
parseFormOnSubmit();
e.preventDefault();
}
})
}
function printVersion() {
const scripts = document.getElementsByTagName("script");
const versionSpan = document.getElementById("currentVersion").lastChild;
for (var i=0;i<scripts.length;i++) {
if (scripts[i].src) {
let source = scripts[i].src;
// js/version/main.js
let pathVersion = source.split("/");
pathVersion = pathVersion[pathVersion.length-2];
//add it to document footer currentVersion
versionSpan.textContent = "version: " + pathVersion;
}
}
}
export default init;