rDrama/files/assets/js/bottom.js

144 lines
4.0 KiB
JavaScript
Raw Normal View History

2022-12-30 12:14:18 +00:00
function execute(element, attr) {
2023-01-01 07:55:25 +00:00
if (element.dataset.nonce != nonce) {
console.log("Nonce check failed!")
return
}
2022-12-30 12:14:18 +00:00
const funcs = element.getAttribute(`data-${attr}`).split(';')
for (const func of funcs) {
if (func) {
const split = func.split('(')
const name = split[0]
2023-01-01 08:56:11 +00:00
const args = split[1].replace(/[')]/g, "").split(',').map(a => a.trim());
2022-12-30 12:14:18 +00:00
if (args[0] == 'this') args[0] = element
try {
window[name](...args);
}
catch (e) {
2022-12-30 12:52:59 +00:00
console.log(e)
2022-12-30 12:14:18 +00:00
console.log(name)
}
}
}
}
document.addEventListener("click", function(e){
const element = e.target
2023-01-01 11:17:29 +00:00
if (element instanceof HTMLImageElement && (element.alt.startsWith('![](')) || element.classList.contains('in-comment-image'))
2022-12-30 12:14:18 +00:00
expandImage()
else if (element.tagName == "TH")
sort_table(element)
else if (element.classList.contains('giphy'))
insertGIF(e.target.src);
else if (element.classList.contains('gif-cat-overlay'))
searchGifs(e.target.firstElementChild.innerHTML);
else if (element.dataset.href)
location.href = element.dataset.href;
if (element.dataset.toggleelement) {
document.getElementById(element.dataset.toggleelement).classList.toggle(element.dataset.toggleattr)
}
});
const onsubmit = document.querySelectorAll('[data-onsubmit]');
for (const element of onsubmit) {
2022-12-30 12:52:59 +00:00
element.onsubmit = (event)=>{
event.preventDefault();
execute(element, 'onsubmit')
};
2022-12-30 12:14:18 +00:00
}
const onfocus = document.querySelectorAll('[data-onfocus]');
for (const element of onfocus) {
element.onfocus = ()=>{execute(element, 'onfocus')};
}
2023-01-01 09:45:46 +00:00
const onclick_submit = document.querySelectorAll('[onclick_submit]');
for (const element of onclick_submit) {
2023-01-01 07:55:25 +00:00
if (element.dataset.nonce != nonce) {
console.log("Nonce check failed!")
continue
}
2022-12-30 12:14:18 +00:00
element.onclick = () => {element.form.submit()};
}
2023-01-01 09:45:46 +00:00
const onchange_submit = document.querySelectorAll('[onchange_submit]');
for (const element of onchange_submit) {
2023-01-01 07:55:25 +00:00
if (element.dataset.nonce != nonce) {
console.log("Nonce check failed!")
continue
}
2022-12-30 12:14:18 +00:00
element.onchange = () => {element.form.submit()};
}
2023-01-01 02:17:46 +00:00
const undisable_element = document.querySelectorAll('[data-undisable_element]');
for (const element of undisable_element) {
2023-01-01 07:55:25 +00:00
if (element.dataset.nonce != nonce) {
console.log("Nonce check failed!")
continue
}
2022-12-30 12:14:18 +00:00
element.oninput = () => {
2023-01-01 02:17:46 +00:00
document.getElementById(element.dataset.undisable_element).disabled = false;
2022-12-30 12:14:18 +00:00
};
}
const setting_switchs = document.getElementsByClassName('setting_switch');
for (const element of setting_switchs) {
2023-01-01 07:55:25 +00:00
if (element.dataset.nonce != nonce) {
console.log("Nonce check failed!")
continue
}
2022-12-30 12:14:18 +00:00
element.onchange = () => {
2023-01-01 02:50:06 +00:00
postToastSwitch(element,`/settings/personal?${element.name}=${element.checked}`);
2022-12-30 12:14:18 +00:00
};
}
2023-01-01 14:19:25 +00:00
const setting_selects = document.getElementsByClassName('setting_select');
for (const element of setting_selects) {
2023-01-01 07:55:25 +00:00
if (element.dataset.nonce != nonce) {
console.log("Nonce check failed!")
continue
}
2022-12-30 12:14:18 +00:00
element.onchange = () => {
2023-01-01 14:19:25 +00:00
if (element.dataset.reload)
postToastReload(element,`/settings/personal?${element.name}=${element.value}`);
else
postToast(element,`/settings/personal?${element.name}=${element.value}`);
2022-12-30 12:14:18 +00:00
};
}
2023-01-01 02:53:35 +00:00
const reload_page = document.getElementById('reload_page')
2023-01-01 07:55:25 +00:00
if (reload_page) {
2022-12-30 12:14:18 +00:00
reload_page.onclick = ()=>{location.reload()};
2023-01-01 07:55:25 +00:00
}
function register_new_elements(e) {
2023-01-20 23:47:27 +00:00
for (const element of document.getElementsByClassName('showmore')) {
element.onclick = () => {
showmore(element)
};
}
2023-01-01 07:55:25 +00:00
const onclick = e.querySelectorAll('[data-onclick]');
for (const element of onclick) {
element.onclick = ()=>{execute(element, 'onclick')};
}
const oninput = e.querySelectorAll('[data-oninput]');
for (const element of oninput) {
element.oninput = ()=>{execute(element, 'oninput')};
}
const onmouseover = e.querySelectorAll('[data-onmouseover]');
for (const element of onmouseover) {
element.onmouseover = ()=>{execute(element, 'onmouseover')};
}
const onchange = e.querySelectorAll('[data-onchange]');
for (const element of onchange) {
element.onchange = ()=>{execute(element, 'onchange')};
}
}
register_new_elements(document);
bs_trigger(document);