mirror of
https://github.com/9001/copyparty.git
synced 2025-08-17 09:02:15 -06:00
add quickdelete option; closes #183
togglebutton in the ui switches between 2 (off/default) and 1 (on/quick) confirmations; global-option `--qdel` sets the default setting `--qdel=0` changes the togglebutton to switch between 1 (off/default) confirmations and 0 (on) in other words, when the ui-button is enabled, it always reduces the number of confirmations by one
This commit is contained in:
parent
2d322dd48e
commit
21a96bcfe8
|
@ -1550,6 +1550,7 @@ def add_ui(ap, retry):
|
||||||
ap2.add_argument("--nsort", action="store_true", help="default-enable natural sort of filenames with leading numbers (volflag=nsort)")
|
ap2.add_argument("--nsort", action="store_true", help="default-enable natural sort of filenames with leading numbers (volflag=nsort)")
|
||||||
ap2.add_argument("--hsortn", metavar="N", type=int, default=2, help="number of sorting rules to include in media URLs by default (volflag=hsortn)")
|
ap2.add_argument("--hsortn", metavar="N", type=int, default=2, help="number of sorting rules to include in media URLs by default (volflag=hsortn)")
|
||||||
ap2.add_argument("--see-dots", action="store_true", help="default-enable seeing dotfiles; only takes effect if user has the necessary permissions")
|
ap2.add_argument("--see-dots", action="store_true", help="default-enable seeing dotfiles; only takes effect if user has the necessary permissions")
|
||||||
|
ap2.add_argument("--qdel", metavar="LVL", type=int, default=2, help="number of confirmations to show when deleting files (2/1/0)")
|
||||||
ap2.add_argument("--unlist", metavar="REGEX", type=u, default="", help="don't show files matching \033[33mREGEX\033[0m in file list. Purely cosmetic! Does not affect API calls, just the browser. Example: [\033[32m\\.(js|css)$\033[0m] (volflag=unlist)")
|
ap2.add_argument("--unlist", metavar="REGEX", type=u, default="", help="don't show files matching \033[33mREGEX\033[0m in file list. Purely cosmetic! Does not affect API calls, just the browser. Example: [\033[32m\\.(js|css)$\033[0m] (volflag=unlist)")
|
||||||
ap2.add_argument("--favico", metavar="TXT", type=u, default="c 000 none" if retry else "🎉 000 none", help="\033[33mfavicon-text\033[0m [ \033[33mforeground\033[0m [ \033[33mbackground\033[0m ] ], set blank to disable")
|
ap2.add_argument("--favico", metavar="TXT", type=u, default="c 000 none" if retry else "🎉 000 none", help="\033[33mfavicon-text\033[0m [ \033[33mforeground\033[0m [ \033[33mbackground\033[0m ] ], set blank to disable")
|
||||||
ap2.add_argument("--ext-th", metavar="E=VP", type=u, action="append", help="use thumbnail-image \033[33mVP\033[0m for file-extension \033[33mE\033[0m, example: [\033[32mexe=/.res/exe.png\033[0m] (volflag=ext_th)")
|
ap2.add_argument("--ext-th", metavar="E=VP", type=u, action="append", help="use thumbnail-image \033[33mVP\033[0m for file-extension \033[33mE\033[0m, example: [\033[32mexe=/.res/exe.png\033[0m] (volflag=ext_th)")
|
||||||
|
|
|
@ -2670,6 +2670,7 @@ class AuthSrv(object):
|
||||||
"def_hcols": list(vf.get("mth") or []),
|
"def_hcols": list(vf.get("mth") or []),
|
||||||
"unlist0": vf.get("unlist") or "",
|
"unlist0": vf.get("unlist") or "",
|
||||||
"see_dots": self.args.see_dots,
|
"see_dots": self.args.see_dots,
|
||||||
|
"dqdel": self.args.qdel,
|
||||||
"dgrid": "grid" in vf,
|
"dgrid": "grid" in vf,
|
||||||
"dgsel": "gsel" in vf,
|
"dgsel": "gsel" in vf,
|
||||||
"dnsort": "nsort" in vf,
|
"dnsort": "nsort" in vf,
|
||||||
|
|
|
@ -226,6 +226,7 @@ var Ls = {
|
||||||
"ct_csel": 'use CTRL and SHIFT for file selection in grid-view">sel',
|
"ct_csel": 'use CTRL and SHIFT for file selection in grid-view">sel',
|
||||||
"ct_ihop": 'when the image viewer is closed, scroll down to the last viewed file">g⮯',
|
"ct_ihop": 'when the image viewer is closed, scroll down to the last viewed file">g⮯',
|
||||||
"ct_dots": 'show hidden files (if server permits)">dotfiles',
|
"ct_dots": 'show hidden files (if server permits)">dotfiles',
|
||||||
|
"ct_qdel": 'when deleting files, only ask for confirmation once">qdel',
|
||||||
"ct_dir1st": 'sort folders before files">📁 first',
|
"ct_dir1st": 'sort folders before files">📁 first',
|
||||||
"ct_nsort": 'natural sort (for filenames with leading digits)">nsort',
|
"ct_nsort": 'natural sort (for filenames with leading digits)">nsort',
|
||||||
"ct_readme": 'show README.md in folder listings">📜 readme',
|
"ct_readme": 'show README.md in folder listings">📜 readme',
|
||||||
|
@ -850,6 +851,7 @@ var Ls = {
|
||||||
"ct_csel": 'bruk tastene CTRL og SHIFT for markering av filer i ikonvisning">merk',
|
"ct_csel": 'bruk tastene CTRL og SHIFT for markering av filer i ikonvisning">merk',
|
||||||
"ct_ihop": 'bla ned til sist viste bilde når bildeviseren lukkes">g⮯',
|
"ct_ihop": 'bla ned til sist viste bilde når bildeviseren lukkes">g⮯',
|
||||||
"ct_dots": 'vis skjulte filer (gitt at serveren tillater det)">.synlig',
|
"ct_dots": 'vis skjulte filer (gitt at serveren tillater det)">.synlig',
|
||||||
|
"ct_qdel": 'sletteknappen spør bare én gang om bekreftelse">hurtig🗑️',
|
||||||
"ct_dir1st": 'sorter slik at mapper kommer foran filer">📁 først',
|
"ct_dir1st": 'sorter slik at mapper kommer foran filer">📁 først',
|
||||||
"ct_nsort": 'naturlig sortering (forstår tall i filnavn)">nsort',
|
"ct_nsort": 'naturlig sortering (forstår tall i filnavn)">nsort',
|
||||||
"ct_readme": 'vis README.md nedenfor filene">📜 readme',
|
"ct_readme": 'vis README.md nedenfor filene">📜 readme',
|
||||||
|
@ -1474,6 +1476,7 @@ var Ls = {
|
||||||
"ct_csel": '在网格视图中使用 CTRL 和 SHIFT 进行文件选择">CTRL',
|
"ct_csel": '在网格视图中使用 CTRL 和 SHIFT 进行文件选择">CTRL',
|
||||||
"ct_ihop": '当图像查看器关闭时,滚动到最后查看的文件">滚动',
|
"ct_ihop": '当图像查看器关闭时,滚动到最后查看的文件">滚动',
|
||||||
"ct_dots": '显示隐藏文件(如果服务器允许)">隐藏文件',
|
"ct_dots": '显示隐藏文件(如果服务器允许)">隐藏文件',
|
||||||
|
"ct_qdel": '删除文件时,只需确认一次">快删', //m
|
||||||
"ct_dir1st": '在文件之前排序文件夹">📁 排序',
|
"ct_dir1st": '在文件之前排序文件夹">📁 排序',
|
||||||
"ct_nsort": '正确排序以数字开头的文件名">数字排序', //m
|
"ct_nsort": '正确排序以数字开头的文件名">数字排序', //m
|
||||||
"ct_readme": '在文件夹列表中显示 README.md">📜 readme',
|
"ct_readme": '在文件夹列表中显示 README.md">📜 readme',
|
||||||
|
@ -2090,6 +2093,7 @@ ebi('op_cfg').innerHTML = (
|
||||||
' <a id="csel" class="tgl btn" href="#" tt="' + L.ct_csel + '</a>\n' +
|
' <a id="csel" class="tgl btn" href="#" tt="' + L.ct_csel + '</a>\n' +
|
||||||
' <a id="ihop" class="tgl btn" href="#" tt="' + L.ct_ihop + '</a>\n' +
|
' <a id="ihop" class="tgl btn" href="#" tt="' + L.ct_ihop + '</a>\n' +
|
||||||
' <a id="dotfiles" class="tgl btn" href="#" tt="' + L.ct_dots + '</a>\n' +
|
' <a id="dotfiles" class="tgl btn" href="#" tt="' + L.ct_dots + '</a>\n' +
|
||||||
|
' <a id="qdel" class="tgl btn" href="#" tt="' + L.ct_qdel + '</a>\n' +
|
||||||
' <a id="dir1st" class="tgl btn" href="#" tt="' + L.ct_dir1st + '</a>\n' +
|
' <a id="dir1st" class="tgl btn" href="#" tt="' + L.ct_dir1st + '</a>\n' +
|
||||||
' <a id="nsort" class="tgl btn" href="#" tt="' + L.ct_nsort + '</a>\n' +
|
' <a id="nsort" class="tgl btn" href="#" tt="' + L.ct_nsort + '</a>\n' +
|
||||||
' <a id="ireadme" class="tgl btn" href="#" tt="' + L.ct_readme + '</a>\n' +
|
' <a id="ireadme" class="tgl btn" href="#" tt="' + L.ct_readme + '</a>\n' +
|
||||||
|
@ -5453,7 +5457,16 @@ var fileman = (function () {
|
||||||
deleter();
|
deleter();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var asks = r.qdel ? 1 : 2;
|
||||||
|
if (dqdel === 0)
|
||||||
|
asks -= 1;
|
||||||
|
|
||||||
|
if (!asks)
|
||||||
|
return deleter();
|
||||||
|
|
||||||
modal.confirm('<h6 style="color:#900">' + L.danger + '</h6>\n<b>' + L.fd_warn1.format(vps.length) + '</b><ul>' + uricom_adec(vps, true).join('') + '</ul>', function () {
|
modal.confirm('<h6 style="color:#900">' + L.danger + '</h6>\n<b>' + L.fd_warn1.format(vps.length) + '</b><ul>' + uricom_adec(vps, true).join('') + '</ul>', function () {
|
||||||
|
if (asks === 1)
|
||||||
|
return deleter();
|
||||||
modal.confirm(L.fd_warn2, deleter, null);
|
modal.confirm(L.fd_warn2, deleter, null);
|
||||||
}, null);
|
}, null);
|
||||||
};
|
};
|
||||||
|
@ -5814,6 +5827,8 @@ var fileman = (function () {
|
||||||
r.bus.onmessage();
|
r.bus.onmessage();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
bcfg_bind(r, 'qdel', 'qdel', dqdel == 1);
|
||||||
|
|
||||||
bren.onclick = r.rename;
|
bren.onclick = r.rename;
|
||||||
bdel.onclick = r.delete;
|
bdel.onclick = r.delete;
|
||||||
bcut.onclick = r.cut;
|
bcut.onclick = r.cut;
|
||||||
|
|
|
@ -152,7 +152,7 @@ class Cfg(Namespace):
|
||||||
ex = "ah_cli ah_gen css_browser dbpath hist ipu js_browser js_other mime mimes no_forget no_hash no_idx nonsus_urls og_tpl og_ua ua_nodoc ua_nozip"
|
ex = "ah_cli ah_gen css_browser dbpath hist ipu js_browser js_other mime mimes no_forget no_hash no_idx nonsus_urls og_tpl og_ua ua_nodoc ua_nozip"
|
||||||
ka.update(**{k: None for k in ex.split()})
|
ka.update(**{k: None for k in ex.split()})
|
||||||
|
|
||||||
ex = "hash_mt hsortn safe_dedup srch_time tail_fd tail_rate u2abort u2j u2sz"
|
ex = "hash_mt hsortn qdel safe_dedup srch_time tail_fd tail_rate u2abort u2j u2sz"
|
||||||
ka.update(**{k: 1 for k in ex.split()})
|
ka.update(**{k: 1 for k in ex.split()})
|
||||||
|
|
||||||
ex = "au_vol dl_list mtab_age reg_cap s_thead s_tbody tail_tmax tail_who th_convt ups_who zip_who"
|
ex = "au_vol dl_list mtab_age reg_cap s_thead s_tbody tail_tmax tail_who th_convt ups_who zip_who"
|
||||||
|
|
Loading…
Reference in a new issue