From 1a1e37db7a694fa246d5655fbf8d3bbaabf72333 Mon Sep 17 00:00:00 2001
From: Janne Koschinski <janne@kuschku.de>
Date: Sun, 18 Mar 2018 19:20:28 +0100
Subject: [PATCH] Improved upload API

---
 assets/js/component/copy.js       |  4 ++--
 assets/js/component/fake-input.js |  4 ++--
 assets/js/page_upload.js          |  3 ++-
 assets/sass/_page_upload.sass     |  6 +++---
 templates/upload.html             | 32 ++++++++-----------------------
 5 files changed, 17 insertions(+), 32 deletions(-)

diff --git a/assets/js/component/copy.js b/assets/js/component/copy.js
index 8ea2648..369e47d 100644
--- a/assets/js/component/copy.js
+++ b/assets/js/component/copy.js
@@ -1,12 +1,12 @@
 function initCopy() {
-    Array.prototype.slice.call(document.querySelectorAll("button.copy[data-target]:not([data-bound-copy])")).forEach((button) => {
+    Array.prototype.slice.call(document.querySelectorAll("button.copy[data-target]:not([data-bound_copy])")).forEach((button) => {
         const target = document.querySelector(button.dataset["target"]);
         if (target) {
             button.addEventListener("click", () => {
                 target.select();
                 document.execCommand("Copy");
             });
-            elem.dataset["bound-copy"] = "true";
+            button.dataset["bound_copy"] = "true";
         }
     });
 }
diff --git a/assets/js/component/fake-input.js b/assets/js/component/fake-input.js
index 3122c56..791a105 100644
--- a/assets/js/component/fake-input.js
+++ b/assets/js/component/fake-input.js
@@ -15,12 +15,12 @@ const changeListener = (event) => {
 };
 
 function initFakeInput() {
-    Array.prototype.slice.call(document.querySelectorAll(".fake-input[contenteditable]:not([bound-fake-input])")).forEach(elem => {
+    Array.prototype.slice.call(document.querySelectorAll(".fake-input[contenteditable]:not([data-bound_fake_input])")).forEach(elem => {
         elem.addEventListener("input", changeListener);
         if (elem.dataset["multiline"] === undefined) {
             elem.addEventListener("keypress", keyListener);
         }
-        elem.dataset["bound-fake-input"] = "true";
+        elem.dataset["bound_fake_input"] = "true";
     });
 }
 
diff --git a/assets/js/page_upload.js b/assets/js/page_upload.js
index 461e50a..147de44 100644
--- a/assets/js/page_upload.js
+++ b/assets/js/page_upload.js
@@ -9,11 +9,12 @@ function postData(url, data) {
     }).then(response => response.json())
 }
 
+const page = document.querySelector(".page.upload");
 const form = document.querySelector("form.upload");
 const element = document.querySelector("form.upload input[type=file]");
 const results = document.querySelector(".uploading.images");
 element.addEventListener("change", () => {
-    form.classList.add("submitted");
+    page.classList.add("submitted");
     for (let file of element.files) {
         const reader = new FileReader();
         reader.addEventListener("load", (e) => {
diff --git a/assets/sass/_page_upload.sass b/assets/sass/_page_upload.sass
index ac34a99..44c83dd 100644
--- a/assets/sass/_page_upload.sass
+++ b/assets/sass/_page_upload.sass
@@ -53,8 +53,6 @@
         top: 0
         bottom: 0
         opacity: 0
-    &.submitted
-      display: none
   .uploading.images
     display: flex
     flex-direction: row
@@ -172,5 +170,7 @@
     .fake-input[contenteditable]:empty:before
       opacity: 0.4
       content: attr(placeholder)
-  form.upload:not(.submitted)+.uploading.images
+  &.submitted form.upload
+    display: none
+  &:not(.submitted) .uploading.images
     display: none
\ No newline at end of file
diff --git a/templates/upload.html b/templates/upload.html
index 09d61bd..16e976d 100644
--- a/templates/upload.html
+++ b/templates/upload.html
@@ -1,30 +1,14 @@
 {{define "title"}}Upload | i.k8r{{end}}
 {{define "content"}}
-<div class="page upload container centered">
-{{range .Results}}
-{{if .Success}}
-    <div class="alert success">
-        <h2>Upload of {{.Id}} finished. <a href="/{{.Id}}">View</a>.</h2>
+<div class="page upload">
+    <div class="container centered">
+        <form class="upload" action="/upload/" method="POST" enctype="multipart/form-data">
+            <label>
+                <span class="text">Select Files</span>
+                <input type="file" name="file" accept=".jpg,.jpeg,.png,.gif,.apng,.tiff,.tif,.bmp,.webp,.mp4,.mov" multiple/>
+            </label>
+        </form>
     </div>
-{{else}}
-    <div class="alert error">
-    {{if .Id}}
-        <h2>Upload of {{.Id}} failed.</h2>
-    {{else}}
-        <h2>Upload failed.</h2>
-    {{end}}
-    {{range .Errors}}
-        <pre>{{.}}</pre>
-    {{end}}
-    </div>
-{{end}}
-{{end}}
-    <form class="upload" action="/upload/" method="POST" enctype="multipart/form-data">
-        <label>
-            <span class="text">Select Files</span>
-            <input type="file" name="file" accept=".jpg,.jpeg,.png,.gif,.apng,.tiff,.tif,.bmp,.webp,.mp4,.mov" multiple/>
-        </label>
-    </form>
     <div class="uploading images">
         <div class="sidebar">
             <div class="url">
-- 
GitLab