convert "var" to "let" and "const"
parent
30405e1841
commit
c0676e198c
|
@ -1,4 +1,4 @@
|
||||||
declare var process: {
|
declare const process: {
|
||||||
env: Record<string, any>;
|
env: Record<string, any>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -124,8 +124,8 @@ function bet_vote(t, oid) {
|
||||||
for(let el of document.getElementsByClassName('cost')) {
|
for(let el of document.getElementsByClassName('cost')) {
|
||||||
el.classList.add('d-none')
|
el.classList.add('d-none')
|
||||||
}
|
}
|
||||||
var scoretext = document.getElementById('option-' + oid);
|
const scoretext = document.getElementById('option-' + oid);
|
||||||
var score = Number(scoretext.textContent);
|
const score = Number(scoretext.textContent);
|
||||||
scoretext.textContent = score + 1;
|
scoretext.textContent = score + 1;
|
||||||
|
|
||||||
document.getElementById("user-coins-amount").innerText = parseInt(document.getElementById("user-coins-amount").innerText) - 200;
|
document.getElementById("user-coins-amount").innerText = parseInt(document.getElementById("user-coins-amount").innerText) - 200;
|
||||||
|
|
|
@ -250,7 +250,7 @@ function post_comment(fullname, hide){
|
||||||
}
|
}
|
||||||
|
|
||||||
document.onpaste = function(event) {
|
document.onpaste = function(event) {
|
||||||
var focused = document.activeElement;
|
const focused = document.activeElement;
|
||||||
const files = structuredClone(event.clipboardData.files);
|
const files = structuredClone(event.clipboardData.files);
|
||||||
|
|
||||||
if (files.length > 4)
|
if (files.length > 4)
|
||||||
|
@ -262,7 +262,7 @@ document.onpaste = function(event) {
|
||||||
if (!files.length) return
|
if (!files.length) return
|
||||||
|
|
||||||
if (focused.id.includes('reply-form-body-')) {
|
if (focused.id.includes('reply-form-body-')) {
|
||||||
var fullname = focused.dataset.fullname;
|
const fullname = focused.dataset.fullname;
|
||||||
f=document.getElementById('file-upload-reply-' + fullname);
|
f=document.getElementById('file-upload-reply-' + fullname);
|
||||||
try {
|
try {
|
||||||
let filename = ''
|
let filename = ''
|
||||||
|
@ -275,7 +275,7 @@ document.onpaste = function(event) {
|
||||||
catch(e) {}
|
catch(e) {}
|
||||||
}
|
}
|
||||||
else if (focused.id.includes('comment-edit-body-')) {
|
else if (focused.id.includes('comment-edit-body-')) {
|
||||||
var id = focused.dataset.id;
|
const id = focused.dataset.id;
|
||||||
f=document.getElementById('file-edit-reply-' + id);
|
f=document.getElementById('file-edit-reply-' + id);
|
||||||
let filename = ''
|
let filename = ''
|
||||||
for (const file of files)
|
for (const file of files)
|
||||||
|
@ -285,7 +285,7 @@ document.onpaste = function(event) {
|
||||||
document.getElementById('filename-edit-reply-' + id).textContent = filename;
|
document.getElementById('filename-edit-reply-' + id).textContent = filename;
|
||||||
}
|
}
|
||||||
else if (focused.id.includes('post-edit-box-')) {
|
else if (focused.id.includes('post-edit-box-')) {
|
||||||
var id = focused.dataset.id;
|
const id = focused.dataset.id;
|
||||||
f=document.getElementById('file-upload-edit-' + id);
|
f=document.getElementById('file-upload-edit-' + id);
|
||||||
let filename = ''
|
let filename = ''
|
||||||
for (const file of files)
|
for (const file of files)
|
||||||
|
|
|
@ -156,9 +156,9 @@ function autoExpand(field) {
|
||||||
|
|
||||||
field.style.height = 'inherit';
|
field.style.height = 'inherit';
|
||||||
|
|
||||||
var computed = window.getComputedStyle(field);
|
let computed = window.getComputedStyle(field);
|
||||||
|
|
||||||
var height = parseInt(computed.getPropertyValue('border-top-width'), 10)
|
let height = parseInt(computed.getPropertyValue('border-top-width'), 10)
|
||||||
+ parseInt(computed.getPropertyValue('padding-top'), 10)
|
+ parseInt(computed.getPropertyValue('padding-top'), 10)
|
||||||
+ field.scrollHeight
|
+ field.scrollHeight
|
||||||
+ parseInt(computed.getPropertyValue('padding-bottom'), 10)
|
+ parseInt(computed.getPropertyValue('padding-bottom'), 10)
|
||||||
|
@ -182,7 +182,7 @@ function smoothScrollTop()
|
||||||
// Click navbar to scroll back to top
|
// Click navbar to scroll back to top
|
||||||
const nav = document.getElementsByTagName('nav')
|
const nav = document.getElementsByTagName('nav')
|
||||||
|
|
||||||
if (nav) {
|
if (nav.length) {
|
||||||
nav[0].addEventListener('click', (e) => {
|
nav[0].addEventListener('click', (e) => {
|
||||||
if (e.target.id === "navbar" ||
|
if (e.target.id === "navbar" ||
|
||||||
e.target.classList.contains("container-fluid") ||
|
e.target.classList.contains("container-fluid") ||
|
||||||
|
@ -272,7 +272,7 @@ function bs_trigger(e) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var bsTriggerOnReady = function() {
|
let bsTriggerOnReady = function() {
|
||||||
bs_trigger(document);
|
bs_trigger(document);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -313,13 +313,13 @@ function showmore() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function formatDate(d) {
|
function formatDate(d) {
|
||||||
var year = d.getFullYear();
|
let year = d.getFullYear();
|
||||||
var monthAbbr = d.toLocaleDateString('en-us', {month: 'short'});
|
let monthAbbr = d.toLocaleDateString('en-us', {month: 'short'});
|
||||||
var day = d.getDate();
|
let day = d.getDate();
|
||||||
var hour = ("0" + d.getHours()).slice(-2);
|
let hour = ("0" + d.getHours()).slice(-2);
|
||||||
var minute = ("0" + d.getMinutes()).slice(-2);
|
let minute = ("0" + d.getMinutes()).slice(-2);
|
||||||
var second = ("0" + d.getSeconds()).slice(-2);
|
let second = ("0" + d.getSeconds()).slice(-2);
|
||||||
var tzAbbr = d.toLocaleTimeString('en-us', {timeZoneName: 'short'}).split(' ')[2];
|
let tzAbbr = d.toLocaleTimeString('en-us', {timeZoneName: 'short'}).split(' ')[2];
|
||||||
|
|
||||||
return (day + " " + monthAbbr + " " + year + " "
|
return (day + " " + monthAbbr + " " + year + " "
|
||||||
+ hour + ":" + minute + ":" + second + " " + tzAbbr);
|
+ hour + ":" + minute + ":" + second + " " + tzAbbr);
|
||||||
|
@ -383,15 +383,12 @@ function sendFormXHR(e, extraActionsOnSuccess) {
|
||||||
document.getElementById('toast-post-error-text').innerText = "Error, please try again later."
|
document.getElementById('toast-post-error-text').innerText = "Error, please try again later."
|
||||||
try {
|
try {
|
||||||
let data=JSON.parse(xhr.response);
|
let data=JSON.parse(xhr.response);
|
||||||
var myToast = bootstrap.Toast.getOrCreateInstance(document.getElementById('toast-post-error'));
|
bootstrap.Toast.getOrCreateInstance(document.getElementById('toast-post-error')).show();
|
||||||
myToast.show();
|
|
||||||
document.getElementById('toast-post-error-text').innerText = data["error"];
|
document.getElementById('toast-post-error-text').innerText = data["error"];
|
||||||
if (data && data["details"]) document.getElementById('toast-post-error-text').innerText = data["details"];
|
if (data && data["details"]) document.getElementById('toast-post-error-text').innerText = data["details"];
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
var myToast = bootstrap.Toast.getOrCreateInstance(document.getElementById('toast-post-success'));
|
bootstrap.Toast.getOrCreateInstance(document.getElementById('toast-post-success')).hide();
|
||||||
myToast.hide();
|
bootstrap.Toast.getOrCreateInstance(document.getElementById('toast-post-error')).show();
|
||||||
var myToast = bootstrap.Toast.getOrCreateInstance(document.getElementById('toast-post-error'));
|
|
||||||
myToast.show();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,28 +1,28 @@
|
||||||
const fireworks = document.getElementsByClassName("firework")
|
const fireworks = document.getElementsByClassName("firework")
|
||||||
var counter = 0
|
let counter = 0
|
||||||
|
|
||||||
for (let firework of fireworks){
|
for (let firework of fireworks){
|
||||||
var timeout = 2000 * counter
|
const timeout = 2000 * counter
|
||||||
counter++
|
counter++
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
setInterval(() => {
|
setInterval(() => {
|
||||||
firework.firstElementChild.src = "/i/firework-trail.webp"
|
firework.firstElementChild.src = "/i/firework-trail.webp"
|
||||||
|
|
||||||
var xpos = Math.floor(Math.random() * 80) + 5
|
const xpos = Math.floor(Math.random() * 80) + 5
|
||||||
var ypos = 95
|
let ypos = 95
|
||||||
firework.style.top=ypos+"%"
|
firework.style.top=ypos+"%"
|
||||||
firework.style.left=xpos+"%"
|
firework.style.left=xpos+"%"
|
||||||
|
|
||||||
firework.style.display="inline-block"
|
firework.style.display="inline-block"
|
||||||
var hue = Math.floor(Math.random()*360)+1
|
const hue = Math.floor(Math.random()*360)+1
|
||||||
firework.style.filter="hue-rotate("+hue+"deg)"
|
firework.style.filter="hue-rotate("+hue+"deg)"
|
||||||
|
|
||||||
var id = null
|
let id = null
|
||||||
var height = Math.floor(Math.random()*60)+15
|
const height = Math.floor(Math.random()*60)+15
|
||||||
clearInterval(id);
|
clearInterval(id);
|
||||||
id = setInterval(frame, 20);
|
id = setInterval(frame, 20);
|
||||||
|
|
||||||
var vnum = Math.floor(Math.random()*1000)
|
const vnum = Math.floor(Math.random()*1000)
|
||||||
|
|
||||||
function frame() {
|
function frame() {
|
||||||
if (ypos <= height) {
|
if (ypos <= height) {
|
||||||
|
@ -35,4 +35,4 @@ setTimeout(() => {
|
||||||
}
|
}
|
||||||
}, 5000)
|
}, 5000)
|
||||||
}, timeout)
|
}, timeout)
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,15 +13,15 @@ async function getGif(searchTerm) {
|
||||||
document.getElementById('gifSearch').value = null;
|
document.getElementById('gifSearch').value = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
var loadGIFs = document.getElementById('gifs-load-more');
|
const loadGIFs = document.getElementById('gifs-load-more');
|
||||||
|
|
||||||
var noGIFs = document.getElementById('no-gifs-found');
|
const noGIFs = document.getElementById('no-gifs-found');
|
||||||
|
|
||||||
var container = document.getElementById('GIFs');
|
const container = document.getElementById('GIFs');
|
||||||
|
|
||||||
var backBtn = document.getElementById('gifs-back-btn');
|
const backBtn = document.getElementById('gifs-back-btn');
|
||||||
|
|
||||||
var cancelBtn = document.getElementById('gifs-cancel-btn');
|
const cancelBtn = document.getElementById('gifs-cancel-btn');
|
||||||
|
|
||||||
container.innerHTML = '';
|
container.innerHTML = '';
|
||||||
|
|
||||||
|
@ -43,9 +43,9 @@ async function getGif(searchTerm) {
|
||||||
|
|
||||||
let response = await fetch("/giphy?searchTerm=" + searchTerm + "&limit=48");
|
let response = await fetch("/giphy?searchTerm=" + searchTerm + "&limit=48");
|
||||||
let data = await response.json()
|
let data = await response.json()
|
||||||
var max = data.length - 1
|
const max = data.length - 1
|
||||||
data = data.data
|
data = data.data
|
||||||
var gifURL = [];
|
const gifURL = [];
|
||||||
|
|
||||||
if (max <= 0) {
|
if (max <= 0) {
|
||||||
noGIFs.innerHTML = '<div class="text-center py-3 mt-3"><div class="mb-3"><i class="fas fa-frown text-gray-500" style="font-size: 3.5rem"></i></div><p class="font-weight-bold text-gray-500 mb-0">Aw shucks. No GIFs found...</p></div>';
|
noGIFs.innerHTML = '<div class="text-center py-3 mt-3"><div class="mb-3"><i class="fas fa-frown text-gray-500" style="font-size: 3.5rem"></i></div><p class="font-weight-bold text-gray-500 mb-0">Aw shucks. No GIFs found...</p></div>';
|
||||||
|
@ -53,7 +53,7 @@ async function getGif(searchTerm) {
|
||||||
loadGIFs.innerHTML = null;
|
loadGIFs.innerHTML = null;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
for (var i = 0; i < 48; i++) {
|
for (let i = 0; i < 48; i++) {
|
||||||
gifURL[i] = "https://media.giphy.com/media/" + data[i].id + "/giphy.webp";
|
gifURL[i] = "https://media.giphy.com/media/" + data[i].id + "/giphy.webp";
|
||||||
if (data[i].username==''){
|
if (data[i].username==''){
|
||||||
container.innerHTML += ('<div class="card bg-white" style="overflow: hidden" data-bs-dismiss="modal" aria-label="Close" onclick="insertGIF(\'' + 'https://media.giphy.com/media/' + data[i].id + '/giphy.webp' + '\',\'' + commentFormID + '\')"><img loading="lazy" class="img-fluid" src="' + gifURL[i] + '"></div>');
|
container.innerHTML += ('<div class="card bg-white" style="overflow: hidden" data-bs-dismiss="modal" aria-label="Close" onclick="insertGIF(\'' + 'https://media.giphy.com/media/' + data[i].id + '/giphy.webp' + '\',\'' + commentFormID + '\')"><img loading="lazy" class="img-fluid" src="' + gifURL[i] + '"></div>');
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
let purchaseQuantity = 1;
|
let purchaseQuantity = 1;
|
||||||
var lotteryOnReady = function () {
|
const lotteryOnReady = function () {
|
||||||
checkLotteryStats();
|
checkLotteryStats();
|
||||||
|
|
||||||
// Show ticket being pulled.
|
// Show ticket being pulled.
|
||||||
|
|
|
@ -54,17 +54,17 @@ function markdown(t) {
|
||||||
input = input.replace(/\|\|(.*?)\|\|/g, '<spoiler>$1</spoiler>')
|
input = input.replace(/\|\|(.*?)\|\|/g, '<spoiler>$1</spoiler>')
|
||||||
input = input.replace(/(\n|^)>([^ >][^\n]*)/g, '$1<g>\>$2</g>')
|
input = input.replace(/(\n|^)>([^ >][^\n]*)/g, '$1<g>\>$2</g>')
|
||||||
|
|
||||||
var emojis = Array.from(input.matchAll(/:([a-z0-9_\-!#@]{1,36}):(?!\/)/gi))
|
const emojis = Array.from(input.matchAll(/:([a-z0-9_\-!#@]{1,36}):(?!\/)/gi))
|
||||||
if(emojis != null){
|
if(emojis != null){
|
||||||
for(i = 0; i < emojis.length; i++){
|
for(i = 0; i < emojis.length; i++){
|
||||||
var old = emojis[i][0];
|
const old = emojis[i][0];
|
||||||
if (old.includes('marseyrandom')) continue
|
if (old.includes('marseyrandom')) continue
|
||||||
var emoji = old.replace(/[:!@#]/g,'').toLowerCase();
|
const emoji = old.replace(/[:!@#]/g,'').toLowerCase();
|
||||||
var mirroredClass = old.indexOf('!') == -1 ? '' : 'mirrored';
|
const mirroredClass = old.indexOf('!') == -1 ? '' : 'mirrored';
|
||||||
var emojiClass = old.indexOf('#') == -1 ? 'emoji' : 'emoji-lg';
|
const emojiClass = old.indexOf('#') == -1 ? 'emoji' : 'emoji-lg';
|
||||||
if (emoji.endsWith('pat') && emoji != 'marseyunpettablepat') {
|
if (emoji.endsWith('pat') && emoji != 'marseyunpettablepat') {
|
||||||
emoji = emoji.substr(0, emoji.length - 3);
|
emoji = emoji.substr(0, emoji.length - 3);
|
||||||
var url = old.indexOf('@') != -1 ? `/@${emoji}/pic` : `/e/${emoji}.webp`;
|
const url = old.indexOf('@') != -1 ? `/@${emoji}/pic` : `/e/${emoji}.webp`;
|
||||||
input = input.replace(old, `<span class="pat-preview ${mirroredClass}" data-bs-toggle="tooltip"><img src="/i/hand.webp"><img class="${emojiClass}" src="${url}"></span>`);
|
input = input.replace(old, `<span class="pat-preview ${mirroredClass}" data-bs-toggle="tooltip"><img src="/i/hand.webp"><img class="${emojiClass}" src="${url}"></span>`);
|
||||||
} else {
|
} else {
|
||||||
input = input.replace(old, `<img class="${emojiClass} ${mirroredClass}" src="/e/${emoji}.webp">`);
|
input = input.replace(old, `<img class="${emojiClass} ${mirroredClass}" src="/e/${emoji}.webp">`);
|
||||||
|
@ -75,8 +75,8 @@ function markdown(t) {
|
||||||
let options = Array.from(input.matchAll(/\s*\$\$([^\$\n]+)\$\$\s*/gi))
|
let options = Array.from(input.matchAll(/\s*\$\$([^\$\n]+)\$\$\s*/gi))
|
||||||
if(options != null){
|
if(options != null){
|
||||||
for(i = 0; i < options.length; i++){
|
for(i = 0; i < options.length; i++){
|
||||||
var option = options[i][0];
|
const option = options[i][0];
|
||||||
var option2 = option.replace(/\$\$/g, '').replace(/\n/g, '')
|
const option2 = option.replace(/\$\$/g, '').replace(/\n/g, '')
|
||||||
input = input.replace(option, '');
|
input = input.replace(option, '');
|
||||||
input += `<div class="custom-control"><input type="checkbox" class="custom-control-input" id="option-${i}"><label class="custom-control-label" for="option-${i}">${option2} - <a>0 votes</a></label></div>`;
|
input += `<div class="custom-control"><input type="checkbox" class="custom-control-input" id="option-${i}"><label class="custom-control-label" for="option-${i}">${option2} - <a>0 votes</a></label></div>`;
|
||||||
}
|
}
|
||||||
|
@ -85,8 +85,8 @@ function markdown(t) {
|
||||||
options = Array.from(input.matchAll(/\s*&&([^\$\n]+)&&\s*/gi))
|
options = Array.from(input.matchAll(/\s*&&([^\$\n]+)&&\s*/gi))
|
||||||
if(options != null){
|
if(options != null){
|
||||||
for(i = 0; i < options.length; i++){
|
for(i = 0; i < options.length; i++){
|
||||||
var option = options[i][0];
|
const option = options[i][0];
|
||||||
var option2 = option.replace(/&&/g, '').replace(/\n/g, '')
|
const option2 = option.replace(/&&/g, '').replace(/\n/g, '')
|
||||||
input = input.replace(option, '');
|
input = input.replace(option, '');
|
||||||
input += `<div class="custom-control"><input type="radio" name="choice" class="custom-control-input" id="option-${i}"><label class="custom-control-label" for="option-${i}">${option2} - <a>0 votes</a></label></div>`;
|
input += `<div class="custom-control"><input type="radio" name="choice" class="custom-control-input" id="option-${i}"><label class="custom-control-label" for="option-${i}">${option2} - <a>0 votes</a></label></div>`;
|
||||||
}
|
}
|
||||||
|
@ -100,13 +100,13 @@ function markdown(t) {
|
||||||
|
|
||||||
function charLimit(form, text) {
|
function charLimit(form, text) {
|
||||||
|
|
||||||
var input = document.getElementById(form);
|
const input = document.getElementById(form);
|
||||||
|
|
||||||
var text = document.getElementById(text);
|
text = document.getElementById(text);
|
||||||
|
|
||||||
var length = input.value.length;
|
const length = input.value.length;
|
||||||
|
|
||||||
var maxLength = input.getAttribute("maxlength");
|
const maxLength = input.getAttribute("maxlength");
|
||||||
|
|
||||||
if (length >= maxLength) {
|
if (length >= maxLength) {
|
||||||
text.style.color = "#E53E3E";
|
text.style.color = "#E53E3E";
|
||||||
|
@ -123,4 +123,4 @@ function charLimit(form, text) {
|
||||||
|
|
||||||
function remove_dialog() {
|
function remove_dialog() {
|
||||||
window.onbeforeunload = null;
|
window.onbeforeunload = null;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
var prevScrollpos = window.pageYOffset;
|
let prevScrollpos = window.pageYOffset;
|
||||||
window.onscroll = function () {
|
window.onscroll = function () {
|
||||||
var currentScrollPos = window.pageYOffset;
|
const currentScrollPos = window.pageYOffset;
|
||||||
|
|
||||||
var topBar = document.getElementById("fixed-bar-mobile");
|
const topBar = document.getElementById("fixed-bar-mobile");
|
||||||
|
|
||||||
var bottomBar = document.getElementById("mobile-bottom-navigation-bar");
|
const bottomBar = document.getElementById("mobile-bottom-navigation-bar");
|
||||||
|
|
||||||
var dropdown = document.getElementById("mobileSortDropdown");
|
const dropdown = document.getElementById("mobileSortDropdown");
|
||||||
|
|
||||||
var navbar = document.getElementById("navbar");
|
const navbar = document.getElementById("navbar");
|
||||||
|
|
||||||
if (bottomBar != null) {
|
if (bottomBar != null) {
|
||||||
if (prevScrollpos > currentScrollPos && (window.innerHeight + currentScrollPos) < (document.body.offsetHeight - 65)) {
|
if (prevScrollpos > currentScrollPos && (window.innerHeight + currentScrollPos) < (document.body.offsetHeight - 65)) {
|
||||||
|
@ -41,4 +41,4 @@ window.onscroll = function () {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
prevScrollpos = currentScrollPos;
|
prevScrollpos = currentScrollPos;
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,7 @@ function urlB64ToUint8Array(base64String) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateSubscriptionOnServer(subscription, apiEndpoint) {
|
function updateSubscriptionOnServer(subscription, apiEndpoint) {
|
||||||
var formData = new FormData();
|
const formData = new FormData();
|
||||||
formData.append("subscription_json", JSON.stringify(subscription));
|
formData.append("subscription_json", JSON.stringify(subscription));
|
||||||
|
|
||||||
const xhr = createXhrWithFormKey(
|
const xhr = createXhrWithFormKey(
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
var isleft = true
|
const isleft = true
|
||||||
setInterval(() => {
|
setInterval(() => {
|
||||||
let ricardo1 = document.getElementById("ricardo1")
|
let ricardo1 = document.getElementById("ricardo1")
|
||||||
var height = Math.floor(Math.random()*60)+10
|
const height = Math.floor(Math.random()*60)+10
|
||||||
if (ricardo1) {
|
if (ricardo1) {
|
||||||
ricardo1.firstElementChild.src = ""
|
ricardo1.firstElementChild.src = ""
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ setInterval(() => {
|
||||||
|
|
||||||
setInterval(() => {
|
setInterval(() => {
|
||||||
let ricardo2 = document.getElementById("ricardo2")
|
let ricardo2 = document.getElementById("ricardo2")
|
||||||
var xpos = Math.floor(Math.random()*9)*10
|
const xpos = Math.floor(Math.random()*9)*10
|
||||||
|
|
||||||
if (ricardo2) ricardo2.style.left=xpos+"%"
|
if (ricardo2) ricardo2.style.left=xpos+"%"
|
||||||
}, 1700)
|
}, 1700)
|
||||||
|
|
|
@ -1,22 +0,0 @@
|
||||||
function block_user() {
|
|
||||||
var usernameField = document.getElementById("exile-username");
|
|
||||||
var isValidUsername = usernameField.checkValidity();
|
|
||||||
username = usernameField.value;
|
|
||||||
if (isValidUsername) {
|
|
||||||
const xhr = new XMLHttpRequest();
|
|
||||||
xhr.open("post", "/settings/block");
|
|
||||||
xhr.setRequestHeader('xhr', 'xhr');
|
|
||||||
f=new FormData();
|
|
||||||
f.append("username", username);
|
|
||||||
f.append("formkey", formkey());
|
|
||||||
xhr.onload=function(){
|
|
||||||
if (xhr.status<300) {
|
|
||||||
location.reload();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
showToast(false, "Error, please try again later.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
xhr.send(f)
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -9,7 +9,7 @@ function post(url) {
|
||||||
};
|
};
|
||||||
|
|
||||||
function updatebgselection(){
|
function updatebgselection(){
|
||||||
var bgselector = document.getElementById("backgroundSelector");
|
const bgselector = document.getElementById("backgroundSelector");
|
||||||
const backgrounds = [
|
const backgrounds = [
|
||||||
{
|
{
|
||||||
folder: "glitter",
|
folder: "glitter",
|
||||||
|
@ -96,7 +96,7 @@ function updatebgselection(){
|
||||||
updatebgselection();
|
updatebgselection();
|
||||||
|
|
||||||
document.onpaste = function(event) {
|
document.onpaste = function(event) {
|
||||||
var focused = document.activeElement;
|
const focused = document.activeElement;
|
||||||
if (focused.id == 'bio-text') {
|
if (focused.id == 'bio-text') {
|
||||||
const files = structuredClone(event.clipboardData.files);
|
const files = structuredClone(event.clipboardData.files);
|
||||||
|
|
||||||
|
|
|
@ -7,4 +7,37 @@ const twoStepModal = bootstrap.Modal.getOrCreateInstance(document.getElementById
|
||||||
|
|
||||||
function emailVerifyText() {
|
function emailVerifyText() {
|
||||||
document.getElementById("email-verify-text").innerHTML = "Verification email sent! Please check your inbox.";
|
document.getElementById("email-verify-text").innerHTML = "Verification email sent! Please check your inbox.";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function block_user() {
|
||||||
|
const usernameField = document.getElementById("block-username");
|
||||||
|
const isValidUsername = usernameField.checkValidity();
|
||||||
|
username = usernameField.value;
|
||||||
|
if (isValidUsername) {
|
||||||
|
const xhr = new XMLHttpRequest();
|
||||||
|
xhr.open("post", "/settings/block");
|
||||||
|
xhr.setRequestHeader('xhr', 'xhr');
|
||||||
|
f=new FormData();
|
||||||
|
f.append("username", username);
|
||||||
|
f.append("formkey", formkey());
|
||||||
|
xhr.onload=function(){
|
||||||
|
if (xhr.status<300) {
|
||||||
|
location.reload();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
showToast(false, "Error, please try again later.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
xhr.send(f)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function unblock_user(t, url) {
|
||||||
|
postToast(t, url,
|
||||||
|
{
|
||||||
|
},
|
||||||
|
() => {
|
||||||
|
t.parentElement.parentElement.remove();
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
document.getElementById('password-register').addEventListener('input', function () {
|
document.getElementById('password-register').addEventListener('input', function () {
|
||||||
|
|
||||||
var charCount = document.getElementById("password-register").value;
|
const charCount = document.getElementById("password-register").value;
|
||||||
var id = document.getElementById("passwordHelpRegister");
|
const id = document.getElementById("passwordHelpRegister");
|
||||||
var successID = document.getElementById("passwordHelpSuccess");
|
const successID = document.getElementById("passwordHelpSuccess");
|
||||||
|
|
||||||
if (charCount.length >= 8) {
|
if (charCount.length >= 8) {
|
||||||
id.classList.add("d-none");
|
id.classList.add("d-none");
|
||||||
|
@ -38,4 +38,4 @@ document.getElementById('username-register').addEventListener('input', function
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -10,7 +10,7 @@ function sort_table(n) {
|
||||||
if (!('sortKey' in x.dataset)) {
|
if (!('sortKey' in x.dataset)) {
|
||||||
x = x.getElementsByTagName('a')[0] || x;
|
x = x.getElementsByTagName('a')[0] || x;
|
||||||
}
|
}
|
||||||
var attr;
|
let attr;
|
||||||
if ('sortKey' in x.dataset) {
|
if ('sortKey' in x.dataset) {
|
||||||
attr = x.dataset.sortKey;
|
attr = x.dataset.sortKey;
|
||||||
} else if ('time' in x.dataset) {
|
} else if ('time' in x.dataset) {
|
||||||
|
|
|
@ -83,7 +83,7 @@ document.onpaste = function(event) {
|
||||||
document.getElementById('urlblock').classList.add('d-none');
|
document.getElementById('urlblock').classList.add('d-none');
|
||||||
if (IMAGE_FORMATS.some(s => filename.endsWith(s)))
|
if (IMAGE_FORMATS.some(s => filename.endsWith(s)))
|
||||||
{
|
{
|
||||||
var fileReader = new FileReader();
|
const fileReader = new FileReader();
|
||||||
fileReader.readAsDataURL(f.files[0]);
|
fileReader.readAsDataURL(f.files[0]);
|
||||||
fileReader.addEventListener("load", function () {document.getElementById('image-preview').setAttribute('src', this.result);});
|
fileReader.addEventListener("load", function () {document.getElementById('image-preview').setAttribute('src', this.result);});
|
||||||
}
|
}
|
||||||
|
@ -102,7 +102,7 @@ document.getElementById('file-upload').addEventListener('change', function(){
|
||||||
filename = f.files[0].name.toLowerCase()
|
filename = f.files[0].name.toLowerCase()
|
||||||
if (IMAGE_FORMATS.some(s => filename.endsWith(s)))
|
if (IMAGE_FORMATS.some(s => filename.endsWith(s)))
|
||||||
{
|
{
|
||||||
var fileReader = new FileReader();
|
const fileReader = new FileReader();
|
||||||
fileReader.readAsDataURL(f.files[0]);
|
fileReader.readAsDataURL(f.files[0]);
|
||||||
fileReader.addEventListener("load", function () {document.getElementById('image-preview').setAttribute('src', this.result);});
|
fileReader.addEventListener("load", function () {document.getElementById('image-preview').setAttribute('src', this.result);});
|
||||||
}
|
}
|
||||||
|
@ -128,15 +128,15 @@ function savetext() {
|
||||||
|
|
||||||
function autoSuggestTitle() {
|
function autoSuggestTitle() {
|
||||||
|
|
||||||
var urlField = document.getElementById("post-url");
|
const urlField = document.getElementById("post-url");
|
||||||
|
|
||||||
var titleField = document.getElementById("post-title");
|
const titleField = document.getElementById("post-title");
|
||||||
|
|
||||||
var isValidURL = urlField.checkValidity();
|
const isValidURL = urlField.checkValidity();
|
||||||
|
|
||||||
if (isValidURL && urlField.value.length > 0 && titleField.value === "") {
|
if (isValidURL && urlField.value.length > 0 && titleField.value === "") {
|
||||||
|
|
||||||
var x = new XMLHttpRequest();
|
const x = new XMLHttpRequest();
|
||||||
x.withCredentials=true;
|
x.withCredentials=true;
|
||||||
x.onreadystatechange = function() {
|
x.onreadystatechange = function() {
|
||||||
if (x.readyState == 4 && x.status == 200 && !titleField.value) {
|
if (x.readyState == 4 && x.status == 200 && !titleField.value) {
|
||||||
|
|
|
@ -619,7 +619,7 @@ def settings_unblock_user(v):
|
||||||
if not v.shadowbanned and user.admin_level >= PERMS['USER_BLOCKS_VISIBLE']:
|
if not v.shadowbanned and user.admin_level >= PERMS['USER_BLOCKS_VISIBLE']:
|
||||||
send_notification(user.id, f"@{v.username} has unblocked you!")
|
send_notification(user.id, f"@{v.username} has unblocked you!")
|
||||||
cache.delete_memoized(frontlist)
|
cache.delete_memoized(frontlist)
|
||||||
return {"message": f"@{user.username} unblocked."}
|
return {"message": f"@{user.username} unblocked successfully!"}
|
||||||
|
|
||||||
@app.get("/settings/apps")
|
@app.get("/settings/apps")
|
||||||
@auth_required
|
@auth_required
|
||||||
|
|
|
@ -895,7 +895,7 @@
|
||||||
};
|
};
|
||||||
const base64Mark = btoa(markTemplate("{{v.id}}"));
|
const base64Mark = btoa(markTemplate("{{v.id}}"));
|
||||||
|
|
||||||
var style = document.createElement('style');
|
const style = document.createElement('style');
|
||||||
style.innerHTML = `.actual-post:not(.deleted, .banned),.comment-section>.comment{background-image:url("data:image/svg+xml;base64,${base64Mark}")}`;
|
style.innerHTML = `.actual-post:not(.deleted, .banned),.comment-section>.comment{background-image:url("data:image/svg+xml;base64,${base64Mark}")}`;
|
||||||
document.getElementsByTagName('head')[0].appendChild(style);
|
document.getElementsByTagName('head')[0].appendChild(style);
|
||||||
}
|
}
|
||||||
|
|
|
@ -201,7 +201,7 @@
|
||||||
tt.show()
|
tt.show()
|
||||||
document.getElementsByClassName('tooltip')[0].onclick = function(e) {
|
document.getElementsByClassName('tooltip')[0].onclick = function(e) {
|
||||||
tt.hide()
|
tt.hide()
|
||||||
var xhr = new XMLHttpRequest();
|
const xhr = new XMLHttpRequest();
|
||||||
xhr.withCredentials=true;
|
xhr.withCredentials=true;
|
||||||
xhr.open("POST", '/dismiss_mobile_tip', true);
|
xhr.open("POST", '/dismiss_mobile_tip', true);
|
||||||
xhr.setRequestHeader('xhr', 'xhr');
|
xhr.setRequestHeader('xhr', 'xhr');
|
||||||
|
|
|
@ -1,54 +0,0 @@
|
||||||
<div class="modal fade" id="2faModal" tabindex="-1" role="dialog" aria-labelledby="2faModalTitle" aria-hidden="true">
|
|
||||||
<div class="modal-dialog modal-dialog-centered" role="document">
|
|
||||||
<div class="modal-content">
|
|
||||||
<div class="modal-header">
|
|
||||||
<h5 class="modal-title">
|
|
||||||
{% if mfa_secret %}
|
|
||||||
Setup two-step login
|
|
||||||
{% elif mfa_secret and not v.email %}
|
|
||||||
Email required for two-step login
|
|
||||||
{% else %}
|
|
||||||
Disable two-step login
|
|
||||||
{% endif %}
|
|
||||||
</h5>
|
|
||||||
<button type="button" class="close" data-bs-dismiss="modal" aria-label="Close">
|
|
||||||
<span aria-hidden="true"><i class="far fa-times"></i></span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<form action="/settings/security" method="post">
|
|
||||||
<input type="hidden" name="formkey" value="{{v|formkey}}">
|
|
||||||
<input type="hidden" name="2fa_secret" value="{{mfa_secret}}">
|
|
||||||
<div class="modal-body">
|
|
||||||
{% if mfa_secret %}
|
|
||||||
<p><span class="font-weight-bold">Step 1:</span> Scan this barcode (or enter the code) using a two-factor authentication app such as Google Authenticator or Authy.</p>
|
|
||||||
<div class="text-center mb-3">
|
|
||||||
<img alt="two-factor QR code" loading="lazy" class="img-fluid" width=175 src="/2faqr/{{mfa_secret}}">
|
|
||||||
<div class="text-small text-muted mt-1">Or enter this code: {{mfa_secret}}</div>
|
|
||||||
</div>
|
|
||||||
<p><span class="font-weight-bold">Step 2:</span> Enter the six-digit code generated in the authenticator app and your {{SITE_NAME}} account password.</p>
|
|
||||||
<label for="2fa_input">6-digit code</label>
|
|
||||||
<input autocomplete="off" type="text" class="form-control mb-2" id="2fa_input" name="2fa_token" placeholder="# # # # # #" required>
|
|
||||||
|
|
||||||
<label for="2fa_input_password">Password</label>
|
|
||||||
<input autocomplete="off" type="password" class="form-control mb-2" id="2fa_input_password" name="password" oninput="document.getElementById('toggle2faButton').disabled=false" required>
|
|
||||||
{% else %}
|
|
||||||
<div class="alert alert-warning" role="alert">
|
|
||||||
<i class="fas fa-info-circle"></i>
|
|
||||||
To disable two-step login, please enter your {{SITE_NAME}} account password and the 6-digit code generated in your authentication app. If you no longer have your two-step device, <a href="/lost_2fa">click here</a>.
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<label for="2fa_input_password">Password</label>
|
|
||||||
<input autocomplete="off" type="password" class="form-control mb-2" id="2fa_input_password" name="password" required>
|
|
||||||
|
|
||||||
<label for="2fa_input">6-digit code</label>
|
|
||||||
<input autocomplete="off" type="text" class="form-control mb-2" id="2fa_input" name="2fa_remove" placeholder="# # # # # #" oninput="document.getElementById('toggle2faButton').disabled=false" required>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
<div class="modal-footer">
|
|
||||||
<button type="button" class="btn btn-link text-muted" data-bs-dismiss="modal">Cancel</button>
|
|
||||||
<input autocomplete="off" id="toggle2faButton" class="btn btn-primary" type="submit" onclick="disable(this)" value="Enable 2-step login" disabled>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
|
@ -1,22 +0,0 @@
|
||||||
<div class="modal fade" id="blockmodal" tabindex="-1" role="dialog" aria-labelledby="blockmodal" aria-hidden="true">
|
|
||||||
<div class="modal-dialog modal-dialog-centered" role="document">
|
|
||||||
<form class="m-auto" action="/settings/block" id="block-form" method="post" onsubmit="return false;">
|
|
||||||
<div class="modal-content">
|
|
||||||
<div class="modal-header">
|
|
||||||
<h5 class="modal-title">Block users</h5>
|
|
||||||
<button type="button" class="close" data-bs-dismiss="modal" aria-label="Close">
|
|
||||||
<span aria-hidden="true"><i class="far fa-times"></i></span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div class="modal-body">
|
|
||||||
<input type="hidden" name="formkey" value="{{v|formkey}}">
|
|
||||||
<input autocomplete="off" type="text" name="username" placeholder="Enter username..." id="block-username" class="form-control" maxlength=25 required>
|
|
||||||
</div>
|
|
||||||
<div class="modal-footer">
|
|
||||||
<button type="button" class="btn btn-link text-muted" data-bs-dismiss="modal">Cancel</button>
|
|
||||||
<button type="button" class="btn btn-primary" id="blockUserButton" onclick="block_user()">Block user</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
|
@ -177,7 +177,7 @@
|
||||||
{% include "user_in_table.html" %}
|
{% include "user_in_table.html" %}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<button type="button" class="btn btn-primary" onclick="postToastSwitch(this,'/settings/unblock?username={{user.username}}&formkey={{v|formkey}}')">Unblock</button>
|
<button type="button" class="btn btn-primary" onclick="unblock_user(this, '/settings/unblock?username={{user.username}}&formkey={{v|formkey}}')">Unblock</button>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% else %}
|
{% else %}
|
||||||
|
@ -198,13 +198,88 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{%- include 'modals/2fa.html' -%}
|
|
||||||
{%- include 'modals/blockuser.html' -%}
|
<div class="modal fade" id="2faModal" tabindex="-1" role="dialog" aria-labelledby="2faModalTitle" aria-hidden="true">
|
||||||
|
<div class="modal-dialog modal-dialog-centered" role="document">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h5 class="modal-title">
|
||||||
|
{% if mfa_secret %}
|
||||||
|
Setup two-step login
|
||||||
|
{% elif mfa_secret and not v.email %}
|
||||||
|
Email required for two-step login
|
||||||
|
{% else %}
|
||||||
|
Disable two-step login
|
||||||
|
{% endif %}
|
||||||
|
</h5>
|
||||||
|
<button type="button" class="close" data-bs-dismiss="modal" aria-label="Close">
|
||||||
|
<span aria-hidden="true"><i class="far fa-times"></i></span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<form action="/settings/security" method="post">
|
||||||
|
<input type="hidden" name="formkey" value="{{v|formkey}}">
|
||||||
|
<input type="hidden" name="2fa_secret" value="{{mfa_secret}}">
|
||||||
|
<div class="modal-body">
|
||||||
|
{% if mfa_secret %}
|
||||||
|
<p><span class="font-weight-bold">Step 1:</span> Scan this barcode (or enter the code) using a two-factor authentication app such as Google Authenticator or Authy.</p>
|
||||||
|
<div class="text-center mb-3">
|
||||||
|
<img alt="two-factor QR code" loading="lazy" class="img-fluid" width=175 src="/2faqr/{{mfa_secret}}">
|
||||||
|
<div class="text-small text-muted mt-1">Or enter this code: {{mfa_secret}}</div>
|
||||||
|
</div>
|
||||||
|
<p><span class="font-weight-bold">Step 2:</span> Enter the six-digit code generated in the authenticator app and your {{SITE_NAME}} account password.</p>
|
||||||
|
<label for="2fa_input">6-digit code</label>
|
||||||
|
<input autocomplete="off" type="text" class="form-control mb-2" id="2fa_input" name="2fa_token" placeholder="# # # # # #" required>
|
||||||
|
|
||||||
|
<label for="2fa_input_password">Password</label>
|
||||||
|
<input autocomplete="off" type="password" class="form-control mb-2" id="2fa_input_password" name="password" oninput="document.getElementById('toggle2faButton').disabled=false" required>
|
||||||
|
{% else %}
|
||||||
|
<div class="alert alert-warning" role="alert">
|
||||||
|
<i class="fas fa-info-circle"></i>
|
||||||
|
To disable two-step login, please enter your {{SITE_NAME}} account password and the 6-digit code generated in your authentication app. If you no longer have your two-step device, <a href="/lost_2fa">click here</a>.
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<label for="2fa_input_password">Password</label>
|
||||||
|
<input autocomplete="off" type="password" class="form-control mb-2" id="2fa_input_password" name="password" required>
|
||||||
|
|
||||||
|
<label for="2fa_input">6-digit code</label>
|
||||||
|
<input autocomplete="off" type="text" class="form-control mb-2" id="2fa_input" name="2fa_remove" placeholder="# # # # # #" oninput="document.getElementById('toggle2faButton').disabled=false" required>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-link text-muted" data-bs-dismiss="modal">Cancel</button>
|
||||||
|
<input autocomplete="off" id="toggle2faButton" class="btn btn-primary" type="submit" onclick="disable(this)" value="Enable 2-step login" disabled>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="modal fade" id="blockmodal" tabindex="-1" role="dialog" aria-labelledby="blockmodal" aria-hidden="true">
|
||||||
|
<div class="modal-dialog modal-dialog-centered" role="document">
|
||||||
|
<form class="m-auto" action="/settings/block" id="block-form" method="post" onsubmit="return false;">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h5 class="modal-title">Block user</h5>
|
||||||
|
<button type="button" class="close" data-bs-dismiss="modal" aria-label="Close">
|
||||||
|
<span aria-hidden="true"><i class="far fa-times"></i></span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<input type="hidden" name="formkey" value="{{v|formkey}}">
|
||||||
|
<input autocomplete="off" type="text" name="username" placeholder="Enter username..." id="block-username" class="form-control" maxlength=25 required>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-link text-muted" data-bs-dismiss="modal">Cancel</button>
|
||||||
|
<button type="button" class="btn btn-primary" id="blockUserButton" onclick="block_user()">Block user</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="toast error" id="toast-exile-error" role="alert" aria-live="assertive" aria-atomic="true" data-bs-animation="true" data-bs-autohide="true" data-bs-delay="5000">
|
<div class="toast error" id="toast-exile-error" role="alert" aria-live="assertive" aria-atomic="true" data-bs-animation="true" data-bs-autohide="true" data-bs-delay="5000">
|
||||||
<div class="toast-body text-center">
|
<div class="toast-body text-center">
|
||||||
<i class="fas fa-exclamation-circle text-danger mr-2"></i><span id="toast-error-message">Error. Please try again.</span>
|
<i class="fas fa-exclamation-circle text-danger mr-2"></i><span id="toast-error-message">Error. Please try again.</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script defer src="{{'js/settings_blocks.js' | asset}}"></script>
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
|
@ -81,7 +81,7 @@
|
||||||
document.getElementById('filename-show').textContent = filename;
|
document.getElementById('filename-show').textContent = filename;
|
||||||
if (IMAGE_FORMATS.some(s => filename.endsWith(s)))
|
if (IMAGE_FORMATS.some(s => filename.endsWith(s)))
|
||||||
{
|
{
|
||||||
var fileReader = new FileReader();
|
const fileReader = new FileReader();
|
||||||
fileReader.readAsDataURL(f.files[0]);
|
fileReader.readAsDataURL(f.files[0]);
|
||||||
fileReader.addEventListener("load", function () {
|
fileReader.addEventListener("load", function () {
|
||||||
document.getElementById('image-preview').setAttribute('src', this.result);
|
document.getElementById('image-preview').setAttribute('src', this.result);
|
||||||
|
@ -97,7 +97,7 @@
|
||||||
filename = f.files[0].name.toLowerCase()
|
filename = f.files[0].name.toLowerCase()
|
||||||
if (IMAGE_FORMATS.some(s => filename.endsWith(s)))
|
if (IMAGE_FORMATS.some(s => filename.endsWith(s)))
|
||||||
{
|
{
|
||||||
var fileReader = new FileReader();
|
const fileReader = new FileReader();
|
||||||
fileReader.readAsDataURL(f.files[0]);
|
fileReader.readAsDataURL(f.files[0]);
|
||||||
fileReader.addEventListener("load", function () {
|
fileReader.addEventListener("load", function () {
|
||||||
document.getElementById('image-preview').setAttribute('src', this.result);
|
document.getElementById('image-preview').setAttribute('src', this.result);
|
||||||
|
|
|
@ -83,7 +83,7 @@
|
||||||
document.getElementById('filename-show').textContent = filename;
|
document.getElementById('filename-show').textContent = filename;
|
||||||
if (IMAGE_FORMATS.some(s => filename.endsWith(s)))
|
if (IMAGE_FORMATS.some(s => filename.endsWith(s)))
|
||||||
{
|
{
|
||||||
var fileReader = new FileReader();
|
const fileReader = new FileReader();
|
||||||
fileReader.readAsDataURL(f.files[0]);
|
fileReader.readAsDataURL(f.files[0]);
|
||||||
fileReader.addEventListener("load", function () {
|
fileReader.addEventListener("load", function () {
|
||||||
document.getElementById('image-preview').setAttribute('src', this.result);
|
document.getElementById('image-preview').setAttribute('src', this.result);
|
||||||
|
@ -99,7 +99,7 @@
|
||||||
filename = f.files[0].name.toLowerCase()
|
filename = f.files[0].name.toLowerCase()
|
||||||
if (IMAGE_FORMATS.some(s => filename.endsWith(s)))
|
if (IMAGE_FORMATS.some(s => filename.endsWith(s)))
|
||||||
{
|
{
|
||||||
var fileReader = new FileReader();
|
const fileReader = new FileReader();
|
||||||
fileReader.readAsDataURL(f.files[0]);
|
fileReader.readAsDataURL(f.files[0]);
|
||||||
fileReader.addEventListener("load", function () {
|
fileReader.addEventListener("load", function () {
|
||||||
document.getElementById('image-preview').setAttribute('src', this.result);
|
document.getElementById('image-preview').setAttribute('src', this.result);
|
||||||
|
|
|
@ -75,7 +75,7 @@
|
||||||
document.getElementById('filename-show').textContent = filename;
|
document.getElementById('filename-show').textContent = filename;
|
||||||
if (IMAGE_FORMATS.some(s => filename.endsWith(s)))
|
if (IMAGE_FORMATS.some(s => filename.endsWith(s)))
|
||||||
{
|
{
|
||||||
var fileReader = new FileReader();
|
const fileReader = new FileReader();
|
||||||
fileReader.readAsDataURL(f.files[0]);
|
fileReader.readAsDataURL(f.files[0]);
|
||||||
fileReader.addEventListener("load", function () {
|
fileReader.addEventListener("load", function () {
|
||||||
document.getElementById('image-preview').setAttribute('src', this.result);
|
document.getElementById('image-preview').setAttribute('src', this.result);
|
||||||
|
@ -91,7 +91,7 @@
|
||||||
filename = f.files[0].name.toLowerCase()
|
filename = f.files[0].name.toLowerCase()
|
||||||
if (IMAGE_FORMATS.some(s => filename.endsWith(s)))
|
if (IMAGE_FORMATS.some(s => filename.endsWith(s)))
|
||||||
{
|
{
|
||||||
var fileReader = new FileReader();
|
const fileReader = new FileReader();
|
||||||
fileReader.readAsDataURL(f.files[0]);
|
fileReader.readAsDataURL(f.files[0]);
|
||||||
fileReader.addEventListener("load", function () {
|
fileReader.addEventListener("load", function () {
|
||||||
document.getElementById('image-preview').setAttribute('src', this.result);
|
document.getElementById('image-preview').setAttribute('src', this.result);
|
||||||
|
|
Loading…
Reference in New Issue