forked from rDrama/rDrama
move bottom.js to core.js
parent
18ecf0a803
commit
d272a467bc
|
@ -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);
|
|
@ -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);
|
||||
|
|
|
@ -28,6 +28,5 @@
|
|||
<script src="{{'js/top.js' | asset}}"></script>
|
||||
{% block body required %}{% endblock %}
|
||||
{{html_head.stylesheets_lower()}}
|
||||
<script defer src="{{'js/bottom.js' | asset}}"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
Loading…
Reference in New Issue