upload files/images with CTRL-V (from explorer etc.)

This commit is contained in:
ed 2024-04-23 19:46:54 +00:00
parent bc2c1e427a
commit c5f7cfc355

View file

@ -337,6 +337,8 @@ var Ls = {
"fp_err": "move failed:\n", "fp_err": "move failed:\n",
"fp_confirm": "move these {0} items here?", "fp_confirm": "move these {0} items here?",
"fp_etab": 'failed to read clipboard from other browser tab', "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:",
"mk_noname": "type a name into the text field on the left before you do that :p", "mk_noname": "type a name into the text field on the left before you do that :p",
@ -842,6 +844,8 @@ var Ls = {
"fp_err": "flytting feilet:\n", "fp_err": "flytting feilet:\n",
"fp_confirm": "flytt disse {0} filene hit?", "fp_confirm": "flytt disse {0} filene hit?",
"fp_etab": 'kunne ikke lese listen med filer ifra den andre nettleserfanen', "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:",
"mk_noname": "skriv inn et navn i tekstboksen til venstre først :p", "mk_noname": "skriv inn et navn i tekstboksen til venstre først :p",
@ -3596,6 +3600,7 @@ var fileman = (function () {
bdel = ebi('fdel'), bdel = ebi('fdel'),
bcut = ebi('fcut'), bcut = ebi('fcut'),
bpst = ebi('fpst'), bpst = ebi('fpst'),
t_paste,
r = {}; r = {};
r.clip = null; r.clip = null;
@ -4073,8 +4078,66 @@ var fileman = (function () {
} }
}; };
r.paste = function (e) { document.onpaste = function (e) {
ev(e); var xfer = e.clipboardData || window.clipboardData;
if (!xfer || !xfer.files || !xfer.files.length)
return;
var files = [];
for (var a = 0, aa = xfer.files.length; a < aa; a++)
files.push(xfer.files[a]);
clearTimeout(t_paste);
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);
};
r.clip_up = function (files) {
goto_up2k();
var good = [], nil = [], bad = [];
for (var a = 0, aa = files.length; a < aa; a++) {
var fobj = files[a], dst = good;
try {
if (fobj.size < 1)
dst = nil;
}
catch (ex) {
dst = bad;
}
dst.push([fobj, fobj.name]);
}
var doit = function (is_img) {
jwrite('fman_clip', [Date.now()]);
r.clip = [];
var x = up2k.uc.ask_up;
if (is_img)
up2k.uc.ask_up = false;
up2k.gotallfiles[0](good, nil, bad, up2k.gotallfiles.slice(1));
up2k.uc.ask_up = x;
};
if (good.length != 1 || !/\.png$/.test(good[0][1]))
return doit();
modal.prompt(L.fp_name, good[0][1].slice(0, -4), function (v) {
good[0][1] = v + '.png';
doit(true);
}, null);
};
r.d_paste = function () {
// gets called before onpaste; defer
clearTimeout(t_paste);
t_paste = setTimeout(r.paste, 50);
};
r.paste = function () {
if (clgot(bpst, 'hide')) if (clgot(bpst, 'hide'))
return toast.err(3, L.fp_eperm); return toast.err(3, L.fp_eperm);
@ -5178,6 +5241,9 @@ document.onkeydown = function (e) {
if (ebi('hkhelp')) if (ebi('hkhelp'))
return qsr('#hkhelp'); return qsr('#hkhelp');
if (toast.visible)
return toast.hide();
if (ebi('rn_cancel')) if (ebi('rn_cancel'))
return ebi('rn_cancel').click(); return ebi('rn_cancel').click();
@ -5250,7 +5316,7 @@ document.onkeydown = function (e) {
return fileman.cut(); return fileman.cut();
if (k == 'KeyV' || k == 'v') if (k == 'KeyV' || k == 'v')
return fileman.paste(); return fileman.d_paste();
if (k == 'KeyK' || k == 'k') if (k == 'KeyK' || k == 'k')
return fileman.delete(); return fileman.delete();