123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- "use strict";
- const blockShow = menuItem => {
-
- for (let mn of document.querySelectorAll("nav li"))
- mn.classList.remove("sel");
- dqs(`#mn${menuItem}`).className = "sel";
-
-
- if (dqs("header img").src.includes("MobClose")) dqs("header img").click();
-
-
- for (let sect of document.querySelectorAll("section"))
- sect.style.display = "none";
- dqs(`#${menuItem}`).style.display = "block";
-
-
-
- if (getContent[menuItem]) getContent[menuItem]();
- };
- const menuGen = () => {
- let role = dqs("#selRole").value;
- let res = "<ul>";
- for (let mi of menuItems[role])
- res += `<li id="mn${mi[0]}" onClick="blockShow('${mi[0]}')">${mi[1]}</li>\n`;
- res += "</ul>";
- dqs("nav").innerHTML = res;
- blockShow(menuItems[role][0][0]);
- dqs("#selRole").blur();
- };
- const headerOptGen = roles => {
- let res = '';
- for (let i = 0; i < roles.length; i++)
- res += `<option value=${roles[i]}>${roleNames[roles[i]]}</option>`;
- return res;
- };
- const showMenuMob = () => {
- let mmiDisp = dqs("nav").style.display || "none";
- dqs("nav").style.display =
- (mmiDisp == "none") ? "block" : "none";
- dqs("header img").src =
- (mmiDisp == "none") ? "static/menuMobClose.svg" : "static/menuMob.svg";
- }
- const chPwdApi = async () => {
- let pwd = dqs("#newPwd").value.trim(),
- pwd1 = dqs("#newPwd1").value.trim();
-
- dqs("#chPwdWarn").style.display = "none";
- if (pwd != pwd1) {
- dqs("#chPwdWarn").innerHTML = "Пароли не совпадают!";
- dqs("#chPwdWarn").style.display = "block";
- return;
- }
- if (pwd.length < 8) {
- dqs("#chPwdWarn").innerHTML =
- "Пароль должен содержать<br>не менее 8 символов!";
- dqs("#chPwdWarn").style.display = "block";
- return;
- }
- let apiResp = await apireq("usChPwd", [uLogin, pwd]);
- if (apiResp == "none") info(1, "Запрашиваемая операция отклонена.");
- else {
- dqs("#chPwdWin").style.display = "none";
- info(0,
- "Пароль успешно заменен.<br>Авторизуйтесь заново с новым паролем.");
- document.body.onclick = () => location.reload();
- }
- }
- const chPwd = () => {
- let role = dqs("#selRole").value;
- if (role == "root") info(1,
- "Смена пароля главного администратора веб-интерфейсом невозможна.");
- else if (role == "pupil" || role == "parent") info(0,
- "Для смены пароля обратитесь к администратору электронного журнала.");
- else {
- elems.chPwdElem = document.createElement("div");
- elems.chPwdElem.innerHTML = `
- <h1>Смена пароля</h1>
- <input type="password" id="newPwd" placeholder="Пароль">
- <input type="password" id="newPwd1" placeholder="Повторите пароль"
- onKeyDown="if (event.keyCode == 13) chPwdApi()">
- <button type="button" onClick="chPwdApi()">Сменить пароль</button>
- <button id="clButt" type="button" onClick="elems.chPwdElem.remove()"
- style="margin-top:-30px">Отмена</button>
- <div id="chPwdWarn"></div>
- `;
- elems.chPwdElem.id = "chPwdWin";
- dqs("#content").appendChild(elems.chPwdElem);
- elems.chPwdElem.style.display = "block";
- dqs("#newPwd").focus();
- }
- }
- const headerGen = async () => {
-
- dqs("#content").innerHTML += `
- <header>
- <img src="static/menuMob.svg" title="Меню" onClick="showMenuMob()">
- <span id="progName">ЭЖ «Шкала»</span>
- <span>${uLogin}:<span>
- <select id="selRole" onChange="menuGen()" title="Роль пользователя">
- ${headerOptGen(uRoles)}
- </select>
- <span id="chPwd" title="Сменить пароль" onClick="chPwd()">⚒</span>
- <a href='' title="Выход">▣</a>
- </header>
- <nav></nav>
- `;
- menuGen();
-
- try {
- let adminCont = await (await fetch("/a.a")).text();
- let versCont = await (await fetch("/history.html", {method: "GET"})).text();
- let histUrl = URL.createObjectURL(new Blob([versCont], {type: "text/html"}));
- versCont = versCont.split("<pre>")[1].trim().split(' ')[0];
- dqs("footer").innerHTML += `Адм.: ${adminCont} •
- <a href=${histUrl} target="_blank">v. ${versCont}</a>`;
- dqs("footer").style.display = "block";
- } catch(e) {;}
- };
|