mirror of
				https://github.com/Theodor-Springmann-Stiftung/hamann-ausgabe-core.git
				synced 2025-11-04 12:15:32 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			73 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
const dropHandler = function (formelement, ev, dropzone) {
 | 
						|
    ev.preventDefault();
 | 
						|
    if (ev.dataTransfer.items) {
 | 
						|
      if (ev.dataTransfer.items[0].kind === 'file') {
 | 
						|
        var file = ev.dataTransfer.items[0].getAsFile();
 | 
						|
        UPLOADSubmit(formelement, file);
 | 
						|
      } else {
 | 
						|
        var file = ev.dataTransfer.files[0];
 | 
						|
        UPLOADSubmit(formelement, file);
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  const dragOverHandler = function (ev, dropzone) {
 | 
						|
    ev.preventDefault();
 | 
						|
  }
 | 
						|
 | 
						|
  const dragLeaveHander = function (ev, dropzone) {
 | 
						|
    ev.preventDefault();
 | 
						|
  }
 | 
						|
 | 
						|
  const dragEnterHandler = function (ev, dropzone) {
 | 
						|
    ev.preventDefault();
 | 
						|
  }
 | 
						|
 | 
						|
  const UPLOADSubmit = async function (oFormElement, file = null) {
 | 
						|
    var fd = new FormData();
 | 
						|
    if (file !== null) fd.append("file", file);
 | 
						|
    else fd = new FormData(oFormElement);
 | 
						|
    document.getElementById("dropzone").style.pointerEvents = "none";
 | 
						|
    document.getElementById("ha-lds-ellipsis-upload").style.display = "inline-block";
 | 
						|
    document.getElementById("ha-uploadmessage").style.opacity = "0";
 | 
						|
    await fetch(oFormElement.action, {
 | 
						|
        method: 'POST',
 | 
						|
        headers: {
 | 
						|
          'RequestVerificationToken': getCookie('RequestVerificationToken')
 | 
						|
        },
 | 
						|
        body: fd
 | 
						|
      })
 | 
						|
      .then(response => response.json())
 | 
						|
      .then(json => {
 | 
						|
        if ("Error" in json) {
 | 
						|
          document.getElementById("dropzone").style.pointerEvents = "auto";
 | 
						|
          document.getElementById("ha-lds-ellipsis-upload").style.display = "none";
 | 
						|
          document.getElementById("ha-uploadmessage").style.opacity = "1";
 | 
						|
          oFormElement.elements.namedItem("upload-result").value = json.Error;
 | 
						|
        } else {
 | 
						|
          document.getElementById("dropzone").style.pointerEvents = "auto";
 | 
						|
          document.getElementById("ha-lds-ellipsis-upload").style.display = "none";
 | 
						|
          oFormElement.elements.namedItem("upload-result").value = "Erfolg!";
 | 
						|
          if ("Prefix" in json[0]) {
 | 
						|
            document.getElementById("dropzone").style.pointerEvents = "auto";
 | 
						|
            document.getElementById("ha-lds-ellipsis-upload").style.display = "none";
 | 
						|
            window.location.replace("/Admin/Upload/" + json[0].Prefix);
 | 
						|
          }
 | 
						|
        }
 | 
						|
      })
 | 
						|
      .catch ((e) => { 
 | 
						|
        document.getElementById("dropzone").style.pointerEvents = "auto";
 | 
						|
        document.getElementById("ha-lds-ellipsis-upload").style.display = "none";
 | 
						|
        document.getElementById("ha-uploadmessage").style.opacity = "1";
 | 
						|
        oFormElement.elements.namedItem("upload-result").value = "Keine Antwort. Bitte Seite neu laden!";
 | 
						|
      })
 | 
						|
  }
 | 
						|
 | 
						|
var submitelement = document.getElementById("file");
 | 
						|
var formelement = document.getElementById("uploadForm");
 | 
						|
var dropzone = document.getElementById("dropzone");
 | 
						|
submitelement.addEventListener("change", () => UPLOADSubmit(formelement));
 | 
						|
dropzone.addEventListener("drop", (ev) => dropHandler(formelement, ev, dropzone));
 | 
						|
dropzone.addEventListener("dragover", (ev) => dragOverHandler(ev, dropzone));
 | 
						|
dropzone.addEventListener("dragleave", (ev) => dragLeaveHander(ev, dropzone));
 | 
						|
dropzone.addEventListener("dragenter", (ev) => dragEnterHandler(ev, dropzone)); |