diff --git a/files/assets/js/bottom.js b/files/assets/js/bottom.js deleted file mode 100644 index bfa64639d..000000000 --- a/files/assets/js/bottom.js +++ /dev/null @@ -1,146 +0,0 @@ -function execute(element, attr) { - if (element.dataset.nonce != nonce) { - console.log("Nonce check failed!") - return - } - const funcs = element.getAttribute(`data-${attr}`).split(';') - for (const func of funcs) { - if (func) { - const split = func.split('(') - const name = split[0] - const args = split[1].replace(/[')]/g, "").split(',').map(a => a.trim()); - if (args[0] == 'this') args[0] = element - try { - window[name](...args); - } - catch (e) { - console.log(e) - console.log(name) - } - } - } -} - -const onsubmit = document.querySelectorAll('[data-onsubmit]'); -for (const element of onsubmit) { - element.addEventListener('submit', (event)=>{ - event.preventDefault(); - execute(element, 'onsubmit') - }); -} - -const onfocus = document.querySelectorAll('[data-onfocus]'); -for (const element of onfocus) { - element.addEventListener('focus', () => {execute(element, 'onfocus')}); -} - -const onclick_submit = document.querySelectorAll('[onclick_submit]'); -for (const element of onclick_submit) { - if (element.dataset.nonce != nonce) { - console.log("Nonce check failed!") - continue - } - element.addEventListener('click', () => {element.form.submit()}); -} - -const onchange_submit = document.querySelectorAll('[onchange_submit]'); -for (const element of onchange_submit) { - if (element.dataset.nonce != nonce) { - console.log("Nonce check failed!") - continue - } - element.addEventListener('change', () => {element.form.submit()}); -} - -const undisable_element = document.querySelectorAll('[data-undisable_element]'); -for (const element of undisable_element) { - if (element.dataset.nonce != nonce) { - console.log("Nonce check failed!") - continue - } - element.addEventListener('input', () => { - document.getElementById(element.dataset.undisable_element).disabled = false; - }); -} - -const setting_switchs = document.getElementsByClassName('setting_switch'); -for (const element of setting_switchs) { - if (element.dataset.nonce != nonce) { - console.log("Nonce check failed!") - continue - } - element.addEventListener('change', () => { - postToastSwitch(element,`/settings/personal?${element.name}=${element.checked}`); - }); -} - -const setting_selects = document.getElementsByClassName('setting_select'); -for (const element of setting_selects) { - if (element.dataset.nonce != nonce) { - console.log("Nonce check failed!") - continue - } - element.addEventListener('change', () => { - if (element.dataset.reload) - postToastReload(element,`/settings/personal?${element.name}=${element.value}`); - else - postToast(element,`/settings/personal?${element.name}=${element.value}`); - }); -} - -const reload_page = document.getElementById('reload_page') -if (reload_page) { - reload_page.addEventListener('click', () => {location.reload()}); -} - -const TH = document.getElementsByTagName('th') -for (const element of TH) { - element.addEventListener('click', () => {sort_table(element)}); -} - -const toggleelement = document.querySelectorAll('[data-toggleelement]'); -for (const element of toggleelement) { - element.addEventListener('click', () => { - document.getElementById(element.dataset.toggleelement).classList.toggle(element.dataset.toggleattr); - }); -} - -function register_new_elements(e) { - const showmores = document.getElementsByClassName('showmore') - for (const element of showmores) { - element.addEventListener('click', () => {showmore(element)}); - } - - const onclick = e.querySelectorAll('[data-onclick]'); - for (const element of onclick) { - element.addEventListener('click', () => {execute(element, 'onclick')}); - } - - const oninput = e.querySelectorAll('[data-oninput]'); - for (const element of oninput) { - element.addEventListener('input', () => {execute(element, 'oninput')}); - } - - const onmouseover = e.querySelectorAll('[data-onmouseover]'); - for (const element of onmouseover) { - element.addEventListener('mouseover', () => {execute(element, 'onmouseover')}); - } - - const onchange = e.querySelectorAll('[data-onchange]'); - for (const element of onchange) { - element.addEventListener('change', () => {execute(element, 'onchange')}); - } - - const popover_triggers = document.getElementsByClassName('user-name'); - for (const element of popover_triggers) { - element.addEventListener('click', (e) => {popclick(e)}); - } - - const expandable = document.querySelectorAll('.in-comment-image, img[alt^="![]("]'); - for (const element of expandable) { - element.addEventListener('click', () => {expandImage()}); - } -} - -register_new_elements(document); -bs_trigger(document); diff --git a/files/assets/js/core.js b/files/assets/js/core.js index f9b62c5de..a4fa1af32 100644 --- a/files/assets/js/core.js +++ b/files/assets/js/core.js @@ -450,3 +450,150 @@ function logout(t) { location.href = '/' }); } + +function execute(element, attr) { + if (element.dataset.nonce != nonce) { + console.log("Nonce check failed!") + return + } + const funcs = element.getAttribute(`data-${attr}`).split(';') + for (const func of funcs) { + if (func) { + const split = func.split('(') + const name = split[0] + const args = split[1].replace(/[')]/g, "").split(',').map(a => a.trim()); + if (args[0] == 'this') args[0] = element + try { + window[name](...args); + } + catch (e) { + console.log(e) + console.log(name) + } + } + } +} + +const onsubmit = document.querySelectorAll('[data-onsubmit]'); +for (const element of onsubmit) { + element.addEventListener('submit', (event)=>{ + event.preventDefault(); + execute(element, 'onsubmit') + }); +} + +const onfocus = document.querySelectorAll('[data-onfocus]'); +for (const element of onfocus) { + element.addEventListener('focus', () => {execute(element, 'onfocus')}); +} + +const onclick_submit = document.querySelectorAll('[onclick_submit]'); +for (const element of onclick_submit) { + if (element.dataset.nonce != nonce) { + console.log("Nonce check failed!") + continue + } + element.addEventListener('click', () => {element.form.submit()}); +} + +const onchange_submit = document.querySelectorAll('[onchange_submit]'); +for (const element of onchange_submit) { + if (element.dataset.nonce != nonce) { + console.log("Nonce check failed!") + continue + } + element.addEventListener('change', () => {element.form.submit()}); +} + +const undisable_element = document.querySelectorAll('[data-undisable_element]'); +for (const element of undisable_element) { + if (element.dataset.nonce != nonce) { + console.log("Nonce check failed!") + continue + } + element.addEventListener('input', () => { + document.getElementById(element.dataset.undisable_element).disabled = false; + }); +} + +const setting_switchs = document.getElementsByClassName('setting_switch'); +for (const element of setting_switchs) { + if (element.dataset.nonce != nonce) { + console.log("Nonce check failed!") + continue + } + element.addEventListener('change', () => { + postToastSwitch(element,`/settings/personal?${element.name}=${element.checked}`); + }); +} + +const setting_selects = document.getElementsByClassName('setting_select'); +for (const element of setting_selects) { + if (element.dataset.nonce != nonce) { + console.log("Nonce check failed!") + continue + } + element.addEventListener('change', () => { + if (element.dataset.reload) + postToastReload(element,`/settings/personal?${element.name}=${element.value}`); + else + postToast(element,`/settings/personal?${element.name}=${element.value}`); + }); +} + +const reload_page = document.getElementById('reload_page') +if (reload_page) { + reload_page.addEventListener('click', () => {location.reload()}); +} + +const TH = document.getElementsByTagName('th') +for (const element of TH) { + element.addEventListener('click', () => {sort_table(element)}); +} + +const toggleelement = document.querySelectorAll('[data-toggleelement]'); +for (const element of toggleelement) { + element.addEventListener('click', () => { + document.getElementById(element.dataset.toggleelement).classList.toggle(element.dataset.toggleattr); + }); +} + +function register_new_elements(e) { + const showmores = document.getElementsByClassName('showmore') + for (const element of showmores) { + element.addEventListener('click', () => {showmore(element)}); + } + + const onclick = e.querySelectorAll('[data-onclick]'); + for (const element of onclick) { + element.addEventListener('click', () => {execute(element, 'onclick')}); + } + + const oninput = e.querySelectorAll('[data-oninput]'); + for (const element of oninput) { + element.addEventListener('input', () => {execute(element, 'oninput')}); + } + + const onmouseover = e.querySelectorAll('[data-onmouseover]'); + for (const element of onmouseover) { + element.addEventListener('mouseover', () => {execute(element, 'onmouseover')}); + } + + const onchange = e.querySelectorAll('[data-onchange]'); + for (const element of onchange) { + element.addEventListener('change', () => {execute(element, 'onchange')}); + } + + const popover_triggers = document.getElementsByClassName('user-name'); + for (const element of popover_triggers) { + element.addEventListener('click', (e) => {popclick(e)}); + } + + const expandable = document.querySelectorAll('.in-comment-image, img[alt^="![]("]'); + for (const element of expandable) { + element.addEventListener('click', () => {expandImage()}); + } +} + +register_new_elements(document); +bs_trigger(document); diff --git a/files/templates/root.html b/files/templates/root.html index 3f054052a..4440f325b 100644 --- a/files/templates/root.html +++ b/files/templates/root.html @@ -28,6 +28,5 @@ {% block body required %}{% endblock %} {{html_head.stylesheets_lower()}} -