better ctrl-v upload ux

This commit is contained in:
ed 2024-04-24 23:49:34 +02:00
parent f6e693f0f5
commit 253a414443
3 changed files with 37 additions and 18 deletions

View file

@ -28,6 +28,8 @@
--row-alt: #282828;
--scroll: #eb0;
--sel-fg: var(--bg-d1);
--sel-bg: var(--fg);
--a: #fc5;
--a-b: #c90;
@ -330,6 +332,8 @@ html.c {
}
html.cz {
--bgg: var(--bg-u2);
--sel-bg: var(--bg-u5);
--sel-fg: var(--fg);
--srv-3: #fff;
--u2-tab-b1: var(--bg-d3);
}
@ -343,6 +347,8 @@ html.cy {
--bg-d3: #f77;
--bg-d2: #ff0;
--sel-bg: #f77;
--a: #fff;
--a-hil: #fff;
--a-h-bg: #000;
@ -588,8 +594,8 @@ html.dy {
line-height: 1.2em;
}
::selection {
color: var(--bg-d1);
background: var(--fg);
color: var(--sel-fg);
background: var(--sel-bg);
text-shadow: none;
}
html,body,tr,th,td,#files,a {

View file

@ -337,8 +337,9 @@ var Ls = {
"fp_err": "move failed:\n",
"fp_confirm": "move these {0} items here?",
"fp_etab": 'failed to read clipboard from other browser tab',
"fp_both": 'what do you want to paste?\n\nOK/Enter: Upload {0} files from system clipboard\nEsc/Abort: Move {1} files on server',
"fp_name": "Uploading a PNG image from clipboard.\n\nconfirm by giving it a filename:",
"fp_name": "uploading a file from your device. Give it a name:",
"fp_both_m": '<h6>choose what to paste</h6><code>Enter</code> = Move {0} files from «{1}»\n<code>ESC</code> = Upload {2} files from your device',
"fp_both_b": '<a href="#" id="modal-ok">Move</a><a href="#" id="modal-ng">Upload</a>',
"mk_noname": "type a name into the text field on the left before you do that :p",
@ -844,8 +845,9 @@ var Ls = {
"fp_err": "flytting feilet:\n",
"fp_confirm": "flytt disse {0} filene hit?",
"fp_etab": 'kunne ikke lese listen med filer ifra den andre nettleserfanen',
"fp_both": "hva vil du lime inn?\n\nOK/Enter: Last opp {0} filer ifra enheten din\nEsc/Avbryt: Flytt {1} filer på serveren",
"fp_name": "Laster opp PNG-bilde ifra utklippstavle.\n\nbekreft ved å velge et filnavn:",
"fp_name": "Laster opp én fil fra enheten din. Velg filnavn:",
"fp_both_m": '<h6>hva skal limes inn her?</h6><code>Enter</code> = Flytt {0} filer fra «{1}»\n<code>ESC</code> = Last opp {2} filer fra enheten din',
"fp_both_b": '<a href="#" id="modal-ok">Flytt</a><a href="#" id="modal-ng">Last opp</a>',
"mk_noname": "skriv inn et navn i tekstboksen til venstre først :p",
@ -4092,9 +4094,10 @@ var fileman = (function () {
if (!r.clip.length)
return r.clip_up(files);
modal.confirm(
L.fp_both.format(files.length, r.clip.length),
function () { r.clip_up(files); }, r.paste);
var src = r.clip.length == 1 ? r.clip[0] : vsplit(r.clip[0])[0],
msg = L.fp_both_m.format(r.clip.length, src, files.length);
modal.confirm(msg, r.paste, function () { r.clip_up(files); }, null, L.fp_both_b);
};
r.clip_up = function (files) {
@ -4122,13 +4125,19 @@ var fileman = (function () {
up2k.gotallfiles[0](good, nil, bad, up2k.gotallfiles.slice(1));
up2k.uc.ask_up = x;
};
if (good.length != 1 || !/\.png$/.test(good[0][1]))
if (good.length != 1)
return doit();
modal.prompt(L.fp_name, good[0][1].slice(0, -4), function (v) {
good[0][1] = v + '.png';
var fn = good[0][1],
ofs = fn.lastIndexOf('.');
// stop linux-chrome from adding the fs-path into the <input>
setTimeout(function () {
modal.prompt(L.fp_name, fn, function (v) {
good[0][1] = v;
doit(true);
}, null);
}, null, null, 0, ofs > 0 ? ofs : undefined);
}, 1);
};
r.d_paste = function () {

View file

@ -1539,6 +1539,8 @@ var modal = (function () {
cb_up = null,
cb_ok = null,
cb_ng = null,
sel_0 = 0,
sel_1 = 0,
tok, tng, prim, sec, ok_cancel;
r.load = function () {
@ -1572,7 +1574,7 @@ var modal = (function () {
(inp || a).focus();
if (inp)
setTimeout(function () {
inp.setSelectionRange(0, inp.value.length, "forward");
inp.setSelectionRange(sel_0, sel_1, "forward");
}, 0);
document.addEventListener('focus', onfocus);
@ -1695,16 +1697,18 @@ var modal = (function () {
r.show(html);
}
r.prompt = function (html, v, cok, cng, fun) {
r.prompt = function (html, v, cok, cng, fun, so0, so1) {
q.push(function () {
_prompt(lf2br(html), v, cok, cng, fun);
_prompt(lf2br(html), v, cok, cng, fun, so0, so1);
});
next();
}
var _prompt = function (html, v, cok, cng, fun) {
var _prompt = function (html, v, cok, cng, fun, so0, so1) {
cb_ok = cok;
cb_ng = cng === undefined ? cok : null;
cb_up = fun;
sel_0 = so0 || 0;
sel_1 = so1 === undefined ? v.length : so1;
html += '<input id="modali" type="text" ' + NOAC + ' /><div id="modalb">' + ok_cancel + '</div>';
r.show(html);