Skip to content

Commit 21a96bc

Browse files
committed
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
1 parent 2d322dd commit 21a96bc

File tree

4 files changed

+18
-1
lines changed

4 files changed

+18
-1
lines changed

copyparty/__main__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1550,6 +1550,7 @@ def add_ui(ap, retry):
15501550
ap2.add_argument("--nsort", action="store_true", help="default-enable natural sort of filenames with leading numbers (volflag=nsort)")
15511551
ap2.add_argument("--hsortn", metavar="N", type=int, default=2, help="number of sorting rules to include in media URLs by default (volflag=hsortn)")
15521552
ap2.add_argument("--see-dots", action="store_true", help="default-enable seeing dotfiles; only takes effect if user has the necessary permissions")
1553+
ap2.add_argument("--qdel", metavar="LVL", type=int, default=2, help="number of confirmations to show when deleting files (2/1/0)")
15531554
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)")
15541555
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")
15551556
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)")

copyparty/authsrv.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2670,6 +2670,7 @@ def _reload(self, verbosity: int = 9) -> None:
26702670
"def_hcols": list(vf.get("mth") or []),
26712671
"unlist0": vf.get("unlist") or "",
26722672
"see_dots": self.args.see_dots,
2673+
"dqdel": self.args.qdel,
26732674
"dgrid": "grid" in vf,
26742675
"dgsel": "gsel" in vf,
26752676
"dnsort": "nsort" in vf,

copyparty/web/browser.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,7 @@ var Ls = {
226226
"ct_csel": 'use CTRL and SHIFT for file selection in grid-view">sel',
227227
"ct_ihop": 'when the image viewer is closed, scroll down to the last viewed file">g⮯',
228228
"ct_dots": 'show hidden files (if server permits)">dotfiles',
229+
"ct_qdel": 'when deleting files, only ask for confirmation once">qdel',
229230
"ct_dir1st": 'sort folders before files">📁 first',
230231
"ct_nsort": 'natural sort (for filenames with leading digits)">nsort',
231232
"ct_readme": 'show README.md in folder listings">📜 readme',
@@ -850,6 +851,7 @@ var Ls = {
850851
"ct_csel": 'bruk tastene CTRL og SHIFT for markering av filer i ikonvisning">merk',
851852
"ct_ihop": 'bla ned til sist viste bilde når bildeviseren lukkes">g⮯',
852853
"ct_dots": 'vis skjulte filer (gitt at serveren tillater det)">.synlig',
854+
"ct_qdel": 'sletteknappen spør bare én gang om bekreftelse">hurtig🗑️',
853855
"ct_dir1st": 'sorter slik at mapper kommer foran filer">📁 først',
854856
"ct_nsort": 'naturlig sortering (forstår tall i filnavn)">nsort',
855857
"ct_readme": 'vis README.md nedenfor filene">📜 readme',
@@ -1474,6 +1476,7 @@ var Ls = {
14741476
"ct_csel": '在网格视图中使用 CTRL 和 SHIFT 进行文件选择">CTRL',
14751477
"ct_ihop": '当图像查看器关闭时,滚动到最后查看的文件">滚动',
14761478
"ct_dots": '显示隐藏文件(如果服务器允许)">隐藏文件',
1479+
"ct_qdel": '删除文件时,只需确认一次">快删', //m
14771480
"ct_dir1st": '在文件之前排序文件夹">📁 排序',
14781481
"ct_nsort": '正确排序以数字开头的文件名">数字排序', //m
14791482
"ct_readme": '在文件夹列表中显示 README.md">📜 readme',
@@ -2090,6 +2093,7 @@ ebi('op_cfg').innerHTML = (
20902093
' <a id="csel" class="tgl btn" href="#" tt="' + L.ct_csel + '</a>\n' +
20912094
' <a id="ihop" class="tgl btn" href="#" tt="' + L.ct_ihop + '</a>\n' +
20922095
' <a id="dotfiles" class="tgl btn" href="#" tt="' + L.ct_dots + '</a>\n' +
2096+
' <a id="qdel" class="tgl btn" href="#" tt="' + L.ct_qdel + '</a>\n' +
20932097
' <a id="dir1st" class="tgl btn" href="#" tt="' + L.ct_dir1st + '</a>\n' +
20942098
' <a id="nsort" class="tgl btn" href="#" tt="' + L.ct_nsort + '</a>\n' +
20952099
' <a id="ireadme" class="tgl btn" href="#" tt="' + L.ct_readme + '</a>\n' +
@@ -5453,7 +5457,16 @@ var fileman = (function () {
54535457
deleter();
54545458
}
54555459

5460+
var asks = r.qdel ? 1 : 2;
5461+
if (dqdel === 0)
5462+
asks -= 1;
5463+
5464+
if (!asks)
5465+
return deleter();
5466+
54565467
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 () {
5468+
if (asks === 1)
5469+
return deleter();
54575470
modal.confirm(L.fd_warn2, deleter, null);
54585471
}, null);
54595472
};
@@ -5814,6 +5827,8 @@ var fileman = (function () {
58145827
r.bus.onmessage();
58155828
};
58165829

5830+
bcfg_bind(r, 'qdel', 'qdel', dqdel == 1);
5831+
58175832
bren.onclick = r.rename;
58185833
bdel.onclick = r.delete;
58195834
bcut.onclick = r.cut;

tests/util.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ def __init__(self, a=None, v=None, c=None, **ka0):
152152
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"
153153
ka.update(**{k: None for k in ex.split()})
154154

155-
ex = "hash_mt hsortn safe_dedup srch_time tail_fd tail_rate u2abort u2j u2sz"
155+
ex = "hash_mt hsortn qdel safe_dedup srch_time tail_fd tail_rate u2abort u2j u2sz"
156156
ka.update(**{k: 1 for k in ex.split()})
157157

158158
ex = "au_vol dl_list mtab_age reg_cap s_thead s_tbody tail_tmax tail_who th_convt ups_who zip_who"

0 commit comments

Comments
 (0)