2023-03-23 12:54:00 +00:00
|
|
|
window.addEventListener("dragover",(event) => {
|
|
|
|
event.preventDefault();
|
|
|
|
},false);
|
|
|
|
window.addEventListener("drop",(event) => {
|
|
|
|
event.preventDefault();
|
|
|
|
},false);
|
|
|
|
|
|
|
|
function fileChanged(obj) {
|
|
|
|
document.querySelector('.fileDrop-block').classList.remove('error');
|
|
|
|
|
|
|
|
if ($(obj).val() === '') {
|
|
|
|
document.querySelector('.fileDrop-block').classList.remove('active');
|
|
|
|
document.querySelector('.fileDrop-block .status').innerHTML = 'Choose or Drop file';
|
|
|
|
} else {
|
|
|
|
document.querySelector('.fileDrop-block').classList.add('active');
|
|
|
|
document.querySelector('.fileDrop-block .status').innerHTML = obj.files[0].name;
|
|
|
|
}
|
|
|
|
}
|
2023-03-11 22:14:03 +00:00
|
|
|
|
2023-03-23 12:54:00 +00:00
|
|
|
document.addEventListener('DOMContentLoaded', function() {
|
|
|
|
// Function to upload images
|
|
|
|
const uploadForm = document.querySelector('#uploadForm');
|
|
|
|
const fileDrop = document.querySelector('.fileDrop-block');
|
|
|
|
const fileDropTitle = fileDrop.querySelector('.status');
|
|
|
|
const fileUpload = uploadForm.querySelector('#file');
|
2023-03-11 22:14:03 +00:00
|
|
|
|
2023-03-23 12:54:00 +00:00
|
|
|
|
|
|
|
$(fileUpload).val('');
|
|
|
|
|
|
|
|
|
|
|
|
// Choose or drop file button
|
|
|
|
['dragover', 'dragenter'].forEach(eventName => {
|
|
|
|
fileDrop.addEventListener(eventName, fileActivate, false);
|
|
|
|
});
|
|
|
|
['dragleave', 'drop'].forEach(eventName => {
|
|
|
|
fileDrop.addEventListener(eventName, fileDefault, false);
|
|
|
|
})
|
|
|
|
|
|
|
|
// Drop file into box
|
|
|
|
fileDrop.addEventListener('drop', fileDropHandle, false);
|
|
|
|
|
|
|
|
|
|
|
|
// Edging the file plunge :3
|
|
|
|
function fileActivate(event) {
|
|
|
|
fileDrop.classList.remove('error');
|
|
|
|
fileDrop.classList.add('edging');
|
|
|
|
fileDropTitle.innerHTML = 'Drop to upload!';
|
|
|
|
}
|
|
|
|
function fileDefault(event) {
|
|
|
|
fileDrop.classList.remove('error');
|
|
|
|
fileDrop.classList.remove('edging');
|
|
|
|
fileDropTitle.innerHTML = 'Choose or Drop file';
|
|
|
|
}
|
|
|
|
|
|
|
|
function fileDropHandle(event) {
|
|
|
|
event.preventDefault()
|
|
|
|
fileUpload.files = event.dataTransfer.files;
|
|
|
|
|
|
|
|
fileDropTitle.innerHTML = fileUpload.files[0].name;
|
|
|
|
fileDrop.classList.add('active');
|
2023-03-11 22:14:03 +00:00
|
|
|
}
|
2023-03-23 12:54:00 +00:00
|
|
|
|
|
|
|
|
|
|
|
uploadForm.addEventListener('submit', (event) => {
|
|
|
|
// AJAX takes control of subby form
|
|
|
|
event.preventDefault()
|
|
|
|
|
|
|
|
const jobList = document.querySelector(".upload-jobs");
|
|
|
|
|
|
|
|
// Check for empty upload
|
|
|
|
if ($(fileUpload).val() === '') {
|
|
|
|
fileDrop.classList.add('error');
|
|
|
|
fileDropTitle.innerHTML = 'No file selected!';
|
|
|
|
} else {
|
|
|
|
// Make form
|
|
|
|
let formData = new FormData();
|
|
|
|
formData.append("file", $("#file").prop("files")[0]);
|
|
|
|
formData.append("alt", $("#alt").val());
|
|
|
|
formData.append("description", $("#description").val());
|
|
|
|
formData.append("tags", $("#tags").val());
|
|
|
|
formData.append("submit", $("#submit").val());
|
|
|
|
|
|
|
|
// Upload the information
|
|
|
|
$.ajax({
|
|
|
|
url: '/api/upload',
|
|
|
|
type: 'post',
|
|
|
|
data: formData,
|
|
|
|
contentType: false,
|
|
|
|
processData: false,
|
|
|
|
beforeSend: function () {
|
|
|
|
jobContainer = document.createElement("div");
|
|
|
|
jobContainer.classList.add("job");
|
|
|
|
|
|
|
|
jobStatus = document.createElement("span");
|
|
|
|
jobStatus.classList.add("job__status");
|
|
|
|
jobStatus.innerHTML = "Uploading...";
|
|
|
|
|
|
|
|
jobProgress = document.createElement("span");
|
|
|
|
jobProgress.classList.add("progress");
|
|
|
|
|
|
|
|
jobImg = document.createElement("img");
|
|
|
|
jobImg.src = URL.createObjectURL($("#file").prop("files")[0]);
|
|
|
|
|
|
|
|
jobImgFilter = document.createElement("span");
|
|
|
|
jobImgFilter.classList.add("img-filter");
|
|
|
|
|
|
|
|
jobContainer.appendChild(jobStatus);
|
|
|
|
jobContainer.appendChild(jobProgress);
|
|
|
|
jobContainer.appendChild(jobImg);
|
|
|
|
jobContainer.appendChild(jobImgFilter);
|
|
|
|
jobList.appendChild(jobContainer);
|
|
|
|
},
|
|
|
|
success: function (response) {
|
|
|
|
jobContainer.classList.add("success");
|
|
|
|
jobStatus.innerHTML = "Uploaded!";
|
|
|
|
if (!document.querySelector(".upload-panel").classList.contains("open")) {
|
|
|
|
addNotification("Image uploaded successfully", 1);
|
|
|
|
}
|
|
|
|
},
|
|
|
|
error: function (response) {
|
|
|
|
jobContainer.classList.add("critical");
|
|
|
|
switch (response.status) {
|
|
|
|
case 500:
|
|
|
|
jobStatus.innerHTML = "Server exploded, F's in chat";
|
|
|
|
break;
|
|
|
|
case 400:
|
|
|
|
case 404:
|
|
|
|
jobStatus.innerHTML = "Error uploading. Blame yourself";
|
|
|
|
break;
|
|
|
|
case 403:
|
|
|
|
jobStatus.innerHTML = "None but devils play past here...";
|
|
|
|
break;
|
|
|
|
case 413:
|
|
|
|
jobStatus.innerHTML = "File too large!!!!!!";
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
jobStatus.innerHTML = "Error uploading file, blame someone";
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
if (!document.querySelector(".upload-panel").classList.contains("open")) {
|
|
|
|
addNotification("Error uploading file", 2);
|
|
|
|
}
|
|
|
|
},
|
|
|
|
});
|
|
|
|
|
|
|
|
// Empty values
|
|
|
|
$(fileUpload).val('');
|
|
|
|
$("#alt").val('');
|
|
|
|
$("#description").val('');
|
|
|
|
$("#tags").val('');
|
|
|
|
|
|
|
|
// Reset drop
|
|
|
|
fileDrop.classList.remove('active');
|
|
|
|
fileDropTitle.innerHTML = 'Choose or Drop file';
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
2023-03-11 22:14:03 +00:00
|
|
|
|
|
|
|
// open upload tab
|
|
|
|
function openUploadTab() {
|
|
|
|
// Stop scrolling
|
|
|
|
document.querySelector("html").style.overflow = "hidden";
|
|
|
|
document.querySelector(".content").tabIndex = "-1";
|
|
|
|
|
|
|
|
// Open upload tab
|
|
|
|
const uploadTab = document.querySelector(".upload-panel");
|
|
|
|
uploadTab.style.display = "block";
|
|
|
|
|
|
|
|
setTimeout(function () {
|
|
|
|
uploadTab.classList.add("open");
|
|
|
|
}, 10);
|
|
|
|
}
|
|
|
|
|
|
|
|
// close upload tab
|
|
|
|
function closeUploadTab() {
|
|
|
|
// un-Stop scrolling
|
|
|
|
document.querySelector("html").style.overflow = "auto";
|
|
|
|
document.querySelector(".content").tabIndex = "";
|
|
|
|
|
|
|
|
// Close upload tab
|
|
|
|
const uploadTab = document.querySelector(".upload-panel");
|
|
|
|
uploadTab.classList.remove("open");
|
|
|
|
|
|
|
|
setTimeout(function () {
|
|
|
|
uploadTab.style.display = "none";
|
|
|
|
}, 250);
|
|
|
|
}
|
|
|
|
|
|
|
|
// toggle upload tab
|
|
|
|
function toggleUploadTab() {
|
|
|
|
if (document.querySelector(".upload-panel").classList.contains("open")) {
|
|
|
|
closeUploadTab();
|
|
|
|
} else {
|
|
|
|
openUploadTab();
|
|
|
|
}
|
|
|
|
}
|