From c43403b3f722550c0d9a76ec294f0c871da8f8e1 Mon Sep 17 00:00:00 2001 From: fvanroie <15969459+fvanroie@users.noreply.github.com> Date: Fri, 21 May 2021 20:03:18 +0200 Subject: [PATCH] Fix filename parsing --- data/edit.htm | 147 +++++++++++++++++++++++------------------------ data/edit.htm.gz | Bin 3736 -> 3742 bytes 2 files changed, 72 insertions(+), 75 deletions(-) diff --git a/data/edit.htm b/data/edit.htm index f6842363..281c535f 100644 --- a/data/edit.htm +++ b/data/edit.htm @@ -179,8 +179,8 @@ }, d.onchange = function(e) { if (0 !== d.files.length) { var t = d.files[0].name, - n = /(?:.([^.]+))?$/.exec(t)[1], - a = /(.*).[^.]+$/.exec(t)[1]; + n = /(?:\.([^.]+))?$/.exec(t)[1], + a = /(.*)\.[^.]+$/.exec(t)[1]; void 0 !== typeof a && (t = a), void 0 !== typeof n && ("html" === n ? n = "htm" : "jpeg" === n && (n = "jpg"), t = t + "." + n), "/" === c.value || 0 === c.value.lastIndexOf("/") ? c.value = "/" + t : c.value = c.value.substring(0, c.value.lastIndexOf("/") + 1) + t } }, s.onclick = function(e) { @@ -206,66 +206,64 @@ } } - function createTree(e, t) { - var n = document.getElementById("preview"), - a = document.createElement("div"); + function createTree(e, r) { + var t = document.getElementById("preview"), + m = document.createElement("div"); - function o(e) { - document.getElementById("editor").style.display = "none", n.style.display = "block", n.innerHTML = '' + function u(e) { + document.getElementById("editor").style.display = "none", t.style.display = "block", t.innerHTML = '' } - function d(e, n) { - var d = document.createElement("ul"); - e.appendChild(d); - var c = document.createElement("li"); - d.appendChild(c), l(n) ? (c.innerHTML = "Edit", c.onclick = function(a) { - t.loadUrl(n), document.body.getElementsByClassName("cm").length > 0 && document.body.removeChild(e) - }) : i(n) && (c.innerHTML = "Preview", c.onclick = function(t) { - o(n), document.body.getElementsByClassName("cm").length > 0 && document.body.removeChild(e) - }); - var r = document.createElement("li"); - d.appendChild(r), r.innerHTML = "Download", r.onclick = function(t) { - ! function(e) { - document.getElementById("download-frame").src = e + "?download=true" - }(n), document.body.getElementsByClassName("cm").length > 0 && document.body.removeChild(e) - }; - var m = document.createElement("li"); - d.appendChild(m), m.innerHTML = "Delete", m.onclick = function(t) { - ! function(e) { - xmlHttp = new XMLHttpRequest, xmlHttp.onreadystatechange = function() { - 4 == xmlHttp.readyState && (200 != xmlHttp.status ? alert("ERROR[" + xmlHttp.status + "]: " + xmlHttp.responseText) : (a.removeChild(a.childNodes[0]), s(a, "/"))) - }; - var t = new FormData; - t.append("path", e), xmlHttp.open("DELETE", "/edit"), xmlHttp.send(t) - }(n), document.body.getElementsByClassName("cm").length > 0 && document.body.removeChild(e) - } - } - - function c(e, n, a) { - var c = document.createElement("li"); - c.id = ("/" == e ? "" : e) + "/" + n; - var s = document.createElement("span"); - return s.innerText = n, c.appendChild(s), c.onclick = function(e) { - l(c.id.toLowerCase()) ? t.loadUrl(c.id) : i(c.id.toLowerCase()) && o(c.id) - }, c.oncontextmenu = function(e) { + function c(e, t, n) { + var a = document.createElement("li"); + a.id = ("/" == e ? "" : e) + "/" + t; + var o = document.createElement("span"); + return o.innerText = t, a.appendChild(o), a.onclick = function(e) { + p(a.id.toLowerCase()) ? r.loadUrl(a.id) : f(a.id.toLowerCase()) && u(a.id) + }, a.oncontextmenu = function(e) { e.preventDefault(), e.stopPropagation(), function(e, t, n) { var a = document.createElement("div"), o = document.body.scrollTop ? document.body.scrollTop : document.documentElement.scrollTop, - c = document.body.scrollLeft ? document.body.scrollLeft : document.documentElement.scrollLeft, - l = event.clientX + c, - i = event.clientY + o; - a.className = "cm", a.style.display = "block", a.style.left = l + "px", a.style.top = i + "px", d(a, t), document.body.appendChild(a); - var s = a.offsetWidth, - r = a.offsetHeight; + d = document.body.scrollLeft ? document.body.scrollLeft : document.documentElement.scrollLeft, + c = event.clientX + d, + l = event.clientY + o; + a.className = "cm", a.style.display = "block", a.style.left = c + "px", a.style.top = l + "px", + function(n, a) { + var e = document.createElement("ul"); + n.appendChild(e); + var t = document.createElement("li"); + e.appendChild(t), p(a) ? (t.innerHTML = "Edit", t.onclick = function(e) { + r.loadUrl(a), 0 < document.body.getElementsByClassName("cm").length && document.body.removeChild(n) + }) : f(a) && (t.innerHTML = "Preview", t.onclick = function(e) { + u(a), 0 < document.body.getElementsByClassName("cm").length && document.body.removeChild(n) + }); + var o = document.createElement("li"); + e.appendChild(o), o.innerHTML = "Download", o.onclick = function(e) { + var t; + t = a, document.getElementById("download-frame").src = t + "?download=true", 0 < document.body.getElementsByClassName("cm").length && document.body.removeChild(n) + }; + var d = document.createElement("li"); + e.appendChild(d), d.innerHTML = "Delete", d.onclick = function(e) { + ! function(e) { + xmlHttp = new XMLHttpRequest, xmlHttp.onreadystatechange = function() { + 4 == xmlHttp.readyState && (200 != xmlHttp.status ? alert("ERROR[" + xmlHttp.status + "]: " + xmlHttp.responseText) : (m.removeChild(m.childNodes[0]), h(m, "/"))) + }; + var t = new FormData; + t.append("path", e), xmlHttp.open("DELETE", "/edit"), xmlHttp.send(t) + }(a), 0 < document.body.getElementsByClassName("cm").length && document.body.removeChild(n) + } + }(a, t), document.body.appendChild(a); + var i = a.offsetWidth, + s = a.offsetHeight; a.onmouseout = function(e) { - (e.clientX < l || e.clientX > l + s || e.clientY < i || e.clientY > i + r) && document.body.getElementsByClassName("cm").length > 0 && document.body.removeChild(a) + (e.clientX < c || e.clientX > c + i || e.clientY < l || e.clientY > l + s) && 0 < document.body.getElementsByClassName("cm").length && document.body.removeChild(a) } - }(0, c.id) - }, c + }(0, a.id) + }, a } - function l(e) { + function p(e) { var t = /(?:.([^.]+))?$/.exec(e)[1]; if (void 0 !== typeof t) switch (t) { case "txt": @@ -282,7 +280,7 @@ return !1 } - function i(e) { + function f(e) { var t = /(?:.([^.]+))?$/.exec(e)[1]; if (void 0 !== typeof t) switch (t) { case "png": @@ -293,20 +291,19 @@ return !1 } - function s(e, t) { - xmlHttp = new XMLHttpRequest(e, t), xmlHttp.onreadystatechange = function(e, t) { - return function() { - 4 == xmlHttp.readyState && 200 == xmlHttp.status && function(e, t, n) { - var a = document.createElement("ul"); - e.appendChild(a); - for (var o = n.length, d = 0; d < o; d++) "file" === n[d].type && a.appendChild(c(t, n[d].name, n[d].size)) - }(e, t, JSON.parse(xmlHttp.responseText)) - } - }(e, t), xmlHttp.open("GET", "/list?dir=" + t, !0), xmlHttp.send(null) + function h(e, t) { + var n, a; + xmlHttp = new XMLHttpRequest(e, t), xmlHttp.onreadystatechange = (n = e, a = t, function() { + 4 == xmlHttp.readyState && 200 == xmlHttp.status && function(e, t, n) { + var a = document.createElement("ul"); + e.appendChild(a); + for (var o = n.length, d = 0; d < o; d++) "file" === n[d].type && a.appendChild(c(t, n[d].name, n[d].size)) + }(n, a, JSON.parse(xmlHttp.responseText)) + }), xmlHttp.open("GET", "/list?dir=" + t, !0), xmlHttp.send(null) } - return a.className = "tvu", document.getElementById(e).appendChild(a), this.refreshPath = function(e) { - a.removeChild(a.childNodes[0]), s(a, "/") - }, s(a, "/"), this + return m.className = "tvu", document.getElementById(e).appendChild(m), this.refreshPath = function(e) { + m.removeChild(m.childNodes[0]), h(m, "/") + }, h(m, "/"), this } function createEditor(e, t, n, a, o) { @@ -373,7 +370,7 @@ win: "Ctrl-S", mac: "Command-S" }, - exec: function(e) { + exec: function(a) { ! function(e, t, n) { (c = new XMLHttpRequest).onreadystatechange = i; var a = new FormData; @@ -381,14 +378,14 @@ type: n }), e), c.open("POST", "/edit"), c.send(a) }(t, function(e) { - var t = e.getValue(); + var t = a.getValue(); try { var n = JSON.parse(t); return JSON.stringify(n) } catch (e) { return t + "" } - }(e), o) + }(), o) }, readOnly: !1 }), l.commands.addCommand({ @@ -417,21 +414,21 @@ } function onBodyLoad() { - var e = {}, - t = (window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(t, n, a) { - e[n] = a - }), createEditor("editor", e.file, e.lang, e.theme)); - createFileUploader("uploader", createTree("tree", t), t), e.file && (document.getElementById("upload-path").value = e.file) + var a = {}, + e = (window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(e, t, n) { + a[t] = n + }), createEditor("editor", a.file, a.lang, a.theme)); + createFileUploader("uploader", createTree("tree", e), e), a.file && (document.getElementById("upload-path").value = a.file) } - +
- + \ No newline at end of file diff --git a/data/edit.htm.gz b/data/edit.htm.gz index 08cf1bf70de74b1985e36349be3cca6da2a6e997..f212a34c4748aaa4a181dd3bd7f1d56253912b25 100644 GIT binary patch literal 3742 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 CVm#{r