mirror of
https://github.com/9001/copyparty.git
synced 2026-06-18 20:22:27 -06:00
Merge d80f3b76c5 into d33d11321f
This commit is contained in:
commit
7abca5cc61
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -18,6 +18,7 @@ copyparty.egg-info/
|
|||
|
||||
# ide
|
||||
*.sublime-workspace
|
||||
/.vs
|
||||
|
||||
# winmerge
|
||||
*.bak
|
||||
|
|
|
|||
34
README.md
34
README.md
|
|
@ -664,11 +664,15 @@ the main tabs in the ui
|
|||
* `[🔎]` [search](#searching) by size, date, path/name, mp3-tags ...
|
||||
* `[🧯]` [unpost](#unpost): undo/delete accidental uploads
|
||||
* `[🚀]` and `[🎈]` are the [uploaders](#uploading)
|
||||
* `[📟]` send-msg: either to server-log or into textfiles if `--urlform save`
|
||||
* `[⚙️]` client config options
|
||||
|
||||
|
||||
## quick actions (+)
|
||||
|
||||
* `[📂]` mkdir: create directories
|
||||
* `[📝]` new-file: create a new textfile
|
||||
* `[📟]` send-msg: either to server-log or into textfiles if `--urlform save`
|
||||
* `[🎺]` audio-player config options
|
||||
* `[⚙️]` general client config options
|
||||
* `[🚀]` upload: quick way to pick files for upload
|
||||
|
||||
|
||||
## hotkeys
|
||||
|
|
@ -682,7 +686,7 @@ the browser has the following hotkeys (always qwerty)
|
|||
* `G` toggle list / [grid view](#thumbnails) -- same as `田` bottom-right
|
||||
* `T` toggle thumbnails / icons
|
||||
* `ESC` close various things
|
||||
* `ctrl-K` delete selected files/folders
|
||||
* `ctrl-K/Del` delete selected files/folders
|
||||
* `ctrl-X` cut selected files/folders
|
||||
* `ctrl-C` copy selected files/folders to clipboard
|
||||
* `ctrl-V` paste (move/copy)
|
||||
|
|
@ -737,9 +741,9 @@ the browser has the following hotkeys (always qwerty)
|
|||
|
||||
## navpane
|
||||
|
||||
switching between breadcrumbs or navpane
|
||||
opening the navpane
|
||||
|
||||
click the `🌲` or pressing the `B` hotkey to toggle between breadcrumbs path (default), or a navpane (tree-browser sidebar thing)
|
||||
clicking the `≡` or pressing the `B` hotkey toggles the navpane (tree-browser sidebar thing)
|
||||
|
||||
* `[+]` and `[-]` (or hotkeys `A`/`D`) adjust the size
|
||||
* `[🎯]` jumps to the currently open folder
|
||||
|
|
@ -752,7 +756,7 @@ click the `🌲` or pressing the `B` hotkey to toggle between breadcrumbs path (
|
|||
|
||||
## thumbnails
|
||||
|
||||
press `g` or `田` to toggle grid-view instead of the file listing and `t` toggles icons / thumbnails
|
||||
press `g` or use the view mode buttons in the top left to toggle grid-view instead of the file listing and `t` toggles icons / thumbnails
|
||||
* can be made default globally with `--grid` or per-volume with volflag `grid`
|
||||
* enable by adding `?imgs` to a link, or disable with `?imgs=0`
|
||||
|
||||
|
|
@ -916,9 +920,7 @@ dropping files into the browser also lets you see if they exist on the server
|
|||
|
||||

|
||||
|
||||
when you drag/drop files into the browser, you will see two dropzones: `Upload` and `Search`
|
||||
|
||||
> on a phone? toggle the `[🔎]` switch green before tapping the big yellow Search button to select your files
|
||||
toggle the `[🔎]` switch in the upload options to search for files instead of uploading
|
||||
|
||||
the files will be hashed on the client-side, and each hash is sent to the server, which checks if that file exists somewhere
|
||||
|
||||
|
|
@ -988,6 +990,8 @@ file selection: click somewhere on the line (not the link itself), then:
|
|||
|
||||
you can copy/move files across browser tabs (cut/copy in one tab, paste in another)
|
||||
|
||||
you can drag/drop selected files into other folders
|
||||
|
||||
|
||||
## shares
|
||||
|
||||
|
|
@ -1164,7 +1168,7 @@ some highlights:
|
|||
|
||||
click the `play` link next to an audio file, or copy the link target to [share it](https://a.ocv.me/pub/demo/music/Ubiktune%20-%20SOUNDSHOCK%202%20-%20FM%20FUNK%20TERRROR!!/#af-1fbfba61&t=18) (optionally with a timestamp to start playing from, like that example does)
|
||||
|
||||
open the `[🎺]` media-player-settings tab to configure it,
|
||||
open the `[⚙]` configuration options and go to the `[🎵]` media player section to configure it,
|
||||
* "switches":
|
||||
* `[🔁]` repeats one single song forever
|
||||
* `[🔀]` shuffles the files inside each folder
|
||||
|
|
@ -1216,7 +1220,7 @@ you can use foobar2000, deadbeef, just about any standalone player should work -
|
|||
|
||||
alternatively, you can create the playlist using copyparty itself:
|
||||
|
||||
* open the `[🎺]` media-player-settings tab and enable the `[📻]` create-playlist feature -- this adds two new buttons in the bottom-right tray, `[📻add]` and `[📻copy]` which appear when you listen to music, or when you select a few audiofiles
|
||||
* open the `[⚙]` configuration options, go to the `[🎵]` media player section and enable the `[📻]` create-playlist feature -- this adds two new buttons in the bottom-right tray, `[📻add]` and `[📻copy]` which appear when you listen to music, or when you select a few audiofiles
|
||||
|
||||
* click the `📻add` button while a song is playing (or when you've selected some songs) and they'll be added to "the list" (you can't see it yet)
|
||||
|
||||
|
|
@ -1305,6 +1309,12 @@ see [./srv/expand/](./srv/expand/) for usage and examples
|
|||
|
||||
search by size, date, path/name, mp3-tags, ...
|
||||
|
||||
by default, the `[🔍]` search button shows the folder search bar.
|
||||
|
||||
search for files within a folder and optionally its subfolders.
|
||||
|
||||
for extended search options, use the dropdown arrow to open the full search UI
|
||||
|
||||

|
||||
|
||||
when started with `-e2dsa` copyparty will scan/index all your files. This avoids duplicates on upload, and also makes the volumes searchable through the web-ui:
|
||||
|
|
|
|||
|
|
@ -82,15 +82,15 @@
|
|||
};
|
||||
|
||||
// ...and then the trick! near the end of loadgrid,
|
||||
// thegrid.bagit is called to initialize the baguettebox
|
||||
// msel.bagit is called to initialize the baguettebox
|
||||
// (image/video gallery); this is the perfect function to
|
||||
// "hook" (hijack) so we can run our code :^)
|
||||
|
||||
// need to grab a backup of the original function first,
|
||||
var orig_func = thegrid.bagit;
|
||||
var orig_func = msel.bagit;
|
||||
|
||||
// and then replace it with our own:
|
||||
thegrid.bagit = function (isrc) {
|
||||
msel.bagit = function (isrc) {
|
||||
|
||||
if (isrc !== '#ggrid')
|
||||
// we only want to modify the grid, so
|
||||
|
|
@ -104,7 +104,7 @@
|
|||
// filenames, so schedule another run:
|
||||
setTimeout(graft_thumbs, 1);
|
||||
|
||||
// and finally, call the original thegrid.bagit function
|
||||
// and finally, call the original msel.bagit function
|
||||
return orig_func(isrc);
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
|
||||
#ops, #tree, #path, #wfp, /* main tabs and navigators (tree/breadcrumbs) */
|
||||
|
||||
#u2conf tr:first-child>td[rowspan]:not(#u2btn_cw), /* most of the config options */
|
||||
#u2conf tr:first-child>td[rowspan], /* most of the config options */
|
||||
|
||||
#srch_dz, #srch_zd, /* the filesearch dropzone */
|
||||
|
||||
|
|
@ -30,16 +30,12 @@
|
|||
|
||||
/* add some margins because now it's weird */
|
||||
.opview {margin-top: 2.5em}
|
||||
#op_up2k {margin-top: 6em}
|
||||
|
||||
/* and embiggen the upload button */
|
||||
#u2conf #u2btn, #u2btn {padding:1.5em 0}
|
||||
|
||||
/* adjust the button area a bit */
|
||||
#u2conf.w, #u2conf.ww {width: 35em !important; margin: 5em auto}
|
||||
|
||||
/* a */
|
||||
#op_up2k {min-height: 0}
|
||||
#u2conf.w {width: 35em !important; margin: 5em auto}
|
||||
|
||||
</style>
|
||||
|
||||
|
|
|
|||
|
|
@ -39,20 +39,6 @@ var u2min = `
|
|||
display: none !important;
|
||||
}
|
||||
#u2conf {margin:5em auto 0 auto !important}
|
||||
#u2conf.ww {width:70em}
|
||||
#u2conf.w {width:50em}
|
||||
#u2conf.w .c,
|
||||
#u2conf.w #u2btn_cw {text-align:left}
|
||||
#u2conf.w #u2btn_cw {width:70%}
|
||||
#u2etaw {margin:3em auto}
|
||||
#u2etaw.w {
|
||||
text-align: center;
|
||||
margin: -3.5em auto 5em auto;
|
||||
}
|
||||
#u2etaw.w #u2etas {margin-right:-37em}
|
||||
#u2etaw.w #u2etas.o {margin-top:-2.2em}
|
||||
#u2etaw.ww {margin:-1em auto}
|
||||
#u2etaw.ww #u2etas {padding-left:4em}
|
||||
#u2etas {
|
||||
background: none !important;
|
||||
border: none !important;
|
||||
|
|
|
|||
|
|
@ -119,7 +119,7 @@ body.untz {
|
|||
if (--uofs >= 0) {
|
||||
document.body.style.marginLeft = hrand() * uofs + 'px';
|
||||
ebi('tree').style.marginLeft = hrand() * uofs + 'px';
|
||||
for (var a of QSA('#ops>a, #path>a, #pctl>a'))
|
||||
for (var a of QSA('#ops>a, #path>a, .pctl>a'))
|
||||
a.style.transform = 'translate(' + hrand() * uofs * 1 + 'px, ' + hrand() * uofs * 0.7 + 'px) rotate(' + Math.random() * uofs * 0.7 + 'deg)'
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -73,6 +73,8 @@ web/browser.js
|
|||
web/browser2.html
|
||||
web/cf.html
|
||||
web/copyparty.gif
|
||||
web/copyparty.png
|
||||
web/copyparty.svg
|
||||
web/deps/busy.mp3
|
||||
web/deps/easymde.css
|
||||
web/deps/easymde.js
|
||||
|
|
@ -80,6 +82,7 @@ web/deps/marked.js
|
|||
web/deps/mfusepy.py
|
||||
web/deps/mini-fa.css
|
||||
web/deps/mini-fa.woff
|
||||
web/deps/orbitron.woff2
|
||||
web/deps/prism.css
|
||||
web/deps/prism.js
|
||||
web/deps/prismd.css
|
||||
|
|
@ -88,6 +91,7 @@ web/deps/sha512.ac.js
|
|||
web/deps/sha512.hw.js
|
||||
web/idp.html
|
||||
web/iiam.gif
|
||||
web/manifest.json
|
||||
web/md.css
|
||||
web/md.html
|
||||
web/md.js
|
||||
|
|
@ -109,6 +113,7 @@ web/splash.html
|
|||
web/splash.js
|
||||
web/svcs.html
|
||||
web/svcs.js
|
||||
web/sw.js
|
||||
web/tl/chi.js
|
||||
web/tl/cze.js
|
||||
web/tl/deu.js
|
||||
|
|
|
|||
|
|
@ -1931,12 +1931,12 @@ def add_og(ap):
|
|||
|
||||
|
||||
def add_ui(ap, retry: int):
|
||||
THEMES = 10
|
||||
THEMES = 12
|
||||
ap2 = ap.add_argument_group("ui options")
|
||||
ap2.add_argument("--grid", action="store_true", help="show grid/thumbnails by default (volflag=grid)")
|
||||
ap2.add_argument("--gsel", action="store_true", help="select files in grid by ctrl-click (volflag=gsel)")
|
||||
ap2.add_argument("--no-gsel", action="store_true", help="ctrl-click in gridview will open-in-new-tab instead of select-file (volflag=-gsel)")
|
||||
ap2.add_argument("--localtime", action="store_true", help="default to local timezone instead of UTC")
|
||||
ap2.add_argument("--ui-filesz", metavar="FMT", type=u, default="1", help="default filesize format; one of these: 0, 1, 2, 2c, 3, 3c, 4, 4c, 5, 5c, 6, 6c, 7, 7c, fuzzy (see UI)")
|
||||
ap2.add_argument("--ui-filesz", metavar="FMT", type=u, default="6", help="default filesize format; one of these: 0, 1, 2, 2c, 3, 3c, 4, 4c, 5, 5c, 6, 6c, 7, 7c, fuzzy (see UI)")
|
||||
ap2.add_argument("--gauto", metavar="PERCENT", type=int, default=0, help="switch to gridview if more than \033[33mPERCENT\033[0m of files are pics/vids; 0=disabled")
|
||||
ap2.add_argument("--rcm", metavar="TXT", default="yy", help="rightclick-menu; two yes/no options: 1st y/n is enable-custom-menu, 2nd y/n is enable-double")
|
||||
ap2.add_argument("--lang", metavar="LANG", type=u, default="eng", help="language, for example \033[32meng\033[0m / \033[32mnor\033[0m / ...")
|
||||
|
|
@ -1997,6 +1997,7 @@ def add_ui(ap, retry: int):
|
|||
ap2.add_argument("--ui-noctxb", action="store_true", help="hide context-buttons in the UI (volflag=ui_noctxb)")
|
||||
ap2.add_argument("--ui-norepl", action="store_true", help="hide repl-button in the UI (volflag=ui_norepl)")
|
||||
ap2.add_argument("--have-unlistc", action="store_true", help=argparse.SUPPRESS)
|
||||
ap2.add_argument("--gsel", action="store_true", default=True, help=argparse.SUPPRESS)
|
||||
|
||||
|
||||
def add_debug(ap):
|
||||
|
|
|
|||
|
|
@ -5292,7 +5292,7 @@ class HttpCli(object):
|
|||
# chrome cannot handle more than ~2000 unique SVGs
|
||||
# so url-param "raster" returns a png/webp instead
|
||||
# (useragent-sniffing kinshi due to caching proxies)
|
||||
mime, ico = self.conn.hsrv.ico.get(txt, not small, "raster" in self.uparam)
|
||||
mime, ico = self.conn.hsrv.ico.get(txt, not small, "raster" in self.uparam, self.uparam.get('a'))
|
||||
|
||||
lm = formatdate(self.E.t0)
|
||||
self.reply(ico, mime=mime, headers={"Last-Modified": lm})
|
||||
|
|
@ -6653,7 +6653,7 @@ class HttpCli(object):
|
|||
{
|
||||
"lead": "",
|
||||
"href": "%s/" % (x,),
|
||||
"ext": "---",
|
||||
"ext": "",
|
||||
"sz": 0,
|
||||
"ts": 0,
|
||||
"tags": e_d,
|
||||
|
|
@ -6862,7 +6862,7 @@ class HttpCli(object):
|
|||
pass
|
||||
|
||||
if is_dir:
|
||||
return self.tx_svg("folder")
|
||||
return self.reply(b"(no thumbnail)")
|
||||
|
||||
thp = None
|
||||
if self.thumbcli and not nothumb:
|
||||
|
|
@ -6882,7 +6882,7 @@ class HttpCli(object):
|
|||
elif th_fmt in ACODE2_FMT:
|
||||
raise Pebkac(415)
|
||||
|
||||
return self.tx_ico(rem)
|
||||
return self.reply(b"(no thumbnail)")
|
||||
|
||||
elif self.can_write and th_fmt is not None:
|
||||
return self.tx_svg("upload\nonly")
|
||||
|
|
@ -6986,6 +6986,9 @@ class HttpCli(object):
|
|||
self.log("#wow #whoa")
|
||||
|
||||
zi = vn.flags["du_iwho"]
|
||||
h1 = ""
|
||||
h2 = ""
|
||||
space_used_percent = 0
|
||||
if zi and (
|
||||
zi == 9
|
||||
or (zi == 7 and self.uname != "*")
|
||||
|
|
@ -7013,6 +7016,8 @@ class HttpCli(object):
|
|||
h1 = humansize(free or 0)
|
||||
h2 = humansize(total)
|
||||
srv_info.append("{} free of {}".format(h1, h2))
|
||||
if(total > 0):
|
||||
space_used_percent = (total - (free or 0)) / total * 100
|
||||
elif zs:
|
||||
self.log("diskfree(%r): %s" % (abspath, zs), 3)
|
||||
|
||||
|
|
@ -7063,6 +7068,9 @@ class HttpCli(object):
|
|||
"files": [],
|
||||
"taglist": [],
|
||||
"srvinf": srv_infot,
|
||||
"space_used_percent": space_used_percent,
|
||||
"space_free": h1,
|
||||
"space_total": h2,
|
||||
"acct": self.uname,
|
||||
"perms": perms,
|
||||
"cfg": vn.js_ls,
|
||||
|
|
@ -7086,6 +7094,11 @@ class HttpCli(object):
|
|||
"url_suf": url_suf,
|
||||
"title": html_escape("%s %s" % (self.args.bname, self.vpath), crlf=True),
|
||||
"srv_info": srv_infot,
|
||||
"srv_name": "" if self.args.nih else self.args.name,
|
||||
"srv_url": self.args.name_url if self.args.name_url else "/",
|
||||
"space_used_percent": space_used_percent,
|
||||
"space_free": h1,
|
||||
"space_total": h2,
|
||||
"dtheme": self.args.theme,
|
||||
}
|
||||
|
||||
|
|
@ -7231,12 +7244,12 @@ class HttpCli(object):
|
|||
margin = "DIR"
|
||||
elif add_dk:
|
||||
zs = absreal(fspath)
|
||||
margin = '<a href="%s?k=%s&zip=crc" rel="nofollow">zip</a>' % (
|
||||
margin = '<a href="%s?k=%s&zip=crc" rel="nofollow" class="dir">zip</a>' % (
|
||||
quotep(href),
|
||||
self.gen_fk(2, self.args.dk_salt, zs, 0, 0)[:add_dk],
|
||||
)
|
||||
else:
|
||||
margin = '<a href="%s?zip=crc" rel="nofollow">zip</a>' % (
|
||||
margin = '<a href="%s?zip=crc" rel="nofollow" class="dir">zip</a>' % (
|
||||
quotep(href),
|
||||
)
|
||||
elif fn in hist:
|
||||
|
|
@ -7260,7 +7273,7 @@ class HttpCli(object):
|
|||
)
|
||||
|
||||
if is_dir:
|
||||
ext = "---"
|
||||
ext = ""
|
||||
elif "." in fn:
|
||||
ext = ptn_hr.sub("@", fn.rsplit(".", 1)[1])
|
||||
if len(ext) > 16:
|
||||
|
|
|
|||
|
|
@ -11,31 +11,32 @@ from .th_srv import HAVE_PIL, HAVE_PILF
|
|||
from .util import BytesIO, html_escape # type: ignore
|
||||
|
||||
|
||||
RE_CSS_COLOR = re.compile(r"[^a-zA-Z0-9#()%.,/-]")
|
||||
|
||||
|
||||
class Ico(object):
|
||||
def __init__(self, args: argparse.Namespace) -> None:
|
||||
self.args = args
|
||||
|
||||
def get(self, ext: str, as_thumb: bool, chrome: bool) -> tuple[str, bytes]:
|
||||
def get(self, ext: str, as_thumb: bool, png: bool, accent: str) -> tuple[str, bytes]:
|
||||
"""placeholder to make thumbnails not break"""
|
||||
|
||||
bext = ext.encode("ascii", "replace")
|
||||
ext = bext.decode("utf-8")
|
||||
zb = hashlib.sha1(bext).digest()[2:4]
|
||||
if PY2:
|
||||
zb = [ord(x) for x in zb] # type: ignore
|
||||
|
||||
c1 = colorsys.hsv_to_rgb(zb[0] / 256.0, 1, 0.3)
|
||||
c2 = colorsys.hsv_to_rgb(zb[0] / 256.0, 0.8 if HAVE_PILF else 1, 1)
|
||||
ci = [int(x * 255) for x in list(c1) + list(c2)]
|
||||
c = "".join(["%02x" % (x,) for x in ci])
|
||||
|
||||
|
||||
w = 100
|
||||
h = 30
|
||||
if as_thumb:
|
||||
sw, sh = self.args.th_size.split("x")
|
||||
h = int(100.0 / (float(sw) / float(sh)))
|
||||
|
||||
if chrome:
|
||||
if accent:
|
||||
accent = RE_CSS_COLOR.sub("", accent)
|
||||
|
||||
# obsolete. 2000+ svgs slows chrome down massively, but no crash.
|
||||
# further, unique svgs are only used for non-standard thumbnails,
|
||||
# so it's unrealistic to see that many in use
|
||||
if png & 0:
|
||||
# cannot handle more than ~2000 unique SVGs
|
||||
if HAVE_PILF:
|
||||
# pillow 10.1 made this the default font;
|
||||
|
|
@ -48,11 +49,11 @@ class Ico(object):
|
|||
|
||||
h = int(128.0 * h / w)
|
||||
w = 128
|
||||
img = Image.new("RGB", (w, h), "#" + c[:6])
|
||||
img = Image.new("RGBA", (w, h), "#00000000")
|
||||
pb = ImageDraw.Draw(img)
|
||||
_, _, tw, th = pb.textbbox((0, 0), ext2, font_size=16)
|
||||
xy = (int((w - tw) / 2), int((h - th) / 2))
|
||||
pb.text(xy, ext2, fill="#" + c[6:], font_size=16)
|
||||
pb.text(xy, ext2, fill=accent, font_size=16)
|
||||
|
||||
img = img.resize((w * 2, h * 2), Image.NEAREST)
|
||||
|
||||
|
|
@ -69,7 +70,7 @@ class Ico(object):
|
|||
|
||||
h = int(64.0 * h / w)
|
||||
w = 64
|
||||
img = Image.new("RGB", (w, h), "#" + c[:6])
|
||||
img = Image.new("RGBA", (w, h), "#00000000")
|
||||
pb = ImageDraw.Draw(img)
|
||||
try:
|
||||
_, _, tw, th = pb.textbbox((0, 0), ext)
|
||||
|
|
@ -79,7 +80,7 @@ class Ico(object):
|
|||
tw += len(ext)
|
||||
cw = tw // len(ext)
|
||||
x = ((w - tw) // 2) - (cw * 2) // 3
|
||||
fill = "#" + c[6:]
|
||||
fill = accent
|
||||
for ch in ext:
|
||||
pb.text((x, (h - th) // 2), " %s " % (ch,), fill=fill)
|
||||
x += cw
|
||||
|
|
@ -93,9 +94,9 @@ class Ico(object):
|
|||
svg = """\
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg version="1.1" viewBox="0 0 100 {}" xmlns="http://www.w3.org/2000/svg"><g>
|
||||
<rect width="100%" height="100%" fill="#{}" />
|
||||
<rect width="100%" height="100%" fill="#0000" />
|
||||
<text x="50%" y="{}" dominant-baseline="middle" text-anchor="middle" xml:space="preserve"
|
||||
fill="#{}" font-family="monospace" font-size="14px" style="letter-spacing:.5px">{}</text>
|
||||
fill="{}" font-family="monospace" font-size="14px" style="letter-spacing:.5px">{}</text>
|
||||
</g></svg>
|
||||
"""
|
||||
|
||||
|
|
@ -109,6 +110,6 @@ class Ico(object):
|
|||
else:
|
||||
y = "50%"
|
||||
|
||||
svg = svg.format(h, c[:6], y, c[6:], txt)
|
||||
svg = svg.format(h, y, accent or '#000', txt)
|
||||
|
||||
return "image/svg+xml", svg.encode("utf-8")
|
||||
|
|
|
|||
|
|
@ -457,7 +457,10 @@ if ANYWIN:
|
|||
IMPLICATIONS.extend([["z", "zm4"]])
|
||||
|
||||
|
||||
UNPLICATIONS = [["no_dav", "daw"]]
|
||||
UNPLICATIONS = [
|
||||
["no_dav", "daw"],
|
||||
["no_gsel", "gsel"],
|
||||
]
|
||||
|
||||
|
||||
DAV_ALLPROP_L = [
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ window.baguetteBox = (function () {
|
|||
onChange: null,
|
||||
readDirRtl: false,
|
||||
},
|
||||
overlay, slider, btnPrev, btnNext, btnHelp, btnAnim, btnRotL, btnRotR, btnSel, btnFull, btnZoom, btnVmode, btnReadDir, btnClose,
|
||||
overlay, slider, btnPrev, btnNext, btnHelp, btnAnim, btnRotL, btnRotR, btnSel, btnFull, btnZoom, btnPixelated, btnVmode, btnReadDir, btnClose,
|
||||
currentGallery = [],
|
||||
currentIndex = 0,
|
||||
isOverlayVisible = false,
|
||||
|
|
@ -37,8 +37,8 @@ window.baguetteBox = (function () {
|
|||
scrollCSS = ['', ''],
|
||||
scrollTimer = 0,
|
||||
re_i = APPLE ?
|
||||
/^[^?]+\.(a?png|avif|bmp|gif|hei[cf]s?|jfif|jpe?g|jxl|svg|tiff?|webp)(\?|$)/i :
|
||||
/^[^?]+\.(a?png|avif|bmp|gif|jfif|jpe?g|jxl|svg|tiff?|webp)(\?|$)/i,
|
||||
/^[^?]+\.(a?png|avif|bmp|gif|hei[cf]s?|jfif|jpe?g|jxl|svg|ico|tiff?|webp)(\?|$)/i :
|
||||
/^[^?]+\.(a?png|avif|bmp|gif|jfif|jpe?g|jxl|svg|ico|tiff?|webp)(\?|$)/i,
|
||||
re_v = /^[^?]+\.(webm|mkv|mp4|m4v|mov)(\?|$)/i,
|
||||
re_cbz = /^[^?]+\.(cbz)(\?|$)/i,
|
||||
anims = ['slideIn', 'fadeIn', 'none'],
|
||||
|
|
@ -303,21 +303,22 @@ window.baguetteBox = (function () {
|
|||
if (!overlay) {
|
||||
var ctr = mknod('div');
|
||||
ctr.innerHTML = (
|
||||
'<div id="bbox-overlay" role="dialog">' +
|
||||
'<div id="bbox-overlay" class="normalrcm" role="dialog">' +
|
||||
'<div id="bbox-slider"></div>' +
|
||||
'<button id="bbox-prev" class="bbox-btn" type="button" aria-label="Previous"><</button>' +
|
||||
'<button id="bbox-next" class="bbox-btn" type="button" aria-label="Next">></button>' +
|
||||
'<div id="bbox-prev"><a class="btn" aria-label="Previous">◀</a></div>' +
|
||||
'<div id="bbox-next"><a class="btn" aria-label="Next">▶</a></div>' +
|
||||
'<div id="bbox-btns">' +
|
||||
'<button id="bbox-help" type="button">?</button>' +
|
||||
'<button id="bbox-anim" type="button" tt="a">-</button>' +
|
||||
'<button id="bbox-readdir" type="button" tt="a">ltr</button>' +
|
||||
'<button id="bbox-rotl" type="button">↶</button>' +
|
||||
'<button id="bbox-rotr" type="button">↷</button>' +
|
||||
'<button id="bbox-tsel" type="button">sel</button>' +
|
||||
'<button id="bbox-full" type="button" tt="full-screen">⛶</button>' +
|
||||
'<button id="bbzoom" type="button" tt="zoom/stretch">z</button>' +
|
||||
'<button id="bbox-vmode" type="button" tt="a"></button>' +
|
||||
'<button id="bbox-close" type="button" aria-label="Close">X</button>' +
|
||||
'<a id="bbox-close" class="btn" aria-label="Close"><span class="x">×</span></a>' +
|
||||
'<a id="bbox-vmode" class="btn" tt="a"></a>' +
|
||||
'<a id="bbox-full" class="btn" tt="full-screen">⛶</a>' +
|
||||
'<a id="bbzoom" class="tgl btn" tt="zoom/stretch smaller images to fill screen">↕</a>' +
|
||||
'<a id="bbpixelated" class="tgl btn" tt="pixelated rendering (good for pixel art)">👾</a>' +
|
||||
'<a id="bbox-tsel" class="tgl btn">☑️sel</a>' +
|
||||
'<a id="bbox-rotr" class="btn">↷</a>' +
|
||||
'<a id="bbox-rotl" class="btn">↶</a>' +
|
||||
'<a id="bbox-readdir" class="btn" tt="a">ltr</a>' +
|
||||
'<a id="bbox-anim" class="btn" tt="a">-</a>' +
|
||||
'<a id="bbox-help" class="btn">?</a>' +
|
||||
'</div></div>'
|
||||
);
|
||||
overlay = ctr.firstChild;
|
||||
|
|
@ -335,11 +336,14 @@ window.baguetteBox = (function () {
|
|||
btnSel = ebi('bbox-tsel');
|
||||
btnFull = ebi('bbox-full');
|
||||
btnZoom = ebi('bbzoom');
|
||||
btnPixelated = ebi('bbpixelated');
|
||||
btnVmode = ebi('bbox-vmode');
|
||||
btnClose = ebi('bbox-close');
|
||||
|
||||
bcfg_bind(options, 'bbzoom', 'bbzoom', false, setzoom);
|
||||
setzoom();
|
||||
bcfg_bind(options, 'bbpixelated', 'bbpixelated', false, setpixelated);
|
||||
setpixelated();
|
||||
}
|
||||
|
||||
function halp() {
|
||||
|
|
@ -356,6 +360,7 @@ window.baguetteBox = (function () {
|
|||
['R', 'rotate (shift=ccw)'],
|
||||
['F', 'toggle fullscreen'],
|
||||
['Z', 'toggle zoom/stretch'],
|
||||
['X', 'toggle pixelated rendering'],
|
||||
['S', 'toggle file selection'],
|
||||
['space, P, K', 'video: play / pause'],
|
||||
['U', 'video: seek 10sec back'],
|
||||
|
|
@ -440,6 +445,8 @@ window.baguetteBox = (function () {
|
|||
tglfull();
|
||||
else if (kl == "z")
|
||||
btnZoom.click();
|
||||
else if (kl == "x")
|
||||
btnPixelated.click();
|
||||
else if (kl == "s")
|
||||
tglsel();
|
||||
else if (kl == "r")
|
||||
|
|
@ -553,6 +560,12 @@ window.baguetteBox = (function () {
|
|||
btnState(btnZoom, sel);
|
||||
}
|
||||
|
||||
function setpixelated() {
|
||||
var sel = clgot(btnPixelated, 'on')
|
||||
clmod(ebi('bbox-overlay'), 'pixelated', sel);
|
||||
btnState(btnPixelated, sel);
|
||||
}
|
||||
|
||||
function tglsel() {
|
||||
var o = findfile()[3];
|
||||
clmod(o.closest('tr'), 'sel', 't');
|
||||
|
|
@ -576,18 +589,14 @@ window.baguetteBox = (function () {
|
|||
if (vsplit(files[a].vp)[1] == name)
|
||||
sel = true;
|
||||
|
||||
ebi('bbox-overlay').style.background = sel ?
|
||||
'rgba(153,34,85,0.7)' : '';
|
||||
clmod(ebi('bbox-overlay'), 'sel', sel);
|
||||
|
||||
img.style.borderRadius = sel ? '1em' : '';
|
||||
btnState(btnSel, sel);
|
||||
}
|
||||
|
||||
function btnState(btn, sel) {
|
||||
btn.style.color = sel ? '#fff' : '';
|
||||
btn.style.background = sel ? '#d48' : '';
|
||||
btn.style.textShadow = sel ? '1px 1px 0 #b38' : '';
|
||||
btn.style.boxShadow = sel ? '.15em .15em 0 #502' : '';
|
||||
clmod(btn, 'on', sel);
|
||||
}
|
||||
|
||||
function keyUpHandler(e) {
|
||||
|
|
@ -729,10 +738,12 @@ window.baguetteBox = (function () {
|
|||
if (options.buttons === 'auto' && ('ontouchstart' in window || currentGallery.length === 1))
|
||||
options.buttons = false;
|
||||
|
||||
btnPrev.style.display = btnNext.style.display = (options.buttons ? '' : 'none');
|
||||
QS('#bbox-next .btn').style.display = QS('#bbox-prev .btn').style.display = (options.buttons ? '' : 'none');
|
||||
}
|
||||
|
||||
function showOverlay(chosenImageIndex) {
|
||||
clmod(ebi('wrap'), 'waiting', true);
|
||||
|
||||
if (options.noScrollbars) {
|
||||
var a = document.documentElement.style.overflowY,
|
||||
b = document.body.style.overflowY;
|
||||
|
|
@ -756,6 +767,7 @@ window.baguetteBox = (function () {
|
|||
loadImage(currentIndex, function () {
|
||||
preloadNext(currentIndex);
|
||||
preloadPrev(currentIndex);
|
||||
clmod(ebi('wrap'), 'waiting', false);
|
||||
});
|
||||
|
||||
show_buttons(0);
|
||||
|
|
@ -784,7 +796,6 @@ window.baguetteBox = (function () {
|
|||
function hideOverlay(e, dtor) {
|
||||
ev(e);
|
||||
playvid(false);
|
||||
removeFromCache('#files');
|
||||
if (options.noScrollbars) {
|
||||
document.documentElement.style.overflowY = scrollCSS[0];
|
||||
document.body.style.overflowY = scrollCSS[1];
|
||||
|
|
@ -1233,9 +1244,7 @@ window.baguetteBox = (function () {
|
|||
}
|
||||
|
||||
function show_buttons(v) {
|
||||
clmod(ebi('bbox-btns'), 'off', v);
|
||||
clmod(btnPrev, 'off', v);
|
||||
clmod(btnNext, 'off', v);
|
||||
clmod(ebi('bbox-overlay'), 'immersive', v);
|
||||
}
|
||||
|
||||
function bounceAnimation(direction) {
|
||||
|
|
@ -1297,11 +1306,11 @@ window.baguetteBox = (function () {
|
|||
x = e.clientX - rc.left,
|
||||
fx = x / (rc.right - rc.left);
|
||||
|
||||
if (fx < 0.3)
|
||||
return showLeftImage();
|
||||
// if (fx < 0.3)
|
||||
// return showLeftImage();
|
||||
|
||||
if (fx > 0.7)
|
||||
return showRightImage();
|
||||
// if (fx > 0.7)
|
||||
// return showRightImage();
|
||||
|
||||
show_buttons('t');
|
||||
|
||||
|
|
@ -1367,4 +1376,18 @@ window.baguetteBox = (function () {
|
|||
};
|
||||
})();
|
||||
|
||||
|
||||
function init(){
|
||||
if(msel != undefined && msel.bbox != true){
|
||||
console.log('bbox load')
|
||||
msel.bagit();
|
||||
}
|
||||
else{
|
||||
setTimeout(init, 100)
|
||||
}
|
||||
}
|
||||
|
||||
console.log('wait for file list init');
|
||||
init();
|
||||
|
||||
J_BBX = 2;
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -7,6 +7,7 @@
|
|||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.8, minimum-scale=0.6">
|
||||
<meta name="theme-color" content="#{{ tcolor }}">
|
||||
<link rel="manifest" href="{{ r }}/.cpr/w/manifest.json?_={{ ts }}" />
|
||||
<link rel="stylesheet" media="screen" href="{{ r }}/.cpr/w/ui.css?_={{ ts }}">
|
||||
<link rel="stylesheet" media="screen" href="{{ r }}/.cpr/w/browser.css?_={{ ts }}">
|
||||
{{ html_head }}
|
||||
|
|
@ -16,121 +17,276 @@
|
|||
</head>
|
||||
|
||||
<body>
|
||||
<div id="ops"></div>
|
||||
<a href="#" id="treeToggleBtn" class="tgl btn normalrcm"></a>
|
||||
|
||||
<div id="op_search" class="opview">
|
||||
{%- if have_tags_idx %}
|
||||
<div id="srch_form" class="tags opbox"></div>
|
||||
{%- else %}
|
||||
<div id="srch_form" class="opbox"></div>
|
||||
{%- endif %}
|
||||
<div id="srch_q"></div>
|
||||
<div id="tree" class="sbar">
|
||||
<div id="treesuperh">
|
||||
<a href="{{ srv_url }}" id="srv_name"><span id="favico_onpage"></span>{{ srv_name }}</a>
|
||||
<div id="treeh"></div>
|
||||
</div>
|
||||
<ul class="ntree" id="treepar"></ul>
|
||||
<ul id="docul"></ul>
|
||||
<ul class="ntree" id="treeul"></ul>
|
||||
<div id="thx_ff"> </div>
|
||||
|
||||
<div id="tree_footer">
|
||||
<div id="rtt_latency"></div>
|
||||
|
||||
<div id="spaceFree">{{ space_free }} free of {{ space_total }}</div>
|
||||
|
||||
<div id="spaceTotal_bar">
|
||||
<div id="spaceUsed_bar" style="width: {{ space_used_percent }}%;"></div>
|
||||
<div id="spaceMax"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="op_player" class="opview opbox opwide"></div>
|
||||
<div id="reszbar"></div>
|
||||
|
||||
<div id="wrap">
|
||||
|
||||
<div id="op_bup" class="opview opbox {% if not ls0 %}act{% endif %}">
|
||||
<div id="u2err"></div>
|
||||
<form method="post" enctype="multipart/form-data" accept-charset="utf-8" action="{{ url_suf }}">
|
||||
<input type="hidden" name="act" value="bput" />
|
||||
<input type="file" name="f" multiple /><br />
|
||||
<input type="submit" value="start upload">
|
||||
</form>
|
||||
<a id="bbsw" href="?b=u" rel="nofollow"><br />switch to basic browser</a>
|
||||
</div>
|
||||
|
||||
<div id="op_mkdir" class="opview opbox {% if not ls0 %}act{% endif %}">
|
||||
<form method="post" enctype="multipart/form-data" accept-charset="utf-8" action="{{ url_suf }}">
|
||||
<input type="hidden" name="act" value="mkdir" />
|
||||
📂<input type="text" name="name" class="i" placeholder="awesome mix vol.1">
|
||||
<input type="submit" value="make directory">
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div id="op_new_md" class="opview opbox">
|
||||
<form method="post" enctype="multipart/form-data" accept-charset="utf-8" action="{{ url_suf }}">
|
||||
<input type="hidden" name="act" value="new_md" />
|
||||
📝<input type="text" name="name" class="i" placeholder="weekend-plans">
|
||||
<input type="submit" value="new file">
|
||||
</form>
|
||||
<span id="new_mdi"></span>
|
||||
</div>
|
||||
|
||||
<div id="op_msg" class="opview opbox {% if not ls0 %}act{% endif %}">
|
||||
<form method="post" enctype="application/x-www-form-urlencoded" accept-charset="utf-8" action="{{ url_suf }}">
|
||||
📟<input type="text" name="msg" class="i" placeholder="lorem ipsum dolor sit amet">
|
||||
<input type="submit" value="send msg to srv log">
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div id="op_unpost" class="opview opbox"></div>
|
||||
|
||||
<div id="op_up2k" class="opview"></div>
|
||||
|
||||
<div id="op_cfg" class="opview opbox opwide"></div>
|
||||
|
||||
<h1 id="path">
|
||||
<a href="#" id="entree">🌲</a>
|
||||
{%- for n in vpnodes %}
|
||||
<a href="{{ r }}/{{ n[0] }}">{{ n[1] }}</a>
|
||||
{%- endfor %}
|
||||
</h1>
|
||||
|
||||
<div id="tree"></div>
|
||||
|
||||
<div id="wrap">
|
||||
|
||||
{%- if doc %}
|
||||
<div id="bdoc"><pre>{{ doc|e }}</pre></div>
|
||||
{%- else %}
|
||||
<div id="bdoc"></div>
|
||||
{%- endif %}
|
||||
|
||||
<div id="pro" class="logue">{{ "" if sb_lg else logues[0] }}</div>
|
||||
|
||||
<table id="files">
|
||||
<thead>
|
||||
<tr>
|
||||
<th name="lead"><span>c</span></th>
|
||||
<th name="href"><span>File Name</span></th>
|
||||
<th name="sz" sort="int"><span>Size</span></th>
|
||||
{%- for k in taglist %}
|
||||
{%- if k.startswith('.') %}
|
||||
<th name="tags/{{ k }}" sort="int"><span>{{ k[1:] }}</span></th>
|
||||
{%- else %}
|
||||
<th name="tags/{{ k }}"><span>{{ k[0]|upper }}{{ k[1:] }}</span></th>
|
||||
{%- endif %}
|
||||
<div id="pathBar" class="normalrcm">
|
||||
<h2 id="wfp" class="shifted">
|
||||
<a href="#" id="gop" class="btn"></a>
|
||||
<a href="#" id="gon" class="btn"></a>
|
||||
<a href="#" id="gou" class="btn"></a>
|
||||
</h2>
|
||||
<h1 id="path">
|
||||
{%- for n in vpnodes %}
|
||||
<a href="{{ r }}/{{ n[0] }}">{{ n[1] }}</a>
|
||||
{%- endfor %}
|
||||
<th name="ext"><span>T</span></th>
|
||||
<th name="ts"><span>Date</span></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
</h1>
|
||||
|
||||
{%- for f in files %}
|
||||
<tr><td>{{ f.lead }}</td><td><a href="{{ f.href }}">{{ f.name|e }}</a></td><td>{{ f.sz }}</td>
|
||||
{%- if f.tags is defined %}
|
||||
{%- for k in taglist %}<td>{{ f.tags[k]|e }}</td>{%- endfor %}
|
||||
{%- endif %}<td>{{ f.ext }}</td><td>{{ f.dt }}</td></tr>
|
||||
{%- endfor %}
|
||||
<div id="actionsArea">
|
||||
<div id="ops">
|
||||
<a href="#" class="disabled" id="opa_srch" data-perm="read" data-dep="idx" data-dest="search">🔎</a>
|
||||
<a href="#" class="disabled" id="opa_del" data-perm="write" data-dest="unpost">🧯</a>
|
||||
<a href="#" class="disabled" id="opa_up" data-dest="up2k">🚀</a>
|
||||
<a href="#" class="disabled" id="opa_bup" data-perm="write" data-dest="bup">🎈</a>
|
||||
<a href="#" class="disabled" id="opa_mkd" data-perm="write" data-dest="mkdir"><p class="overlay_plus">+</p>📂</a>
|
||||
<a href="#" class="disabled" id="opa_msg" data-dest="msg">📟</a>
|
||||
<a href="#" class="disabled" id="opa_cfg" data-dest="cfg">⚙️</a>
|
||||
<a href="#" id="opa_acc" data-dest="acc">
|
||||
<label for="acc_cbopen" id="acc_pfp" class="pfp">👤</label>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
<input type="checkbox" id="acc_cbopen" style="display: none;" />
|
||||
<span id="op_acc" class="opview popup under">
|
||||
<a id="acc_button" class="tgl btn on" href="{{ r }}/?h">
|
||||
<p id="acc_name">Login</p>
|
||||
</a>
|
||||
<div id="accessType" style="display: block;">{{ srv_info }}</div>
|
||||
<a href="{{ r }}/?h" id="goh" style="display: block;">control-panel</a>
|
||||
<form id="flogout" style="display: block;" method="post" enctype="multipart/form-data">
|
||||
<input type="hidden" name="act" value="logout" />
|
||||
<input id="blogout" type="submit" />
|
||||
</form>
|
||||
</span>
|
||||
<div id="opdesc"></div>
|
||||
|
||||
<div id="epi" class="logue">{{ "" if sb_lg else logues[1] }}</div>
|
||||
<div id="srchfolder_div">
|
||||
<input id="folder_search" type="text" />
|
||||
<span id="srch_quickopts" class="popup under">
|
||||
<input type="checkbox" id="srch_recursivec" checked="true">
|
||||
<label for="srch_recursivec" id="srch_recursivelbl" tabindex="0"></label>
|
||||
</span>
|
||||
<div id="qs_btns">
|
||||
<a id="moresearch"><span>▼</span></a>
|
||||
<a id="closesearch"><span class="x">×</span></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h2 id="wfp"><a href="{{ r }}/?h" id="goh">control-panel</a></h2>
|
||||
|
||||
<a href="#" id="repl">π</a>
|
||||
<div id="op_search" class="opview">
|
||||
{%- if have_tags_idx %}
|
||||
<div id="srch_form" class="tags opbox"></div>
|
||||
{%- else %}
|
||||
<div id="srch_form" class="opbox"></div>
|
||||
{%- endif %}
|
||||
<div id="srch_q"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div id="op_player" class="opview opbox opwide"></div>
|
||||
|
||||
<div id="srv_info"><span>{{ srv_info }}</span></div>
|
||||
<div id="op_bup" class="opview opbox {% if not ls0 %}act{% endif %}">
|
||||
<form method="post" enctype="multipart/form-data" accept-charset="utf-8" action="{{ url_suf }}">
|
||||
<input type="hidden" name="act" value="bput" />
|
||||
<input id="bup_btn" type="file" name="f" multiple /><br />
|
||||
<input type="submit" value="start upload">
|
||||
</form>
|
||||
<a id="bbsw" href="?b=u" rel="nofollow"><br />switch to basic browser</a>
|
||||
</div>
|
||||
|
||||
<div id="op_mkdir" class="opview opbox {% if not ls0 %}act{% endif %}">
|
||||
<form method="post" enctype="multipart/form-data" accept-charset="utf-8" action="{{ url_suf }}">
|
||||
<input type="hidden" name="act" value="mkdir" />
|
||||
📂<input type="text" name="name" class="i" placeholder="awesome mix vol.1">
|
||||
<input type="submit" value="make directory">
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div id="op_new_md" class="opview opbox">
|
||||
<form method="post" enctype="multipart/form-data" accept-charset="utf-8" action="{{ url_suf }}">
|
||||
<input type="hidden" name="act" value="new_md" />
|
||||
📝<input type="text" name="name" class="i" placeholder="weekend-plans">
|
||||
<input type="submit" value="new file">
|
||||
</form>
|
||||
<span id="new_mdi"></span>
|
||||
</div>
|
||||
|
||||
<div id="op_msg" class="opview opbox {% if not ls0 %}act{% endif %}">
|
||||
<form method="post" enctype="application/x-www-form-urlencoded" accept-charset="utf-8" action="{{ url_suf }}">
|
||||
📟<input type="text" name="msg" class="i" placeholder="lorem ipsum dolor sit amet">
|
||||
<input type="submit" value="send msg to srv log">
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div id="op_unpost" class="opview opbox"></div>
|
||||
|
||||
<div id="op_cfg" class="opview opbox opwide"></div>
|
||||
|
||||
|
||||
{%- if doc %}
|
||||
<div id="bdoc"><pre>{{ doc|e }}</pre></div>
|
||||
{%- else %}
|
||||
<div id="bdoc"></div>
|
||||
{%- endif %}
|
||||
|
||||
<div id="pro" class="logue">{{ "" if sb_lg else logues[0] }}</div>
|
||||
|
||||
<div id="cfg" class="modal">
|
||||
<a id="s_outside" class="closepane"></a>
|
||||
<div id="s_content" class="modalcontent">
|
||||
<a id="h_cfg" class="modalheader" href="#h_cfg"></a>
|
||||
<div id="s_hor" class="modalsplit">
|
||||
<div id="s_nav" class="splitsub"></div>
|
||||
<div class="divider"></div>
|
||||
<div id="s_list" class="opview splitsub"></div>
|
||||
</div>
|
||||
<a id="reloc_cfg" class="btn winbtn"><span>▼</span></a>
|
||||
<a id="cl_cfg" class="close btn"><span class="x">×</span></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="up2k" class="modal">
|
||||
<a id="up_outside" class="closepane"></a>
|
||||
<div id="up_content" class="modalcontent">
|
||||
<a id="h_up2k" class="modalheader" href="#h_up2k">🚀 Upload</a>
|
||||
<div id="up_hor" class="modalsplit">
|
||||
<div id="op_up2k" class="opview splitsub"></div>
|
||||
<div class="divider"></div>
|
||||
<div id="up_info" class="splitsub"></div>
|
||||
</div>
|
||||
<a id="reloc_up" class="btn winbtn"><span>▼</span></a>
|
||||
<a id="cl_up" class="close btn"><span class="x">×</span></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="music" class="modal">
|
||||
<div id="mu_outer">
|
||||
<div id="mu_inner">
|
||||
<a id="h_music" class="modalheader" href="#">💿 Music Player</a>
|
||||
|
||||
<a id="mu_th">
|
||||
<svg class="thumb" width="100%" height="100%" version="1.1">
|
||||
<use href="#file-icon"/>
|
||||
</svg>
|
||||
<span class="th_ext"></span>
|
||||
<img onload="th_onload(this)"/>
|
||||
</a>
|
||||
<span id="mu_tn"></span>
|
||||
<span id="mu_deets"></span>
|
||||
<div id="mu_pbb"></div>
|
||||
<div id="mu_pbc" class="pctl"></div>
|
||||
<div id="mu_toggles"></div>
|
||||
<div id="mu_vol"></div>
|
||||
|
||||
<a id="cfg_mu" class="btn winbtn" href="#h_mp">⚙️</a>
|
||||
<a id="cl_mu" class="close btn"><span class="x">×</span></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- define symbol in hidden svg document -->
|
||||
<svg style="display: none" version="1.1">
|
||||
<defs>
|
||||
<symbol id="folder-icon" viewBox="0 0 24 24">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M3 7C3 5.89543 3.89543 5 5 5L8.67157 5C9.20201 5 9.71071 5.21071 10.0858 5.58579L10.9142 6.41421C11.2893 6.78929 11.798 7 12.3284 7H19C20.1046 7 21 7.89543 21 9V17C21 18.1046 20.1046 19 19 19H5C3.89543 19 3 18.1046 3 17V7Z"
|
||||
style="fill:#07c; fill:var(--a);" />
|
||||
</symbol>
|
||||
<symbol id="file-icon" viewBox="0 0 48 48">
|
||||
<path fill="currentColor"
|
||||
opacity=".7"
|
||||
d="m 28.22643,4.6905246 0.0063,9.1096644 a 1.6331061,1.6331061 43.698111 0 0 1.649296,1.632007 l 9.339558,-0.09259 z" />
|
||||
<path class="a"
|
||||
d="M39.5,15.5h-9a2,2,0,0,1-2-2v-9h-18a2,2,0,0,0-2,2v35a2,2,0,0,0,2,2h27a2,2,0,0,0,2-2Z"
|
||||
id="path1"
|
||||
style="stroke:#07c; stroke:var(--a);"
|
||||
stroke-width="1" fill="none" stroke-linecap="round" stroke-linejoin="round" />
|
||||
<line class="a"
|
||||
x1="28.5"
|
||||
y1="4.5"
|
||||
x2="39.5"
|
||||
y2="15.5"
|
||||
style="stroke:#07c; stroke:var(--a);"
|
||||
stroke-width="1" fill="none" stroke-linecap="round" stroke-linejoin="round" />
|
||||
</symbol>
|
||||
</defs>
|
||||
</svg>
|
||||
|
||||
<div id="wtc" class="ghead"></div>
|
||||
<table id="files">
|
||||
<thead>
|
||||
<tr>
|
||||
<th name="lead"><span>!</span></th>
|
||||
<th name="href"><span>File Name</span></th>
|
||||
<th name="sz" sort="int"><span>Size</span></th>
|
||||
{%- for k in taglist %}
|
||||
{%- if k.startswith('.') %}
|
||||
<th name="tags/{{ k }}" sort="int"><span>{{ k[1:] }}</span></th>
|
||||
{%- else %}
|
||||
<th name="tags/{{ k }}"><span>{{ k[0]|upper }}{{ k[1:] }}</span></th>
|
||||
{%- endif %}
|
||||
{%- endfor %}
|
||||
<th name="ext"><span>Ext</span></th>
|
||||
<th name="ts"><span>Date</span></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
{%- for f in files %}
|
||||
<tr>
|
||||
<td>{{ f.lead }}</td>
|
||||
<td><a href="{{ f.href }}" class="flink">{{ f.name|e }}</a></td>
|
||||
<td>{{ f.sz }}</td>
|
||||
{%- if f.tags is defined %}
|
||||
{%- for k in taglist %}
|
||||
<td>{{ f.tags[k]|e }}</td>{%- endfor %}
|
||||
{%- endif %}
|
||||
<td>{{ f.ext }}</td>
|
||||
<td>{{ f.dt }}</td>
|
||||
</tr>
|
||||
{%- endfor %}
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div id="epi" class="logue">{{ "" if sb_lg else logues[1] }}</div>
|
||||
|
||||
<a href="#" id="repl">π</a>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="srv_info" style="display: none;"><span>{{ srv_info }}</span></div>
|
||||
|
||||
<div id="widget"></div>
|
||||
|
||||
<div id="rcm" tabindex="0"></div>
|
||||
|
||||
|
||||
<script>
|
||||
var SR = "{{ r }}",
|
||||
CGV1 = {{ cgv1 }},
|
||||
|
|
@ -150,18 +306,18 @@
|
|||
{%- if lang != "eng" %}
|
||||
<script src="{{ r }}/.cpr/w/tl/{{ lang }}.js?_={{ ts }}"></script>
|
||||
{%- endif %}
|
||||
<script src="{{ r }}/.cpr/w/baguettebox.js?_={{ ts }}"></script>
|
||||
<script src="{{ r }}/.cpr/w/browser.js?_={{ ts }}"></script>
|
||||
<script src="{{ r }}/.cpr/w/up2k.js?_={{ ts }}"></script>
|
||||
<!-- <script src="{{ r }}/.cpr/w/baguettebox.js?_={{ ts }}"></script>
|
||||
<script src="{{ r }}/.cpr/w/up2k.js?_={{ ts }}"></script> -->
|
||||
{%- if js %}
|
||||
<script src="{{ js }}_={{ ts }}"></script>
|
||||
{%- endif %}
|
||||
<script>
|
||||
Date.now();function jsldp(a,b){2!=window[a]&&alert("FATAL ERROR: cannot load "+b+".js due to unreliable network or broken reverse-proxy; try CTRL-SHIFT-R")}
|
||||
jsldp("J_UTL","util");
|
||||
jsldp("J_BBX","baguettebox");
|
||||
jsldp("J_BRW","browser");
|
||||
jsldp("J_U2K","up2k");
|
||||
Date.now(); function jsldp(a, b) { 2 != window[a] && alert("FATAL ERROR: cannot load " + b + ".js due to unreliable network or broken reverse-proxy; try CTRL-SHIFT-R") }
|
||||
jsldp("J_UTL", "util");
|
||||
jsldp("J_BRW", "browser");
|
||||
// jsldp("J_BBX", "baguettebox");
|
||||
// jsldp("J_U2K", "up2k");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
BIN
copyparty/web/copyparty.png
Normal file
BIN
copyparty/web/copyparty.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.5 KiB |
1
copyparty/web/copyparty.svg
Normal file
1
copyparty/web/copyparty.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="256mm" height="256mm" viewBox="0 0 256 256"><defs><linearGradient id="a" x1="4.859" x2="4.859" y1="14.819" y2="212.404" gradientTransform="matrix(1.21265 0 0 .57836 2.307 33.663)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#fc5" style="stop-color:#ffd34d;stop-opacity:1"/><stop offset=".2" stop-color="#fc0" style="stop-color:#ffc500;stop-opacity:1"/><stop offset="1" stop-color="#f80"/></linearGradient></defs><rect width="251.387" height="183.488" x="2.307" y="28.025" fill="#333" rx="11.784" ry="11.482" style="stroke:#acacac;stroke-width:3.39476;stroke-dasharray:none;stroke-opacity:1"/><rect width="239.603" height="114.276" x="8.199" y="42.233" fill="url(#a)" rx="7.856" ry="7.772" style="fill:url(#a);stroke-width:.837468"/><rect width="153.189" height="51.063" x="51.406" y="81.923" fill="#333" rx="25.531" ry="25.531" style="stroke-width:.981978"/><circle cx="76.937" cy="107.454" r="15.712" fill="#ccc" style="fill:#acacac;fill-opacity:1;stroke-width:.981978"/><circle cx="179.063" cy="107.454" r="15.712" fill="#ccc" style="fill:#acacac;fill-opacity:1;stroke-width:.981978"/><path fill="#737373" d="m34.712 211.512 9.82-33.864c1.964-5.53 4.91-6.912 10.802-6.912h147.39c5.892 0 6.78 1.383 8.744 6.912l9.82 33.864z" style="fill:#acacac;fill-opacity:1;stroke-width:.823811"/></svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
|
|
@ -8,6 +8,7 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=0.8">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<meta name="theme-color" content="#{{ tcolor }}">
|
||||
<link rel="manifest" href="{{ r }}/.cpr/w/manifest.json?_={{ ts }}" />
|
||||
<link rel="stylesheet" media="screen" href="{{ r }}/.cpr/w/shares.css?_={{ ts }}">
|
||||
<link rel="stylesheet" media="screen" href="{{ r }}/.cpr/w/ui.css?_={{ ts }}">
|
||||
{{ html_head }}
|
||||
|
|
|
|||
33
copyparty/web/manifest.json
Normal file
33
copyparty/web/manifest.json
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
{
|
||||
"short_name": "copyparty",
|
||||
"name": "copyparty",
|
||||
"description": "the all in one file server",
|
||||
"icons": [
|
||||
{
|
||||
"src": "/.cpr/copyparty.svg",
|
||||
"sizes": "512x512",
|
||||
"type": "image/svg+xml"
|
||||
}
|
||||
],
|
||||
"start_url": "/?utm_medium=PWA&utm_source=launcher",
|
||||
"display": "minimal-ui",
|
||||
"orientation": "any",
|
||||
"theme_color": "#222",
|
||||
"background_color": "#222",
|
||||
"share_target": {
|
||||
"action": "/?utm_medium=PWA&utm_source=share-target&share-target",
|
||||
"method": "POST",
|
||||
"enctype": "multipart/form-data",
|
||||
"params": {
|
||||
"title": "share",
|
||||
"text": "upload",
|
||||
"url": "/",
|
||||
"files": [
|
||||
{
|
||||
"name": "files",
|
||||
"accept": ["*/*"]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -140,17 +140,18 @@ blink {
|
|||
margin-bottom: 6em;
|
||||
}
|
||||
#mn {
|
||||
padding: 1.3em 0 .7em 1em;
|
||||
padding: .8em 0 .2em 1em;
|
||||
border-bottom: 1px solid #ccc;
|
||||
background: #eee;
|
||||
z-index: 10;
|
||||
width: calc(100% - 1em);
|
||||
}
|
||||
#mn a {
|
||||
display: inline-block;
|
||||
color: #444;
|
||||
background: none;
|
||||
margin: 0 0 0 -.2em;
|
||||
padding: .3em 0 .3em .4em;
|
||||
padding: .5em .4em .5em 0;
|
||||
text-decoration: none;
|
||||
border: none;
|
||||
/* ie: */
|
||||
|
|
@ -320,7 +321,7 @@ blink {
|
|||
}
|
||||
html.z #toc,
|
||||
html.z #mw {
|
||||
scrollbar-color: #b80 #282828;
|
||||
scrollbar-color: rgba(203, 203, 203, 0.634) #282828;
|
||||
}
|
||||
html.z #toc::-webkit-scrollbar-track {
|
||||
background: #282828;
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.7">
|
||||
<meta name="theme-color" content="#{{ tcolor }}">
|
||||
<link rel="manifest" href="{{ r }}/.cpr/w/manifest.json?_={{ ts }}" />
|
||||
<link rel="stylesheet" href="{{ r }}/.cpr/w/ui.css?_={{ ts }}">
|
||||
<link rel="stylesheet" href="{{ r }}/.cpr/w/md.css?_={{ ts }}">
|
||||
{%- if edit %}
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ var dbg = function () { };
|
|||
link += parts[a] + (a < aa ? '/' : '');
|
||||
o = mknod('a');
|
||||
o.setAttribute('href', link);
|
||||
o.textContent = uricom_dec(parts[a].split('?')[0]) || 'top';
|
||||
o.textContent = uricom_dec(parts[a].split('?')[0]) || '🏠';
|
||||
dom_nav.appendChild(o);
|
||||
}
|
||||
})();
|
||||
|
|
|
|||
|
|
@ -9,6 +9,9 @@ html .editor-toolbar.disabled-for-preview>button:not(.no-disable) { opacity: .35
|
|||
|
||||
|
||||
|
||||
:root {
|
||||
background: none;
|
||||
}
|
||||
html {
|
||||
line-height: 1.5em;
|
||||
}
|
||||
|
|
@ -39,12 +42,13 @@ html, body {
|
|||
|
||||
#mn {
|
||||
font-weight: normal;
|
||||
margin: 1.3em 0 .7em 1em;
|
||||
margin: .8em 0 .2em 1em;
|
||||
}
|
||||
#mn a {
|
||||
display: inline-block;
|
||||
color: #444;
|
||||
margin: 0 0 0 -.2em;
|
||||
padding: 0 0 0 .4em;
|
||||
padding: .5em .4em .5em 0;
|
||||
text-decoration: none;
|
||||
/* ie: */
|
||||
border-bottom: .1em solid #777\9;
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.7">
|
||||
<meta name="theme-color" content="#{{ tcolor }}">
|
||||
<link rel="manifest" href="{{ r }}/.cpr/w/manifest.json?_={{ ts }}" />
|
||||
<link rel="stylesheet" href="{{ r }}/.cpr/w/ui.css?_={{ ts }}">
|
||||
<link rel="stylesheet" href="{{ r }}/.cpr/w/mde.css?_={{ ts }}">
|
||||
<link rel="stylesheet" href="{{ r }}/.cpr/w/deps/mini-fa.css?_={{ ts }}">
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ var dom_md = ebi('mt');
|
|||
(function () {
|
||||
var n = location + '';
|
||||
n = (n.slice(n.indexOf('//') + 2).split('?')[0] + '?v').split('/');
|
||||
n[0] = 'top';
|
||||
n[0] = '🏠';
|
||||
var loc = [];
|
||||
var nav = [];
|
||||
for (var a = 0; a < n.length; a++) {
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.8">
|
||||
<meta name="theme-color" content="#{{ tcolor }}">
|
||||
<link rel="manifest" href="{{ r }}/.cpr/w/manifest.json?_={{ ts }}" />
|
||||
<style>:root{--font-main:sans-serif;--font-mono:monospace}
|
||||
html,body,a{margin:0;padding:0;border:none;color:#ccc;background:none;font-family:sans-serif;font-family:var(--font-main),sans-serif}
|
||||
pre{font-family:monospace,monospace;font-family:var(--font-mono),monospace}
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=0.8">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<meta name="theme-color" content="#{{ tcolor }}">
|
||||
<link rel="manifest" href="{{ r }}/.cpr/w/manifest.json?_={{ ts }}" />
|
||||
<link rel="stylesheet" media="screen" href="{{ r }}/.cpr/w/rups.css?_={{ ts }}">
|
||||
<link rel="stylesheet" media="screen" href="{{ r }}/.cpr/w/ui.css?_={{ ts }}">
|
||||
{{ html_head }}
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@ th {
|
|||
vertical-align: top;
|
||||
white-space: nowrap;
|
||||
}
|
||||
#wrap td+td+td+td+td+td+td+td {
|
||||
#wrap td+td+td+td+td+td+td+td+td {
|
||||
font-family: var(--font-mono), monospace, monospace;
|
||||
}
|
||||
#wrap th:first-child,
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=0.8">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<meta name="theme-color" content="#{{ tcolor }}">
|
||||
<link rel="manifest" href="{{ r }}/.cpr/w/manifest.json?_={{ ts }}" />
|
||||
<link rel="stylesheet" media="screen" href="{{ r }}/.cpr/w/shares.css?_={{ ts }}">
|
||||
<link rel="stylesheet" media="screen" href="{{ r }}/.cpr/w/ui.css?_={{ ts }}">
|
||||
{{ html_head }}
|
||||
|
|
|
|||
|
|
@ -5,60 +5,157 @@ html {
|
|||
font-family: var(--font-main), sans-serif;
|
||||
touch-action: manipulation;
|
||||
}
|
||||
|
||||
#homebtn {
|
||||
font-size: x-large;
|
||||
top: 1em;
|
||||
left: 1em;
|
||||
margin: 0 0 .3em 0;
|
||||
padding: .4em .5em;
|
||||
border-radius: .3em;
|
||||
background: var(--bg-u2);
|
||||
border-left: var(--bg-u5) solid 1px;
|
||||
border-top: var(--bg-u5) solid 1px;
|
||||
border-right: var(--bg-u5) solid 1px;
|
||||
border-bottom: 2px solid rgb(7, 130, 212);
|
||||
position: fixed;
|
||||
z-index: 10;
|
||||
box-shadow: 0 0 1em color-mix(in oklab, var(--bg-max) 60%, transparent 40%);
|
||||
}
|
||||
#homebtn:hover, #homebtn:focus-visible {
|
||||
background: var(--bg-u5);
|
||||
}
|
||||
|
||||
#outer {
|
||||
top: 0;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
position: absolute;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
}
|
||||
#middle {
|
||||
display: flex;
|
||||
margin: auto;
|
||||
justify-content: center;
|
||||
}
|
||||
#wrap {
|
||||
max-width: 40em;
|
||||
margin: 2em auto;
|
||||
padding: 0 1em 3em 1em;
|
||||
position: relative;
|
||||
max-width: 80vw;
|
||||
margin: 1.5em 2em;
|
||||
margin-bottom: 3em;
|
||||
padding: 1.5em;
|
||||
padding-bottom: 0em;
|
||||
line-height: 1.3em;
|
||||
background: #282827;
|
||||
border-radius: .5em;
|
||||
border: var(--bg-u5) solid 1px;
|
||||
box-shadow: 0 0 2em color-mix(in oklab, var(--bg-max) 60%, transparent 40%);
|
||||
}
|
||||
html.y #wrap {
|
||||
background: color-mix(in oklab, var(--a-gray) 18%, var(--bg-max));
|
||||
}
|
||||
#wrap.w {
|
||||
max-width: 96%;
|
||||
}
|
||||
h1 {
|
||||
border-bottom: 1px solid #ccc;
|
||||
margin: 2em 0 .4em 0;
|
||||
margin: 1.5em 0 .4em 0;
|
||||
padding: 0;
|
||||
line-height: 1em;
|
||||
font-size: x-large;
|
||||
font-weight: normal;
|
||||
}
|
||||
#top_L {
|
||||
display: flex;
|
||||
}
|
||||
#l {
|
||||
margin-top: 0;
|
||||
text-align: center;
|
||||
}
|
||||
#login {
|
||||
border: var(--bg-u5) solid 1px;
|
||||
border-radius: .3em;
|
||||
padding: 1em;
|
||||
margin: 2em auto 0 auto;
|
||||
max-width: 25em;
|
||||
}
|
||||
li {
|
||||
margin: 1em 0;
|
||||
}
|
||||
p {
|
||||
margin: 0 .2em;
|
||||
}
|
||||
#lo,
|
||||
a {
|
||||
color: #047;
|
||||
background: #fff;
|
||||
color: #fff;
|
||||
background: rgba(5, 92, 184, 0.69);
|
||||
text-decoration: none;
|
||||
white-space: nowrap;
|
||||
border-bottom: 1px solid #8ab;
|
||||
border-bottom: 2px solid rgb(3, 50, 112);
|
||||
border-radius: .2em;
|
||||
padding: .2em .6em;
|
||||
margin: 0 .3em;
|
||||
}
|
||||
#lo {
|
||||
padding: 0 .6em;
|
||||
line-height: 1.8em;
|
||||
border-width: 0 0 2px 0;
|
||||
max-height: 30px;
|
||||
}
|
||||
#lo:hover, #lo:focus-visible,
|
||||
a:hover, a:focus-visible {
|
||||
background: rgb(10, 134, 206);
|
||||
}
|
||||
td a {
|
||||
margin: 0;
|
||||
}
|
||||
#wb,
|
||||
#w {
|
||||
color: #fff;
|
||||
background: #940;
|
||||
border-color: #b70;
|
||||
background: rgba(50, 158, 4, 0.69);
|
||||
border-color: rgb(20, 90, 3);
|
||||
}
|
||||
#wb:hover, #wb:focus-visible,
|
||||
#w:hover, #w:focus-visible {
|
||||
background: rgb(93, 180, 12);
|
||||
}
|
||||
.af,
|
||||
.logout {
|
||||
float: right;
|
||||
margin: -.2em 0 0 .8em;
|
||||
}
|
||||
|
||||
#a {
|
||||
background: transparent;
|
||||
border: var(--bg-u5) solid 1px;
|
||||
font-weight: bold;
|
||||
padding: .2em .5em;
|
||||
}
|
||||
#a:hover, #a:focus-visible {
|
||||
background: var(--bg-u5);
|
||||
}
|
||||
html.y #a {
|
||||
color: #222;
|
||||
}
|
||||
#lo,
|
||||
.logout,
|
||||
a.r {
|
||||
color: #c04;
|
||||
border-color: #c7a;
|
||||
background: rgba(230, 3, 3, 0.61);
|
||||
border-color: rgb(178, 5, 66);
|
||||
}
|
||||
a.g {
|
||||
color: #0a0;
|
||||
border-color: #3a0;
|
||||
box-shadow: 0 .3em 1em #4c0;
|
||||
#lo:hover, #lo:focus-visible,
|
||||
.logout:hover, .logout:focus-visible,
|
||||
a.r:hover, a.r:focus-visible {
|
||||
background: rgb(209, 4, 4);
|
||||
}
|
||||
#a.g {
|
||||
background: rgb(254, 207, 20);
|
||||
border-color: rgb(224, 177, 7);
|
||||
box-shadow: 0 .3em 1em rgba(240, 149, 3, 0.584);
|
||||
color: #000;
|
||||
}
|
||||
#repl,
|
||||
#pb a {
|
||||
|
|
@ -69,23 +166,27 @@ a.g {
|
|||
}
|
||||
#repl {
|
||||
position: fixed;
|
||||
bottom: .25em;
|
||||
left: .2em;
|
||||
bottom: .5em;
|
||||
left: .5em;
|
||||
}
|
||||
#pb {
|
||||
opacity: .5;
|
||||
position: fixed;
|
||||
bottom: .25em;
|
||||
right: .3em;
|
||||
white-space: nowrap;
|
||||
bottom: .5em;
|
||||
right: .5em;
|
||||
}
|
||||
#pb span {
|
||||
opacity: .6;
|
||||
pointer-events: none;
|
||||
}
|
||||
#pb a {
|
||||
margin: 0;
|
||||
}
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
overflow-x: auto;
|
||||
display: block;
|
||||
overflow-y: hidden;
|
||||
}
|
||||
.vols td,
|
||||
.vols th {
|
||||
|
|
@ -121,11 +222,11 @@ table {
|
|||
.agr br {
|
||||
display: none;
|
||||
}
|
||||
#lo,
|
||||
.agr a,
|
||||
.agr form {
|
||||
margin: 0 .5em 0 0;
|
||||
line-height: 4em;
|
||||
line-height: 1.3em;
|
||||
display: inline-block;
|
||||
}
|
||||
.agr form,
|
||||
.agr input {
|
||||
|
|
@ -133,7 +234,6 @@ table {
|
|||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
#lo,
|
||||
.agr input {
|
||||
line-height: 1em;
|
||||
font-weight: normal;
|
||||
|
|
@ -199,61 +299,63 @@ html.z {
|
|||
html.z h1 {
|
||||
border-color: #777;
|
||||
}
|
||||
html.z #lo,
|
||||
html.z a {
|
||||
color: #fff;
|
||||
background: #057;
|
||||
border-color: #37a;
|
||||
}
|
||||
html.z .logout,
|
||||
html.z #lo,
|
||||
html.z a.r {
|
||||
background: #804;
|
||||
border-color: #c28;
|
||||
}
|
||||
html.z a.g {
|
||||
background: #470;
|
||||
border-color: #af4;
|
||||
box-shadow: 0 .3em 1em #7d0;
|
||||
}
|
||||
form {
|
||||
line-height: 2.5em;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
margin: auto;
|
||||
}
|
||||
#x,
|
||||
input {
|
||||
color: #a50;
|
||||
background: #fff;
|
||||
border: 1px solid #a50;
|
||||
margin: 1em 0 0 0;
|
||||
background: #ccc;
|
||||
background: var(--transparent);
|
||||
padding: .5em;
|
||||
border-color: rgb(72, 182, 255);
|
||||
border-radius: .3em;
|
||||
padding: .25em .6em;
|
||||
margin: 0 .3em 0 0;
|
||||
font-size: 1em;
|
||||
}
|
||||
input::placeholder {
|
||||
font-size: 1.2em;
|
||||
font-style: italic;
|
||||
letter-spacing: .04em;
|
||||
opacity: 0.64;
|
||||
color: #930;
|
||||
color: #000;
|
||||
}
|
||||
#x,
|
||||
html.z input {
|
||||
color: #fff;
|
||||
background: #626;
|
||||
border-color: #c2c;
|
||||
input:autofill {
|
||||
box-shadow: 0 0 0 40px #1f3b67 inset;
|
||||
}
|
||||
html.y input:autofill {
|
||||
box-shadow: 0 0 0 40px #a2c9e6 inset;
|
||||
}
|
||||
html.z input::placeholder {
|
||||
color: #fff;
|
||||
}
|
||||
#x,
|
||||
input[type=submit] {
|
||||
color: #fff;
|
||||
background: rgb(39, 130, 204);
|
||||
border-color: rgb(72, 182, 255);
|
||||
border-radius: .3em;
|
||||
padding: .4em .6em;
|
||||
font-size: 1em;
|
||||
}
|
||||
#x:hover, #x:focus-visible,
|
||||
input[type=submit]:hover, input[type=submit]:focus-visible {
|
||||
background: linear-gradient(-10deg, rgb(10, 77, 145), rgb(39, 130, 204));
|
||||
}
|
||||
html.z .num {
|
||||
border-color: #777;
|
||||
}
|
||||
|
||||
|
||||
html.bz {
|
||||
color: #bbd;
|
||||
background: #11121d;
|
||||
}
|
||||
html.bz .vols img {
|
||||
filter: sepia(0.8) hue-rotate(180deg);
|
||||
}
|
||||
|
||||
@media (max-width: 55em){
|
||||
#homebtn {
|
||||
position: initial;
|
||||
display: inline-block;
|
||||
}
|
||||
#login {
|
||||
margin-top: .7em;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,202 +7,208 @@
|
|||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.8">
|
||||
<meta name="theme-color" content="#{{ tcolor }}">
|
||||
<link rel="manifest" href="{{ r }}/.cpr/w/manifest.json?_={{ ts }}" />
|
||||
<link rel="stylesheet" media="screen" href="{{ r }}/.cpr/w/splash.css?_={{ ts }}">
|
||||
<link rel="stylesheet" media="screen" href="{{ r }}/.cpr/w/ui.css?_={{ ts }}">
|
||||
{{ html_head }}
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="wrap">
|
||||
{%- if not in_shr %}
|
||||
<a id="a" href="{{ r }}/?h{{ re }}" class="af">refresh</a>
|
||||
<a id="v" href="{{ r }}/?hc" class="af">connect</a>
|
||||
<div id="outer">
|
||||
<div id="middle">
|
||||
<div id="wrap">
|
||||
<a id="homebtn" href="/">🏠</a>
|
||||
|
||||
{%- if this.uname == '*' %}
|
||||
<p id="b">howdy stranger <small>(you're not logged in)</small></p>
|
||||
{%- else %}
|
||||
{%- if this.args.idp_logout %}
|
||||
<a id="c" href="{{ this.args.idp_logout }}" class="logout">logout</a>
|
||||
{%- else %}
|
||||
<a id="c" href="{{ r }}/?pw=x" class="logout">logout</a>
|
||||
{%- endif %}
|
||||
<p><span id="m">welcome back,</span> <strong id="un">{{ this.uname|e }}</strong></p>
|
||||
{%- endif %}
|
||||
{%- endif %}
|
||||
{%- if not in_shr %}
|
||||
<a id="a" href="{{ r }}/?h{{ re }}" class="af" tt="toggle auto-refresh">↻</a>
|
||||
<a id="v" href="{{ r }}/?hc" class="af">Connect</a>
|
||||
|
||||
{%- if msg %}
|
||||
<div id="msg">
|
||||
{{ msg }}
|
||||
</div>
|
||||
{%- endif %}
|
||||
|
||||
{%- if ups %}
|
||||
<h1 id="aa">incoming files:</h1>
|
||||
<table class="vols">
|
||||
<thead><tr><th>%</th><th>speed</th><th>eta</th><th>idle</th><th>dir</th><th>file</th></tr></thead>
|
||||
<tbody>
|
||||
{%- for u in ups %}
|
||||
<tr><td>{{ u[0] }}</td><td>{{ u[1] }}</td><td>{{ u[2] }}</td><td>{{ u[3] }}</td><td><a href="{{ r }}{{ u[4] }}">{{ u[5]|e }}</a></td><td>{{ u[6]|e }}</td></tr>
|
||||
{%- endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{%- endif %}
|
||||
|
||||
{%- if dls %}
|
||||
<h1 id="ae">active downloads:</h1>
|
||||
<table class="vols">
|
||||
<thead><tr><th>%</th><th>sent</th><th>speed</th><th>eta</th><th>idle</th><th></th><th>dir</th><th>file</th></tr></thead>
|
||||
<tbody>
|
||||
{%- for u in dls %}
|
||||
<tr><td>{{ u[0] }}</td><td>{{ u[1] }}</td><td>{{ u[2] }}</td><td>{{ u[3] }}</td><td>{{ u[4] }}</td><td>{{ u[5] }}</td><td><a href="{{ r }}{{ u[6] }}">{{ u[7]|e }}</a></td><td>{{ u[8] }}</td></tr>
|
||||
{%- endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{%- endif %}
|
||||
|
||||
{%- if avol %}
|
||||
<h1>admin panel:</h1>
|
||||
<table><tr><td> <!-- hehehe -->
|
||||
<table class="num">
|
||||
<tr><td>scanning</td><td>{{ scanning }}</td></tr>
|
||||
<tr><td>hash-q</td><td>{{ hashq }}</td></tr>
|
||||
<tr><td>tag-q</td><td>{{ tagq }}</td></tr>
|
||||
<tr><td>mtp-q</td><td>{{ mtpq }}</td></tr>
|
||||
<tr><td>db-act</td><td id="u">{{ dbwt }}</td></tr>
|
||||
</table>
|
||||
</td><td>
|
||||
<table class="vols">
|
||||
<thead><tr><th>vol</th><th id="t">action</th><th>status</th></tr></thead>
|
||||
<tbody>
|
||||
{%- for mp in avol %}
|
||||
{%- if mp in vstate and vstate[mp] %}
|
||||
<tr><td><a href="{{ r }}{{ mp }}{{ url_suf }}">{{ mp }}</a></td><td><a class="s" href="{{ r }}{{ mp }}?scan">rescan</a></td><td>{{ vstate[mp] }}</td></tr>
|
||||
{%- if this.uname == '*' %}
|
||||
<p id="b">howdy stranger <small>(you're not logged in)</small></p>
|
||||
{%- else %}
|
||||
{%- if this.args.idp_logout %}
|
||||
<a id="c" href="{{ this.args.idp_logout }}" class="logout">Logout</a>
|
||||
{%- else %}
|
||||
<a id="c" href="{{ r }}/?pw=x" class="logout">Logout</a>
|
||||
{%- endif %}
|
||||
<p><span id="m">welcome back,</span> <strong id="un">{{ this.uname|e }}</strong></p>
|
||||
{%- endif %}
|
||||
{%- endif %}
|
||||
|
||||
<div id="login">
|
||||
{%- if in_shr %}
|
||||
<h1 id="z">Unlock this share</h1>
|
||||
<div>
|
||||
<form id="lf" method="post" enctype="multipart/form-data" action="{{ r }}/{{ qvpath }}">
|
||||
<input type="hidden" id="la" name="act" value="login" />
|
||||
<input type="password" id="lp" name="cppwd" placeholder="Password" />
|
||||
<input type="hidden" name="uhash" id="uhash" value="x" />
|
||||
<input type="submit" id="ls" value="Unlock" />
|
||||
{%- if ahttps %}
|
||||
<a id="w" href="{{ ahttps }}">Switch to https</a>
|
||||
{%- endif %}
|
||||
<div id="lm"></div>
|
||||
</form>
|
||||
</div>
|
||||
{%- else %}
|
||||
{%- if this.uname == '*' %}
|
||||
<h1 id="l">Login for more</h1>
|
||||
{%- else %}
|
||||
<h1 id="l">Change account</h1>
|
||||
{%- endif %}
|
||||
<div>
|
||||
{%- if this.args.idp_login %}
|
||||
<ul><li>
|
||||
<a href="{{ this.args.idp_login | replace("{dst}",r+"/"+qvpath) }}">{{ this.args.idp_login_t }}</a>
|
||||
{%- if this.args.ao_have_pw %}or alternatively{%- endif %}
|
||||
</li></ul>
|
||||
{%- endif %}
|
||||
{%- if this.args.ao_have_pw %}
|
||||
<form id="lf" method="post" enctype="multipart/form-data" action="{{ r }}/{{ qvpath }}">
|
||||
<input type="hidden" id="la" name="act" value="login" />
|
||||
{%- if this.args.usernames %}
|
||||
<input type="text" id="lu" name="uname" placeholder="Username" size="12" />
|
||||
<input type="password" id="lp" name="cppwd" placeholder="Password" size="12" />
|
||||
{%- else %}
|
||||
<input type="password" id="lp" name="cppwd" placeholder="Password" />
|
||||
{%- endif %}
|
||||
<input type="hidden" name="uhash" id="uhash" value="x" />
|
||||
<input type="submit" id="ls" value="Login" />
|
||||
{%- if chpw %}
|
||||
<a id="x" href="#">Change password</a>
|
||||
{%- endif %}
|
||||
<div id="lm"></div>
|
||||
</form>
|
||||
{%- endif %}
|
||||
</div>
|
||||
{%- endif %}
|
||||
</div>
|
||||
|
||||
{%- if msg %}
|
||||
<div id="msg">
|
||||
{{ msg }}
|
||||
</div>
|
||||
{%- endif %}
|
||||
|
||||
{%- if ups %}
|
||||
<h1 id="aa">Incoming files</h1>
|
||||
<table class="vols">
|
||||
<thead><tr><th>%</th><th>Speed</th><th>Eta</th><th>Idle</th><th>Dir</th><th>File</th></tr></thead>
|
||||
<tbody>
|
||||
{%- for u in ups %}
|
||||
<tr><td>{{ u[0] }}</td><td>{{ u[1] }}</td><td>{{ u[2] }}</td><td>{{ u[3] }}</td><td><a href="{{ r }}{{ u[4] }}">{{ u[5]|e }}</a></td><td>{{ u[6]|e }}</td></tr>
|
||||
{%- endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{%- endif %}
|
||||
|
||||
{%- if dls %}
|
||||
<h1 id="ae">Active downloads</h1>
|
||||
<table class="vols">
|
||||
<thead><tr><th>%</th><th>Sent</th><th>Speed</th><th>Eta</th><th>Idle</th><th></th><th>Dir</th><th>File</th></tr></thead>
|
||||
<tbody>
|
||||
{%- for u in dls %}
|
||||
<tr><td>{{ u[0] }}</td><td>{{ u[1] }}</td><td>{{ u[2] }}</td><td>{{ u[3] }}</td><td>{{ u[4] }}</td><td>{{ u[5] }}</td><td><a href="{{ r }}{{ u[6] }}">{{ u[7]|e }}</a></td><td>{{ u[8] }}</td></tr>
|
||||
{%- endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{%- endif %}
|
||||
|
||||
{%- if avol %}
|
||||
<h1>Admin panel</h1>
|
||||
<table><tr><td> <!-- hehehe -->
|
||||
<table class="num">
|
||||
<tr><td>scanning</td><td>{{ scanning }}</td></tr>
|
||||
<tr><td>hash-q</td><td>{{ hashq }}</td></tr>
|
||||
<tr><td>tag-q</td><td>{{ tagq }}</td></tr>
|
||||
<tr><td>mtp-q</td><td>{{ mtpq }}</td></tr>
|
||||
<tr><td>db-act</td><td id="u">{{ dbwt }}</td></tr>
|
||||
</table>
|
||||
</td><td>
|
||||
<table class="vols">
|
||||
<thead><tr><th>vol</th><th id="t">action</th><th>status</th></tr></thead>
|
||||
<tbody>
|
||||
{%- for mp in avol %}
|
||||
{%- if mp in vstate and vstate[mp] %}
|
||||
<tr><td><a href="{{ r }}{{ mp }}{{ url_suf }}">{{ mp }}</a></td><td><a class="s" href="{{ r }}{{ mp }}?scan">rescan</a></td><td>{{ vstate[mp] }}</td></tr>
|
||||
{%- endif %}
|
||||
{%- endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</td></tr></table>
|
||||
<div class="btns">
|
||||
<a id="d" href="{{ r }}/?stack">Dump stack</a>
|
||||
<a id="e" href="{{ r }}/?reload=cfg">Reload cfg</a>
|
||||
</div>
|
||||
{%- endif %}
|
||||
|
||||
{%- if rvol %}
|
||||
<h1 id="f">You can browse</h1>
|
||||
<ul>
|
||||
{%- for mp in rvol %}
|
||||
<li><a href="{{ r }}{{ mp }}{{ url_suf }}">{{ mp }}</a></li>
|
||||
{%- endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</td></tr></table>
|
||||
<div class="btns">
|
||||
<a id="d" href="{{ r }}/?stack">dump stack</a>
|
||||
<a id="e" href="{{ r }}/?reload=cfg">reload cfg</a>
|
||||
</div>
|
||||
{%- endif %}
|
||||
|
||||
{%- if rvol %}
|
||||
<h1 id="f">you can browse:</h1>
|
||||
<ul>
|
||||
{%- for mp in rvol %}
|
||||
<li><a href="{{ r }}{{ mp }}{{ url_suf }}">{{ mp }}</a></li>
|
||||
{%- endfor %}
|
||||
</ul>
|
||||
{%- endif %}
|
||||
|
||||
{%- if wvol %}
|
||||
<h1 id="g">you can upload to:</h1>
|
||||
<ul>
|
||||
{%- for mp in wvol %}
|
||||
<li><a href="{{ r }}{{ mp }}{{ url_suf }}">{{ mp }}</a></li>
|
||||
{%- endfor %}
|
||||
</ul>
|
||||
{%- endif %}
|
||||
|
||||
{%- if in_shr %}
|
||||
<h1 id="z">unlock this share:</h1>
|
||||
<div>
|
||||
<form id="lf" method="post" enctype="multipart/form-data" action="{{ r }}/{{ qvpath }}">
|
||||
<input type="hidden" id="la" name="act" value="login" />
|
||||
<input type="password" id="lp" name="cppwd" placeholder=" password" />
|
||||
<input type="hidden" name="uhash" id="uhash" value="x" />
|
||||
<input type="submit" id="ls" value="Unlock" />
|
||||
{%- if ahttps %}
|
||||
<a id="w" href="{{ ahttps }}">switch to https</a>
|
||||
</ul>
|
||||
{%- endif %}
|
||||
<div id="lm"></div>
|
||||
</form>
|
||||
</div>
|
||||
{%- else %}
|
||||
{%- if this.uname == '*' %}
|
||||
<h1 id="l">login for more:</h1>
|
||||
{%- else %}
|
||||
<h1 id="l">change account:</h1>
|
||||
{%- endif %}
|
||||
<div>
|
||||
{%- if this.args.idp_login %}
|
||||
<ul><li>
|
||||
<a href="{{ this.args.idp_login | replace("{dst}",r+"/"+qvpath) }}">{{ this.args.idp_login_t }}</a>
|
||||
{%- if this.args.ao_have_pw %}or alternatively:{%- endif %}
|
||||
</li></ul>
|
||||
{%- endif %}
|
||||
{%- if this.args.ao_have_pw %}
|
||||
<form id="lf" method="post" enctype="multipart/form-data" action="{{ r }}/{{ qvpath }}">
|
||||
<input type="hidden" id="la" name="act" value="login" />
|
||||
{%- if this.args.usernames %}
|
||||
<input type="text" id="lu" name="uname" placeholder=" username" size="12" />
|
||||
<input type="password" id="lp" name="cppwd" placeholder=" password" size="12" />
|
||||
{%- else %}
|
||||
<input type="password" id="lp" name="cppwd" placeholder=" password" />
|
||||
|
||||
{%- if wvol %}
|
||||
<h1 id="g">You can upload to</h1>
|
||||
<ul>
|
||||
{%- for mp in wvol %}
|
||||
<li><a href="{{ r }}{{ mp }}{{ url_suf }}">{{ mp }}</a></li>
|
||||
{%- endfor %}
|
||||
</ul>
|
||||
{%- endif %}
|
||||
<input type="hidden" name="uhash" id="uhash" value="x" />
|
||||
<input type="submit" id="ls" value="login" />
|
||||
{%- if chpw %}
|
||||
<a id="x" href="#">change password</a>
|
||||
{%- endif %}
|
||||
{%- if ahttps %}
|
||||
<a id="w" href="{{ ahttps }}">switch to https</a>
|
||||
{%- endif %}
|
||||
<div id="lm"></div>
|
||||
</form>
|
||||
{%- endif %}
|
||||
|
||||
<h1 id="cc">Other stuff</h1>
|
||||
<div class="agr">
|
||||
{%- if ahttps %}
|
||||
<a id="wb" href="{{ ahttps }}">Switch to https</a><br />
|
||||
{%- endif %}
|
||||
|
||||
<a id="af" href="{{ r }}/?ru">Show recent uploads</a><br />
|
||||
|
||||
{%- if this.uname != '*' and this.args.shr %}
|
||||
<a id="y" href="{{ r }}/?shares">Edit shares</a><br />
|
||||
{%- endif %}
|
||||
|
||||
{%- if this.uname in this.args.idp_adm_set %}
|
||||
<a id="ag" href="{{ r }}/?idp">View idp cache</a><br />
|
||||
{%- endif %}
|
||||
|
||||
<a id="k" href="{{ r }}/?reset" class="r" onclick="localStorage.clear();return true">Reset client settings</a><br />
|
||||
|
||||
{%- if this.uname != '*' and not in_shr %}
|
||||
<form method="post" enctype="multipart/form-data">
|
||||
<input type="hidden" name="act" value="logout" />
|
||||
<input type="submit" id="lo" value="Logout “{{ this.uname|e }}” everywhere" />
|
||||
</form>
|
||||
{%- endif %}
|
||||
</div>
|
||||
<ul>
|
||||
{%- if k304 or k304vis %}
|
||||
{%- if k304 %}
|
||||
<li><a id="h" href="{{ r }}/?cc&setck=k304=n">disable k304</a> (currently enabled)
|
||||
{%- else %}
|
||||
<li><a id="i" href="{{ r }}/?cc&setck=k304=y" class="r">enable k304</a> (currently disabled)
|
||||
{%- endif %}
|
||||
<blockquote id="j">enabling k304 will disconnect your client on every HTTP 304, which can prevent some buggy proxies from getting stuck (suddenly not loading pages), <em>but</em> it will also make things slower in general</blockquote></li>
|
||||
{%- endif %}
|
||||
|
||||
{%- if no304 or no304vis %}
|
||||
{%- if no304 %}
|
||||
<li><a id="ab" href="{{ r }}/?cc&setck=no304=n">disable no304</a> (currently enabled)
|
||||
{%- else %}
|
||||
<li><a id="ac" href="{{ r }}/?cc&setck=no304=y" class="r">enable no304</a> (currently disabled)
|
||||
{%- endif %}
|
||||
<blockquote id="ad">enabling no304 will disable all caching; try this if k304 wasn't enough. This will waste a huge amount of network traffic!</blockquote></li>
|
||||
{%- endif %}
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
{%- endif %}
|
||||
|
||||
<h1 id="cc">other stuff:</h1>
|
||||
<div class="agr">
|
||||
{%- if ahttps %}
|
||||
<a id="wb" href="{{ ahttps }}">switch to https</a><br />
|
||||
{%- endif %}
|
||||
|
||||
<a id="af" href="{{ r }}/?ru">show recent uploads</a><br />
|
||||
|
||||
{%- if this.uname != '*' and this.args.shr %}
|
||||
<a id="y" href="{{ r }}/?shares">edit shares</a><br />
|
||||
{%- endif %}
|
||||
|
||||
{%- if this.uname in this.args.idp_adm_set %}
|
||||
<a id="ag" href="{{ r }}/?idp">view idp cache</a><br />
|
||||
{%- endif %}
|
||||
|
||||
<a id="k" href="{{ r }}/?reset" class="r" onclick="localStorage.clear();return true">reset client settings</a><br />
|
||||
|
||||
{%- if this.uname != '*' and not in_shr %}
|
||||
<form method="post" enctype="multipart/form-data">
|
||||
<input type="hidden" name="act" value="logout" />
|
||||
<input type="submit" id="lo" value="logout “{{ this.uname|e }}” everywhere" />
|
||||
</form>
|
||||
{%- endif %}
|
||||
</div>
|
||||
<ul>
|
||||
{%- if k304 or k304vis %}
|
||||
{%- if k304 %}
|
||||
<li><a id="h" href="{{ r }}/?cc&setck=k304=n">disable k304</a> (currently enabled)
|
||||
{%- else %}
|
||||
<li><a id="i" href="{{ r }}/?cc&setck=k304=y" class="r">enable k304</a> (currently disabled)
|
||||
{%- endif %}
|
||||
<blockquote id="j">enabling k304 will disconnect your client on every HTTP 304, which can prevent some buggy proxies from getting stuck (suddenly not loading pages), <em>but</em> it will also make things slower in general</blockquote></li>
|
||||
{%- endif %}
|
||||
|
||||
{%- if no304 or no304vis %}
|
||||
{%- if no304 %}
|
||||
<li><a id="ab" href="{{ r }}/?cc&setck=no304=n">disable no304</a> (currently enabled)
|
||||
{%- else %}
|
||||
<li><a id="ac" href="{{ r }}/?cc&setck=no304=y" class="r">enable no304</a> (currently disabled)
|
||||
{%- endif %}
|
||||
<blockquote id="ad">enabling no304 will disable all caching; try this if k304 wasn't enough. This will waste a huge amount of network traffic!</blockquote></li>
|
||||
{%- endif %}
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
<a href="#" id="repl">π</a>
|
||||
<a href="#" id="repl" style="opacity: .4;">π</a>
|
||||
{%- if not this.args.nb %}
|
||||
<span id="pb"><span>powered by</span> <a href="{{ this.args.pb_url }}">copyparty {{ver}}</a></span>
|
||||
{%- endif %}
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.8">
|
||||
<meta name="theme-color" content="#{{ tcolor }}">
|
||||
<link rel="manifest" href="{{ r }}/.cpr/w/manifest.json?_={{ ts }}" />
|
||||
<link rel="stylesheet" media="screen" href="{{ r }}/.cpr/w/splash.css?_={{ ts }}">
|
||||
<link rel="stylesheet" media="screen" href="{{ r }}/.cpr/w/ui.css?_={{ ts }}">
|
||||
<style>ul{padding-left:1.3em}li{margin:.4em 0}.txa{float:right;margin:0 0 0 1em}</style>
|
||||
|
|
@ -14,6 +15,8 @@
|
|||
</head>
|
||||
|
||||
<body>
|
||||
<a id="homebtn" href="/?h">⬅️</a>
|
||||
|
||||
<div id="wrap" class="w">
|
||||
<div class="cn">
|
||||
<p class="btns"><a href="/{{ rvp }}">browse files</a> // <a href="{{ r }}/?h">control panel</a></p>
|
||||
|
|
|
|||
26
copyparty/web/sw.js
Normal file
26
copyparty/web/sw.js
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
// service worker. required for PWAs
|
||||
// https://www.digitalapplied.com/blog/progressive-web-apps-2026-pwa-performance-guide
|
||||
// Register service worker on page load
|
||||
if ('serviceWorker' in navigator) {
|
||||
self.addEventListener("fetch", (event) => {
|
||||
// Regular requests not related to Web Share Target.
|
||||
if (event.request.method !== "POST" || !event.request.action.has("share-target")) {
|
||||
event.respondWith(fetch(event.request));
|
||||
return;
|
||||
}
|
||||
|
||||
// Requests related to Web Share Target.
|
||||
event.respondWith(
|
||||
(async () => {
|
||||
const formData = await event.request.formData();
|
||||
const files = formData.get("files") || "";
|
||||
const responseUrl = '/'; // (ToDo: remember last upload dir)
|
||||
// ToDo: keep file references in clipboard
|
||||
// -> upload on paste
|
||||
event.respondWith(fetch(event.request));
|
||||
alert(files);
|
||||
return;
|
||||
})(),
|
||||
);
|
||||
});
|
||||
}
|
||||
|
|
@ -5,7 +5,7 @@ Ls.chi = {
|
|||
"tt": "中文",
|
||||
|
||||
"cols": {
|
||||
"c": "操作按钮",
|
||||
"!": "操作按钮",
|
||||
"dur": "时长",
|
||||
"q": "质量 / 比特率",
|
||||
"Ac": "音频编码",
|
||||
|
|
@ -14,7 +14,7 @@ Ls.chi = {
|
|||
"Ahash": "音频校验和",
|
||||
"Vhash": "视频校验和",
|
||||
"Res": "分辨率",
|
||||
"T": "文件类型",
|
||||
"Ext": "文件类型",
|
||||
"aq": "音频质量 / 比特率",
|
||||
"vq": "视频质量 / 比特率",
|
||||
"pixfmt": "子采样 / 像素结构",
|
||||
|
|
@ -33,7 +33,7 @@ Ls.chi = {
|
|||
["G", "切换列表 / 网格视图"],
|
||||
["T", "切换缩略图 / 图标"],
|
||||
["⇧ A/D", "缩略图大小"],
|
||||
["ctrl-K", "删除选中项"],
|
||||
["ctrl-K/Del", "删除选中项"],
|
||||
["ctrl-X", "剪切选中项到剪贴板"],
|
||||
["ctrl-C", "复制选中项到剪贴板"],
|
||||
["ctrl-V", "粘贴(移动/复制)到此处"],
|
||||
|
|
@ -107,9 +107,9 @@ Ls.chi = {
|
|||
"ht_and": "又 ",
|
||||
|
||||
"goh": "控制面板",
|
||||
"gop": '上一个同级文件夹">前',
|
||||
"gou": '上一级文件夹">上',
|
||||
"gon": '下一个文件夹">后',
|
||||
"gop": '上一个同级文件夹',
|
||||
"gou": '上一级文件夹',
|
||||
"gon": '下一个文件夹',
|
||||
"logout": "登出 ",
|
||||
"login": "登录",
|
||||
"access": " 权限",
|
||||
|
|
@ -157,7 +157,7 @@ Ls.chi = {
|
|||
"ut_u2ts": "将最后修改的时间戳$N从你的文件系统复制到服务器\">📅",
|
||||
"ut_ow": "覆盖服务器上的现有文件?$N🛡️:不要覆盖(会生成新文件名)$N🕒:如果服务器文件较旧则覆盖$N♻️:只要文件内容不同就覆盖$N⏭️:无条件跳过所有已有文件",
|
||||
"ut_mt": "在上传时继续哈希其他文件$N$N如果你的 CPU 或硬盘是瓶颈,可能需要禁用",
|
||||
"ut_ask": '上传开始前询问确认">💭',
|
||||
"ut_ask": '上传开始前询问确认',
|
||||
"ut_pot": "通过简化界面来$N提高慢设备上的上传速度",
|
||||
"ut_srch": "不会真的上传,而是检查文件是否$N已经存在于服务器上(将扫描你可以读取的所有文件夹)",
|
||||
"ut_par": "设置为 0 可暂停上传$N$N如果你的网络很慢/延迟很高,请增加该值$N$N在局域网内/瓶颈在服务器硬盘时,请保持该值为 1",
|
||||
|
|
@ -225,7 +225,7 @@ Ls.chi = {
|
|||
|
||||
"ct_grid": '田 网格',
|
||||
"ct_ttips": '◔ ◡ ◔">ℹ️ 提示',
|
||||
"ct_thumb": '在网格视图中,切换图标或缩略图$N快捷键: T">🖼️ 缩略',
|
||||
"ct_thumb": '切换图标或缩略图$N快捷键: T">🖼️ 缩略',
|
||||
"ct_csel": '在网格视图中,允许使用 CTRL 和 SHIFT 进行文件选择">选择',
|
||||
"ct_dsel": '在网格视图中,允许拖动选择">拖选',
|
||||
"ct_dl": '点击文件时强制下载(不要就地显示)">下载',
|
||||
|
|
@ -288,9 +288,9 @@ Ls.chi = {
|
|||
"ml_drc": "动态范围压缩器",
|
||||
"ml_ss": "无声段自动快进",
|
||||
|
||||
"mt_loop": "单曲循环\">🔁",
|
||||
"mt_loop": "单曲循环",
|
||||
"mt_one": "播完一首歌曲后停止\">1️⃣",
|
||||
"mt_shuf": "随机播放各文件夹中的歌曲\">🔀",
|
||||
"mt_shuf": "随机播放各文件夹中的歌曲",
|
||||
"mt_aplay": "如果链接中有歌曲 ID,则自动播放$N$N禁用此选项将不再在播放音乐时更新页面 URL 中的歌曲 ID,以防止设置丢失但 URL 保留时又自动播放起来\">自▶",
|
||||
"mt_preload": "在歌曲快结束时开始加载下一首歌,以实现无缝播放\">预载",
|
||||
"mt_prescan": "在最后一首歌结束之前自动跳转到下一个文件夹$N以防止浏览器换页时停止播放\">预扫",
|
||||
|
|
@ -305,7 +305,7 @@ Ls.chi = {
|
|||
"mt_follow": "切换歌曲时,将正在播放的曲目滚动到视野内\">🎯",
|
||||
"mt_compact": "紧凑的控制按钮\">⟎",
|
||||
"mt_uncache": "清除缓存 $N(如果你的浏览器因缓存歌曲损坏而无法播放,请尝试此操作)\">清缓",
|
||||
"mt_mloop": "循环播放当前播放中的文件夹\">🔁 循环",
|
||||
"mt_mloop": "循环播放当前播放中的文件夹",
|
||||
"mt_mnext": "加载下一个文件夹并继续播放\">📂 继续",
|
||||
"mt_mstop": "停止播放\">⏸ 停止",
|
||||
"mt_cflac": "将 flac / wav 转换为 {0}\">flac",
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ Ls.cze = {
|
|||
"tt": "Čeština",
|
||||
|
||||
"cols": {
|
||||
"c": "tlačítka akcí",
|
||||
"!": "tlačítka akcí",
|
||||
"dur": "doba trvání",
|
||||
"q": "kvalita / bitrate",
|
||||
"Ac": "audio kodek",
|
||||
|
|
@ -14,7 +14,7 @@ Ls.cze = {
|
|||
"Ahash": "kontrolní součet audia",
|
||||
"Vhash": "kontrolní součet videa",
|
||||
"Res": "rozlišení",
|
||||
"T": "typ souboru",
|
||||
"Ext": "typ souboru",
|
||||
"aq": "kvalita zvuku / bitrate",
|
||||
"vq": "kvalita videa / bitrate",
|
||||
"pixfmt": "podvzorkování / struktura pixelů",
|
||||
|
|
@ -33,7 +33,7 @@ Ls.cze = {
|
|||
["G", "přepnout seznam / zobrazení mřížky"],
|
||||
["T", "přepnout náhledy / ikony"],
|
||||
["⇧ A/D", "velikost náhledů"],
|
||||
["ctrl-K", "smazat vybrané"],
|
||||
["ctrl-K/Del", "smazat vybrané"],
|
||||
["ctrl-X", "vyjmout výběr do schránky"],
|
||||
["ctrl-C", "kopírovat výběr do schránky"],
|
||||
["ctrl-V", "vložit (přesunout/kopírovat) zde"],
|
||||
|
|
@ -111,9 +111,9 @@ Ls.cze = {
|
|||
"ht_and": " a ",
|
||||
|
||||
"goh": "ovládací panel",
|
||||
"gop": 'předchozí sourozenec">předchozí',
|
||||
"gou": 'nadřazená složka">nahoru',
|
||||
"gon": 'následující složka">následující',
|
||||
"gop": 'předchozí sourozenec',
|
||||
"gou": 'nadřazená složka',
|
||||
"gon": 'následující složka',
|
||||
"logout": "Odhlásit ",
|
||||
"login": "Přihlásit se", //m
|
||||
"access": " přístup",
|
||||
|
|
@ -161,7 +161,7 @@ Ls.cze = {
|
|||
"ut_u2ts": "kopírovat časovou značku poslední změny$Nz vašeho souborového systému na server\">📅",
|
||||
"ut_ow": "přepsat existující soubory na serveru?$N🛡️: nikdy (místo toho vytvoří nový název souboru)$N🕒: přepsat pokud je soubor na serveru starší než váš$N♻️: vždy přepsat pokud se soubory liší$N⏭️: bezpodmínečně přeskočit všechny existující soubory", //m
|
||||
"ut_mt": "pokračovat v hashování ostatních souborů během nahrávání$N$Nmožná zakázat pokud je vaše CPU nebo HDD bottleneckem",
|
||||
"ut_ask": 'požádat o potvrzení před zahájením nahrávání">💭',
|
||||
"ut_ask": 'požádat o potvrzení před zahájením nahrávání',
|
||||
"ut_pot": "zlepšit rychlost nahrávání na pomalých zařízeních$Nzjednodušením UI",
|
||||
"ut_srch": "skutečně nenahrávat, místo toho zkontrolovat zda soubory již $N existují na serveru (prohledá všechny složky které můžete číst)",
|
||||
"ut_par": "pozastavit nahrávání nastavením na 0$N$Nzvýšit pokud je vaše připojení pomalé / vysoká latence$N$Nponechat na 1 v LAN nebo pokud je HDD serveru bottleneckem",
|
||||
|
|
@ -229,7 +229,7 @@ Ls.cze = {
|
|||
|
||||
"ct_grid": '田 mřížka',
|
||||
"ct_ttips": '◔ ◡ ◔">ℹ️ nápovědy',
|
||||
"ct_thumb": 'v zobrazení mřížky přepnout ikony nebo náhledy$NKlávesová zkratka: T">🖼️ náhledy',
|
||||
"ct_thumb": 'přepnout ikony nebo náhledy$NKlávesová zkratka: T">🖼️ náhledy',
|
||||
"ct_csel": 'použít CTRL a SHIFT pro výběr souborů v zobrazení mřížky">výběr',
|
||||
"ct_dsel": 'použít tažený výběr v zobrazení mřížky">tažení', //m
|
||||
"ct_dl": 'vynutit stažení (nezobrazovat inline) při kliknutí na soubor">dl', //m
|
||||
|
|
@ -292,9 +292,9 @@ Ls.cze = {
|
|||
"ml_drc": "kompresor dynamického rozsahu",
|
||||
"ml_ss": "přeskočit ticho", //m
|
||||
|
||||
"mt_loop": "smyčka/opakovat jednu skladbu\">🔁",
|
||||
"mt_loop": "smyčka/opakovat jednu skladbu",
|
||||
"mt_one": "zastavit po jedné skladbě\">1️⃣",
|
||||
"mt_shuf": "zamíchat skladby v každé složce\">🔀",
|
||||
"mt_shuf": "zamíchat skladby v každé složce",
|
||||
"mt_aplay": "automatické přehrávání pokud je ID skladby v odkazu kterým jste přišli na server$N$Nzakázání toho také zastaví aktualizaci URL stránky s ID skladby při přehrávání hudby, aby se zabránilo automatickému přehrávání pokud se tato nastavení ztratí ale URL zůstane\">a▶",
|
||||
"mt_preload": "začít načítat následující skladbu před koncem pro plynulé přehrávání\">přednahrání",
|
||||
"mt_prescan": "přejít do následující složky před tím než$Nskončí poslední skladba, aby byl webprohlížeč$Nspokojen aby nezastavil přehrávání\">nav",
|
||||
|
|
@ -309,7 +309,7 @@ Ls.cze = {
|
|||
"mt_follow": "udržet přehrávanou stopu v zobrazení\">🎯",
|
||||
"mt_compact": "kompaktní ovládání\">⟎",
|
||||
"mt_uncache": "vymazat cache (zkuste to, pokud váš prohlížeč uložil$Nporušenou kopii písně a odmítá ji přehrát)\">uncache",
|
||||
"mt_mloop": "opakovat otevřenou složku\">🔁 loop",
|
||||
"mt_mloop": "opakovat otevřenou složku",
|
||||
"mt_mnext": "načíst další složku a pokračovat\">📂 next",
|
||||
"mt_mstop": "zastavit přehrávání\">⏸ stop",
|
||||
"mt_cflac": "převést flac / wav na {0}\">flac",
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ Ls.deu = {
|
|||
"tt": "Deutsch",
|
||||
|
||||
"cols": {
|
||||
"c": "Aktionen",
|
||||
"!": "Aktionen",
|
||||
"dur": "Dauer",
|
||||
"q": "Qualität / Bitrate",
|
||||
"Ac": "Audiocodec",
|
||||
|
|
@ -14,7 +14,7 @@ Ls.deu = {
|
|||
"Ahash": "Audio Checksumme",
|
||||
"Vhash": "Video Checksumme",
|
||||
"Res": "Auflösung",
|
||||
"T": "Dateityp",
|
||||
"Ext": "Dateityp",
|
||||
"aq": "Audioqualität / Bitrate",
|
||||
"vq": "Videoqualität / Bitrate",
|
||||
"pixfmt": "Subsampling / Pixelstruktur",
|
||||
|
|
@ -107,9 +107,9 @@ Ls.deu = {
|
|||
"ht_and": " und ",
|
||||
|
||||
"goh": "Einstellungen",
|
||||
"gop": 'zum vorherigen Ordner springen">vorh.',
|
||||
"gou": 'zum übergeordneter Ordner springen">hoch',
|
||||
"gon": 'zum nächsten Ordner springen">nächst.',
|
||||
"gop": 'zum vorherigen Ordner springen',
|
||||
"gou": 'zum übergeordneter Ordner springen',
|
||||
"gon": 'zum nächsten Ordner springen',
|
||||
"logout": "Abmelden ",
|
||||
"login": "Anmelden",
|
||||
"access": " Zugriff",
|
||||
|
|
@ -157,7 +157,7 @@ Ls.deu = {
|
|||
"ut_u2ts": "Zuletzt geändert-Zeitstempel von$Ndeinem Dateisystem auf den Server übertragen\">📅",
|
||||
"ut_ow": "Existierende Dateien auf dem Server überschreiben?$N🛡️: Nie (generiert einen neuen Dateinamen)$N🕒: Überschreiben, wenn Server-Datei älter ist als meine$N♻️: Überschreiben, wenn der Dateiinhalt anders ist$N⏭️: Vorhandene Dateien immer überspringen",
|
||||
"ut_mt": "Andere Dateien während des Uploads hashen$N$Nsolltest du deaktivieren, falls deine CPU oder Festplatte zum Flaschenhals werden könnte",
|
||||
"ut_ask": 'Vor dem Upload nach Bestätigung fragen">💭',
|
||||
"ut_ask": 'Vor dem Upload nach Bestätigung fragen',
|
||||
"ut_pot": "Verbessert Upload-Geschwindigkeit$Nindem das UI weniger komplex gemacht wird",
|
||||
"ut_srch": "nicht wirklich hochladen, stattdessen prüfen ob Datei bereits auf dem Server existiert (scannt alle Ordner, die du lesen kannst)",
|
||||
"ut_par": "setze auf 0 zum Pausieren$N$Nerhöhe, wenn deine Verbindung langsam / instabil ist$N$lass auf 1 im LAN oder wenn die Festplatte auf dem Server ein Flaschenhals ist",
|
||||
|
|
@ -225,7 +225,7 @@ Ls.deu = {
|
|||
|
||||
"ct_grid": '田 Das Raster™',
|
||||
"ct_ttips": '◔ ◡ ◔">ℹ️ Tooltips',
|
||||
"ct_thumb": 'In Raster-Ansicht, zwischen Icons und Vorschau wechseln$NHotkey: T">🖼️ Vorschaubilder',
|
||||
"ct_thumb": 'Zwischen Icons und Vorschau wechseln$NHotkey: T">🖼️ Vorschaubilder',
|
||||
"ct_csel": 'Benutze STRG und UMSCHALT für Dateiauswahl in Raster-Ansicht">sel',
|
||||
"ct_dsel": 'Ziehauswahl in Raster-Ansicht verwenden">ziehen', //m
|
||||
"ct_dl": 'Beim Klick auf Dateien sie immer herunterladen (nicht einbetten)">dl',
|
||||
|
|
@ -288,9 +288,9 @@ Ls.deu = {
|
|||
"ml_drc": "Dynamic Range Compressor",
|
||||
"ml_ss": "Stille Überspringen", //m
|
||||
|
||||
"mt_loop": "Song wiederholen\">🔁",
|
||||
"mt_loop": "Song wiederholen",
|
||||
"mt_one": "Wiedergabe nach diesem Song beenden\">1️⃣",
|
||||
"mt_shuf": "Zufällige Wiedergabe im Ordner\">🔀",
|
||||
"mt_shuf": "Zufällige Wiedergabe im Ordner",
|
||||
"mt_aplay": "automatisch abspielen, wenn der Link, mit dem du auf den Server zugreifst, eine Titel-ID enthält$N$NDeaktivieren verhindert auch, dass die Seiten-URL bei Musikwiedergabe mit Titel-IDs aktualisiert wird, um Autoplay zu verhindern, falls diese Einstellungen verloren gehen, die URL aber bestehen bleibt\">a▶",
|
||||
"mt_preload": "nächsten Titel gegen Ende vorladen für nahtlose Wiedergabe\">Vorladen",
|
||||
"mt_prescan": "vor Ende des letzten Titels zum nächsten Ordner wechseln,$Ndamit der Browser die$NWiedergabe nicht stoppt\">Navigation",
|
||||
|
|
@ -305,7 +305,7 @@ Ls.deu = {
|
|||
"mt_follow": "den spielenden Titel im Blick behalten\">🎯",
|
||||
"mt_compact": "kompakte Steuerelemente\">⟎",
|
||||
"mt_uncache": "Cache leeren (probier das, wenn dein Browser$Neine defekte Kopie eines Titels zwischenspeichert und sich weigert, ihn abzuspielen)\">Cache leeren",
|
||||
"mt_mloop": "offenen Ordner wiederholen\">🔁 Schleife",
|
||||
"mt_mloop": "offenen Ordner wiederholen",
|
||||
"mt_mnext": "nächsten Ordner laden und fortfahren\">📂 nächster",
|
||||
"mt_mstop": "Wiedergabe beenden\">⏸ Stop",
|
||||
"mt_cflac": "FLAC / WAV zu {0} konvertierebn\">flac",
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ Ls.epo = {
|
|||
"tt": "Esperanto",
|
||||
|
||||
"cols": {
|
||||
"c": "ago-butonoj",
|
||||
"!": "ago-butonoj",
|
||||
"dur": "daŭro",
|
||||
"q": "kvalito / bitrapido",
|
||||
"Ac": "sonkodeko",
|
||||
|
|
@ -14,7 +14,7 @@ Ls.epo = {
|
|||
"Ahash": "kontrolsumo de aŭdio",
|
||||
"Vhash": "kontrolsumo de video",
|
||||
"Res": "distingivo",
|
||||
"T": "dosiertipo",
|
||||
"Ext": "dosiertipo",
|
||||
"aq": "kvalito / bitrapido de aŭdio",
|
||||
"vq": "kvalito / bitrapido de video",
|
||||
"pixfmt": "specimenado / strukturo de bilderoj",
|
||||
|
|
@ -107,9 +107,9 @@ Ls.epo = {
|
|||
"ht_and": " kaj ",
|
||||
|
||||
"goh": "stirpanelo",
|
||||
"gop": 'malsekva dosierujo">malsekva',
|
||||
"gou": 'supra dosierujo">supren',
|
||||
"gon": 'sekva dosierujo">sekva',
|
||||
"gop": 'malsekva dosierujo',
|
||||
"gou": 'supra dosierujo',
|
||||
"gon": 'sekva dosierujo',
|
||||
"logout": "Adiaŭi kiel ",
|
||||
"login": "Ensaluti",
|
||||
"access": " atingo",
|
||||
|
|
@ -157,7 +157,7 @@ Ls.epo = {
|
|||
"ut_u2ts": "kopii la tempon de lasta modifo$Nel via dosiersistemo al la servilo\">📅",
|
||||
"ut_ow": "ĉu anstataŭigi dosierojn ĉe la servilo?$N🛡️: neniam (dosiero estos alŝutita kun nova dosiernomo)$N🕒: anstataŭigi, se servila dosiero estas pli malnova ol via$N♻️: ĉiam anstataŭigi, se dosieroj estas malsamaj$N⏭️: senkondiĉe preterlasi ĉiujn ekzistantajn dosierojn",
|
||||
"ut_mt": "daŭri kalkuladon de kontrolsumoj por aliaj dosieroj dum alŝutado$N$Nmalŝaltinda, se via procesoro aŭ disko ne estas sufiĉe rapidaj",
|
||||
"ut_ask": 'peti konfirmon antaŭ komenco de alŝutado">💭',
|
||||
"ut_ask": 'peti konfirmon antaŭ komenco de alŝutado',
|
||||
"ut_pot": "plirapidigi alŝutadon por malrapidaj komputiloj$Nper malkomplikado de fasado",
|
||||
"ut_srch": "ne alŝuti ion ajn, nur kontroli, ke la dosieroj $N jam ekzistas ĉe la servilo (ĉiuj dosierujoj, kiuj vi povas legi, estos skanitaj)",
|
||||
"ut_par": "paŭzi alŝutadon per agordado kiel 0$N$Npligrandigi, se via konekto estas malrapida aŭ malfruema$N$Nagordi kiel 1, se la loka reto aŭ servila disko ne estas sufiĉe rapidaj",
|
||||
|
|
@ -225,7 +225,7 @@ Ls.epo = {
|
|||
|
||||
"ct_grid": '田 krado',
|
||||
"ct_ttips": '◔ ◡ ◔">ℹ️ ŝpruchelpiloj',
|
||||
"ct_thumb": 'dum krado-vido, baskuli montradon de simboloj aŭ bildetoj$NFulmoklavo: T">🖼️ bildetoj',
|
||||
"ct_thumb": 'baskuli montradon de simboloj aŭ bildetoj$NFulmoklavo: T">🖼️ bildetoj',
|
||||
"ct_csel": 'uzi STIR kaj MAJ por elekti dosierojn en krado-vido">elekto',
|
||||
"ct_dsel": 'uzi tren-elekton en krado-vido">treni',
|
||||
"ct_dl": 'devigi elŝuton (ne montri enkadre), kiam dosiero estas alklakita">elŝuti',
|
||||
|
|
@ -288,9 +288,9 @@ Ls.epo = {
|
|||
"ml_drc": "kompresoro",
|
||||
"ml_ss": "preterpasi silenton",
|
||||
|
||||
"mt_loop": "ripeti unu kanton\">🔁",
|
||||
"mt_loop": "ripeti unu kanton",
|
||||
"mt_one": "haltigi post unu kanto\">1️⃣",
|
||||
"mt_shuf": "ludi ĉiu dosierujo en hazarda ordo\">🔀",
|
||||
"mt_shuf": "ludi ĉiu dosierujo en hazarda ordo",
|
||||
"mt_aplay": "ludi aŭtomate, se ligilo enhavas identigilon de kanto$N$Nmalŝaltado de ĉi tiu agordo ankaŭ malŝaltas ĝisdatigadon de paĝ-adreso, por ke ludado ne rekomenciĝas, se la paĝo estos poste malfermita sen aliaj agordoj\">a▶",
|
||||
"mt_preload": "komenci ŝargadon de sekva kanto antaŭ la fino de la nuna, por kontinua ludado\">antaŭŝarg.",
|
||||
"mt_prescan": "eniri la sekvan dosierujon antaŭ la fino de la lasta kanto, $Npor ke la retumilo ne interrompis la ludadon\">nav",
|
||||
|
|
@ -305,7 +305,7 @@ Ls.epo = {
|
|||
"mt_follow": "rulumi la pagon, por ke la ludanta kanto restas videbla\">🎯",
|
||||
"mt_compact": "kompaktaj ruliloj\">⟎",
|
||||
"mt_uncache": "malplenigi kaŝmemoron (uzinda, se via retumilo kaŝmemoris$Ndifektitan kopion de kanto, kaj ne povas ludi ĝin)\">🗑️ kaŝmem.",
|
||||
"mt_mloop": "ripeti la nunan dosierujon\">🔁 ripeti",
|
||||
"mt_mloop": "ripeti la nunan dosierujon",
|
||||
"mt_mnext": "ŝargi la sekvan dosierujon kaj daŭrigi\">📂 sekva",
|
||||
"mt_mstop": "haltigi ludadon\">⏸ haltigi",
|
||||
"mt_cflac": "konverti el flac / wav al {0}\">flac",
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ Ls.fin = {
|
|||
"tt": "Suomi",
|
||||
|
||||
"cols": {
|
||||
"c": "toimintopainikkeet",
|
||||
"!": "toimintopainikkeet",
|
||||
"dur": "kesto",
|
||||
"q": "laatu / bittinopeus",
|
||||
"Ac": "äänikoodekki",
|
||||
|
|
@ -14,7 +14,7 @@ Ls.fin = {
|
|||
"Ahash": "äänen tarkistussumma",
|
||||
"Vhash": "videon tarkistussumma",
|
||||
"Res": "resoluutio",
|
||||
"T": "tiedostotyyppi",
|
||||
"Ext": "tiedostotyyppi",
|
||||
"aq": "äänenlaatu / bittinopeus",
|
||||
"vq": "kuvalaatu / bittinopeus",
|
||||
"pixfmt": "alinäytteistys / pikselirakenne",
|
||||
|
|
@ -33,7 +33,7 @@ Ls.fin = {
|
|||
["G", "vaihda lista/kuvanäkymään"],
|
||||
["T", "vaihda pienoiskuviin/kuvakkeisiin"],
|
||||
["⇧ A/D", "pienoiskuvien koko"],
|
||||
["ctrl-K", "poista valitut"],
|
||||
["ctrl-K/Del", "poista valitut"],
|
||||
["ctrl-X", "siirrä valitut leikepöydälle"],
|
||||
["ctrl-C", "kopioi valitut leikepöydälle"],
|
||||
["ctrl-V", "siirrä tai kopioi tähän"],
|
||||
|
|
@ -107,9 +107,9 @@ Ls.fin = {
|
|||
"ht_and": " ja ",
|
||||
|
||||
"goh": "hallintapaneeli",
|
||||
"gop": 'viereinen hakemisto">edell',
|
||||
"gou": 'ylempi hakemisto">ylös',
|
||||
"gon": 'seuraava hakemisto">seur',
|
||||
"gop": 'viereinen hakemisto',
|
||||
"gou": 'ylempi hakemisto',
|
||||
"gon": 'seuraava hakemisto',
|
||||
"logout": "Kirjaudu ulos ",
|
||||
"login": "Kirjaudu sisään",
|
||||
"access": " -oikeudet",
|
||||
|
|
@ -157,7 +157,7 @@ Ls.fin = {
|
|||
"ut_u2ts": "kopioi viimeksi muokattu aikaleima$Ntiedostojärjestelmästäsi palvelimelle\">📅",
|
||||
"ut_ow": "korvaa olemassa olevat tiedostot palvelimella?$N🛡️: ei koskaan (luo sen sijaan uuden tiedostonimen)$N🕒: korvaa jos palvelintiedosto on vanhempi kuin omasi$N♻️: korvaa aina jos tiedostot ovat erilaisia$N⏭️: ohita kaikki olemassa olevat tiedostot ehdottomasti",
|
||||
"ut_mt": "jatka muiden tiedostojen tiivisteiden laskemista latauksen aikana$N$Nkannattanee poistaa käytöstä, mikäli prosessori tai kovalevy on vanhempaa mallia",
|
||||
"ut_ask": 'kysy vahvistusta ennen latauksen aloittamista">💭',
|
||||
"ut_ask": 'kysy vahvistusta ennen latauksen aloittamista',
|
||||
"ut_pot": "paranna latausnopeutta hitailla laitteilla$Nvähentämällä käyttöliittymän monimutkaisuutta",
|
||||
"ut_srch": "lataamisen sijaan tarkista, ovatko tiedostot jo $N olemassa palvelimella (käy läpi kaikki hakemistot, joihin sinulla on read-oikeudet)",
|
||||
"ut_par": "keskeytä lataukset asettamalla se nollaan$N$Nnosta, jos yhteytesi on hidas tai viive on suuri$N$Npidä se 1:ssä lähiverkossa tai jos palvelimen kovalevy on pullonkaula",
|
||||
|
|
@ -225,7 +225,7 @@ Ls.fin = {
|
|||
|
||||
"ct_grid": '田 kuvanäkymä',
|
||||
"ct_ttips": '◔ ◡ ◔">ℹ️ vihjelaatikot',
|
||||
"ct_thumb": 'valitse kuvakkeiden / pienoiskuvien välillä kuvanäkymässä $NPikanäppäin: T">🖼️ pienoiskuvat',
|
||||
"ct_thumb": 'valitse kuvakkeiden / pienoiskuvien välillä $NPikanäppäin: T">🖼️ pienoiskuvat',
|
||||
"ct_csel": 'käytä CTRL ja SHIFT tiedostojen valintaan kuvanäkymässä">valitse',
|
||||
"ct_dsel": 'käytä aluevalintaa tiedostojen valintaan kuvanäkymässä">aluevalinta',
|
||||
"ct_dl": 'pakota lataus (älä näytä upotettuna), kun tiedostoa klikataan">dl',
|
||||
|
|
@ -288,9 +288,9 @@ Ls.fin = {
|
|||
"ml_drc": "dynaaminen alueen kompressori",
|
||||
"ml_ss": "ohita hiljaiset kohdat",
|
||||
|
||||
"mt_loop": "toista samaa kappaletta\">🔁",
|
||||
"mt_loop": "toista samaa kappaletta",
|
||||
"mt_one": "lopeta yhden toiston jälkeen\">1️⃣",
|
||||
"mt_shuf": "aktivoi satunnaistoisto\">🔀",
|
||||
"mt_shuf": "aktivoi satunnaistoisto",
|
||||
"mt_aplay": "automaattitoisto jos linkissä jolla pääsit palvelimelle oli kappale-ID$N$Ntämän poistaminen käytöstä pysäyttää myös sivun URL:n päivittämisen kappale-ID:lla musiikkia toistettaessa, estääksesi automaattitoiston jos nämä asetukset menetetään mutta URL säilyy\">a▶",
|
||||
"mt_preload": "aloita seuraavan kappaleen lataaminen lähellä loppua, mahdollistaen saumattoman toiston\">esilataus",
|
||||
"mt_prescan": "siirry seuraavaan hakemistoon ennen viimeisen kappaleen$Nloppumista, pitäen verkkoselaimen tyytyväisenä$Njotta se ei pysäytä toistoa\">nav",
|
||||
|
|
@ -305,7 +305,7 @@ Ls.fin = {
|
|||
"mt_follow": "pidä soiva kappale näkyvissä\">🎯",
|
||||
"mt_compact": "kompaktit säätimet\">⟎",
|
||||
"mt_uncache": "tyhjennä välimuisti (kokeile tätä jos selaimesi välimuistissa on$Nrikkinäinen kopio kappaleesta)\">uncache",
|
||||
"mt_mloop": "toista avoinna olevaa hakemistoa loputtomasti\">🔁 alkuun",
|
||||
"mt_mloop": "toista avoinna olevaa hakemistoa loputtomasti",
|
||||
"mt_mnext": "lataa seuraava hakemisto ja jatka\">📂 seuraava",
|
||||
"mt_mstop": "pysäytä toisto\">⏸ pysäytä",
|
||||
"mt_cflac": "muunna flac / wav {0}-muotoon\">flac",
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ Ls.fra = {
|
|||
"tt": "français",
|
||||
|
||||
"cols": {
|
||||
"c": "bouton d'action",
|
||||
"!": "bouton d'action",
|
||||
"dur": "durée",
|
||||
"q": "qualité / débit binaire",
|
||||
"Ac": "codec audio",
|
||||
|
|
@ -14,7 +14,7 @@ Ls.fra = {
|
|||
"Ahash": "somme de contrôle audio",
|
||||
"Vhash": "somme de contrôle vidéo",
|
||||
"Res": "résolution",
|
||||
"T": "type de fichier",
|
||||
"Ext": "type de fichier",
|
||||
"aq": "qualité audio / débit binaire",
|
||||
"vq": "qualité vidéo / débit binaire",
|
||||
"pixfmt": "sous-échantillonnage / structure de pixel",
|
||||
|
|
@ -33,7 +33,7 @@ Ls.fra = {
|
|||
["G", "activer vue en liste / vue en grille"],
|
||||
["T", "activer les miniatures / icônes"],
|
||||
["⇧ A/D", "taille des miniatures"],
|
||||
["ctrl-K", "suprimer la sélection"],
|
||||
["ctrl-K/Del", "suprimer la sélection"],
|
||||
["ctrl-X", "couper la sélection au presse-papier"],
|
||||
["ctrl-C", "copier la sélection au presse-papier"],
|
||||
["ctrl-V", "coller (déplacer/copier) ici"],
|
||||
|
|
@ -107,9 +107,9 @@ Ls.fra = {
|
|||
"ht_and": " et ",
|
||||
|
||||
"goh": "panneau-de-commande",
|
||||
"gop": 'élément "frère" précédent">précédent',
|
||||
"gou": 'dossier parent">haut',
|
||||
"gon": 'dossier suivant">suivant',
|
||||
"gop": 'élément "frère" précédent',
|
||||
"gou": 'dossier parent',
|
||||
"gon": 'dossier suivant',
|
||||
"logout": "Déconnexion ",
|
||||
"login": "Se connecter", //m
|
||||
"access": " accès",
|
||||
|
|
@ -157,7 +157,7 @@ Ls.fra = {
|
|||
"ut_u2ts": "copier l'horodatage de dernière modification$Nde votre système de fichiers vers le serveur\">📅",
|
||||
"ut_ow": "écraser les fichiers existants sur le serveur?$N🛡️: jamais (générera un nouveau nom de fichier à la place)$N🕒: écraser si le fichier sur le serveur est plus ancien que le vôtre$N♻️: toujours écraser si les fichiers sont différents$N⏭️: ignorer systématiquement tous les fichiers existants", //m
|
||||
"ut_mt": "continuer à calculer la somme de contrôle d'autres fichiers pendant le téléversement$N$Npeut-être désactiver si votre CPU ou HDD est la cause de perte de performances",
|
||||
"ut_ask": 'demander confirmation avant le début du téléversement">💭',
|
||||
"ut_ask": 'demander confirmation avant le début du téléversement',
|
||||
"ut_pot": "améliorer la vitesse de téléversement sur les appareils lents$Nen simplifiant l'interface utilisateur",
|
||||
"ut_srch": "ne pas réellement téléverser, mais vérifier si les fichiers existent déjà$N sur le serveur (scannera tous les dossiers que vous pouvez lire)",
|
||||
"ut_par": "mettre en pause les téléversements en le réglant sur 0$N$Naugmenter si votre connexion est lente / à forte latence$N$Nle garder à 1 sur le LAN ou si le HDD du serveur est un goulot d'étranglement",
|
||||
|
|
@ -225,7 +225,7 @@ Ls.fra = {
|
|||
|
||||
"ct_grid": '田 grille',
|
||||
"ct_ttips": '◔ ◡ ◔">ℹ️ infobulles',
|
||||
"ct_thumb": 'vue en grille, activer les icônes ou les miniatures$NHotkey: T">🖼️ minia',
|
||||
"ct_thumb": 'activer les icônes ou les miniatures$NHotkey: T">🖼️ minia',
|
||||
"ct_csel": 'utiliser CTRL et MAJ pour selectioner des fichiers en vue en grille">sel',
|
||||
"ct_dsel": 'utiliser la sélection par glisser en vue en grille">glisser', //m
|
||||
"ct_dl": 'forcer le téléchargement (ne pas afficher en ligne) lorsqu’un fichier est cliqué">dl', //m
|
||||
|
|
@ -288,9 +288,9 @@ Ls.fra = {
|
|||
"ml_drc": "compresseur de plage dynamique",
|
||||
"ml_ss": "ignorer les silences", //m
|
||||
|
||||
"mt_loop": "répéter en boucle une musique\">🔁",
|
||||
"mt_loop": "répéter en boucle une musique",
|
||||
"mt_one": "stopper après une musique\">1️⃣",
|
||||
"mt_shuf": "mélanger les musiques dans chaque dossiers\">🔀",
|
||||
"mt_shuf": "mélanger les musiques dans chaque dossiers",
|
||||
"mt_aplay": "jouer automatiquement si le lien utilisé pour accéder au serveur a un song-ID $N$N, désactiver cela arrêtera également la mise à jour de l'URL de la page avec les song-IDs lors de la lecture de la musique, pour éviter la lecture automatique si ces paramètres sont perdus mais que l'URL reste\">a▶",
|
||||
"mt_preload": "commencer à charger la prochaine chanson près de la fin pour une lecture sans interruption\">preload",
|
||||
"mt_prescan": "explorer le dossier suivant avant la dernière musique$Nne finisse, pour garder le navigateur content$Npour qu'il n'arrête pas la lecture\">nav",
|
||||
|
|
@ -305,7 +305,7 @@ Ls.fra = {
|
|||
"mt_follow": "garder la piste en cours défilée dans la vue\">🎯",
|
||||
"mt_compact": "contrôles compacts\">⟎",
|
||||
"mt_uncache": "effacer le cache (essayez ceci si votre navigateur a mis en cache$Nun copie défectueuse d'une chanson, ce qui empêche sa lecture)\">uncache",
|
||||
"mt_mloop": "lire en boucle le dossier ouvert\">🔁 loop",
|
||||
"mt_mloop": "lire en boucle le dossier ouvert",
|
||||
"mt_mnext": "charger le dossier suivant et continuer\">📂 next",
|
||||
"mt_mstop": "arrêter la lecture\">⏸ stop",
|
||||
"mt_cflac": "convertir flac / wav en {0}\">flac",
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ Ls.grc = {
|
|||
"tt": "Ελληνικά",
|
||||
|
||||
"cols": {
|
||||
"c": "κουμπιά ενεργειών",
|
||||
"!": "κουμπιά ενεργειών",
|
||||
"dur": "διάρκεια",
|
||||
"q": "ποιότητα / bitrate",
|
||||
"Ac": "κωδικοποιητής ήχου",
|
||||
|
|
@ -14,7 +14,7 @@ Ls.grc = {
|
|||
"Ahash": "checksum ήχου",
|
||||
"Vhash": "checksum βίντεο",
|
||||
"Res": "ανάλυση",
|
||||
"T": "τύπος αρχείου",
|
||||
"Ext": "τύπος αρχείου",
|
||||
"aq": "ποιότητα ήχου / bitrate",
|
||||
"vq": "ποιότητα βίντεο / bitrate",
|
||||
"pixfmt": "subsampling / δομή εικονοστοιχείων",
|
||||
|
|
@ -33,7 +33,7 @@ Ls.grc = {
|
|||
["G", "εναλλαγή λίστας / πλέγματος"],
|
||||
["T", "εναλλαγή μικρογραφιών / εικονιδίων"],
|
||||
["⇧ A/D", "μέγεθος μικρογραφιών"],
|
||||
["ctrl-K", "διαγραφή επιλεγμένων"],
|
||||
["ctrl-K/Del", "διαγραφή επιλεγμένων"],
|
||||
["ctrl-X", "αποκοπή επιλογής στο πρόχειρο"],
|
||||
["ctrl-C", "αντιγραφή επιλογής στο πρόχειρο"],
|
||||
["ctrl-V", "επικόλληση (μετακίνηση/αντιγραφή) εδώ"],
|
||||
|
|
@ -107,9 +107,9 @@ Ls.grc = {
|
|||
"ht_and": " και ",
|
||||
|
||||
"goh": "πίνακας ελέγχου",
|
||||
"gop": 'προηγούμενος φάκελος στο ίδιο επίπεδο">προηγούμενο',
|
||||
"gou": 'γονικός φάκελος">πάνω',
|
||||
"gon": 'επόμενος φάκελος">επόμενο',
|
||||
"gop": 'προηγούμενος φάκελος στο ίδιο επίπεδο',
|
||||
"gou": 'γονικός φάκελος',
|
||||
"gon": 'επόμενος φάκελος',
|
||||
"logout": "Αποσύνδεση ",
|
||||
"login": "Σύνδεση", //m
|
||||
"access": " πρόσβαση",
|
||||
|
|
@ -157,7 +157,7 @@ Ls.grc = {
|
|||
"ut_u2ts": "αντιγραφή της τελευταίας τροποποιημένης χρονοσφραγίδας αλλαγής$Nαπό το σύστημά σου στον server\">📅",
|
||||
"ut_ow": "αντικατάσταση σε ήδη υπάρχοντα αρχεία του server?$N🛡️: ποτέ (θα δημιουργηθεί νέο όνομα)$N🕒: αν το αρχείο του server είναι παλαιότερο$N♻️: πάντα να αντικαθίστανται αν διαφέρουν$N⏭️: παράλειψη όλων των υπαρχόντων αρχείων χωρίς όρους", //m
|
||||
"ut_mt": "συνέχιση υπολογισμού hash για άλλα αρχεία κατά τη μεταφόρτωση$N$Nαπενεργοποίησέ το αν η CPU ή ο δίσκος σου ζορίζονται",
|
||||
"ut_ask": 'επιβεβαίωση πριν ξεκινήσει η μεταφόρτωση">💭',
|
||||
"ut_ask": 'επιβεβαίωση πριν ξεκινήσει η μεταφόρτωση',
|
||||
"ut_pot": "βελτίωση ταχύτητας μεταφόρτωσης σε αργές συσκευές$Nμε απλοποίηση του UI",
|
||||
"ut_srch": "μην ανεβάζεις, έλεγξε αν τα αρχεία$Nυπάρχουν ήδη στον server (ψάχνει σε όλους τους φακέλους που έχεις πρόσβαση)",
|
||||
"ut_par": "κάνε παύση στις μεταφορτώσεις βάζοντάς το 0$N$Nαύξησε το αν έχεις αργή/μεγάλη καθυστέρηση σύνδεσης$N$Nκράτα το 1 σε LAN ή αν ο server έχει αργό δίσκο",
|
||||
|
|
@ -225,7 +225,7 @@ Ls.grc = {
|
|||
|
||||
"ct_grid": '田 το πλέγμα',
|
||||
"ct_ttips": '◔ ◡ ◔">ℹ️ συμβουλές εργαλείων',
|
||||
"ct_thumb": 'σε προβολή πλέγματος, εναλλαγή εικονιδίων ή μικρογραφιών$NΠλήκτρο συντόμευσης: T">🖼️ μικρογραφίες',
|
||||
"ct_thumb": 'εναλλαγή εικονιδίων ή μικρογραφιών$NΠλήκτρο συντόμευσης: T">🖼️ μικρογραφίες',
|
||||
"ct_csel": 'χρησιμοποίησε CTRL και SHIFT για επιλογή αρχείων σε προβολή πλέγματος">επιλογή',
|
||||
"ct_dsel": 'χρησιμοποίησε επιλογή με σύρσιμο σε προβολή πλέγματος">σύρσιμο', //m
|
||||
"ct_dl": 'εξαναγκασμός λήψης (να μην εμφανίζεται ενσωματωμένα) όταν γίνεται κλικ σε ένα αρχείο">dl', //m
|
||||
|
|
@ -288,9 +288,9 @@ Ls.grc = {
|
|||
"ml_drc": "συμπιεστής δυναμικής εμβέλειας",
|
||||
"ml_ss": "παράβλεψη σιωπής", //m
|
||||
|
||||
"mt_loop": "επανάληψη ενός τραγουδιού\">🔁",
|
||||
"mt_loop": "επανάληψη ενός τραγουδιού",
|
||||
"mt_one": "σταμάτα μετά από ένα τραγούδι\">1️⃣",
|
||||
"mt_shuf": "τυχαία σειρά τραγουδιών σε κάθε φάκελο\">🔀",
|
||||
"mt_shuf": "τυχαία σειρά τραγουδιών σε κάθε φάκελο",
|
||||
"mt_aplay": "αυτόματη αναπαραγωγή αν υπάρχει song-ID στη διεύθυνση που μπήκες στο διακομιστή$N$Nη απενεργοποίηση αυτού, σταματά το URL από το να ενημερώνεται με τα song-ID ενώ παίζει η μουσική για να αποτραπεί η αυτόματη αναπαραγωγή αν χαθούν αυτές οι ρυθμίσεις αλλά το URL παραμείνει το ίδιο\">a▶",
|
||||
"mt_preload": "ξεκίνα τη φόρτωση του επόμενου τραγουδιού κοντά στο τέλος για συνεχόμενη ακρόαση\">προφόρτωση",
|
||||
"mt_prescan": "πήγαινε στον επόμενο φάκελο πριν τελειώσει το τελευταίο τραγούδι$Nγια να μη σταματήσει το πρόγραμμα περιήγησης να παίζει μουσική\">nav",
|
||||
|
|
@ -305,7 +305,7 @@ Ls.grc = {
|
|||
"mt_follow": "κρατά το τρέχον κομμάτι ορατό κατά την κύλιση\">🎯",
|
||||
"mt_compact": "συμπαγή κουμπιά ελέγχου\">⟎",
|
||||
"mt_uncache": "καθάρισε την προσωρινή μνήμη (δοκίμασε αυτό αν ο browser έχει αποθηκεύσει$Nχαλασμένο αντίγραφο τραγουδιού και αρνείται να παίξει)\">εκκαθάριση",
|
||||
"mt_mloop": "τυχαία αναπαραγωγή στον ανοικτό φάκελο\">🔁 τυχαία αναπαραγωγή",
|
||||
"mt_mloop": "τυχαία αναπαραγωγή στον ανοικτό φάκελο",
|
||||
"mt_mnext": "φόρτωση επόμενου φακέλου και συνέχιση\">📂 επόμενο",
|
||||
"mt_mstop": "σταμάτησε την αναπαραγωγή\">⏸ σταμάτημα",
|
||||
"mt_cflac": "μετατροπή flac / wav σε {0}\">flac",
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ Ls.hun = {
|
|||
"tt": 'Magyar',
|
||||
|
||||
"cols": {
|
||||
"c": 'műveletek',
|
||||
"!": 'műveletek',
|
||||
"dur": 'hossz',
|
||||
"q": 'minőség / bitrate',
|
||||
"Ac": 'audió kodek',
|
||||
|
|
@ -11,7 +11,7 @@ Ls.hun = {
|
|||
"Ahash": 'audió hash',
|
||||
"Vhash": 'videó hash',
|
||||
"Res": 'felbontás',
|
||||
"T": 'típus',
|
||||
"Ext": 'típus',
|
||||
"aq": 'audió minőség / bitrate',
|
||||
"vq": 'videó minőség / bitrate',
|
||||
"pixfmt": 'színkódolás / pixel',
|
||||
|
|
@ -30,7 +30,7 @@ Ls.hun = {
|
|||
['G', 'lista / rács nézet'],
|
||||
['T', 'ikon / indexkép váltás'],
|
||||
['⇧ A/D', 'méret módosítása'],
|
||||
['ctrl-K', 'kijelöltek törlése'],
|
||||
['ctrl-K/Del', 'kijelöltek törlése'],
|
||||
['ctrl-X', 'kivágás vágólapra'],
|
||||
['ctrl-C', 'másolás vágólapra'],
|
||||
['ctrl-V', 'beillesztés ide'],
|
||||
|
|
@ -109,9 +109,9 @@ Ls.hun = {
|
|||
"ht_and": ' és ',
|
||||
|
||||
"goh": 'irányítópult',
|
||||
"gop": 'előző mappába">előző',
|
||||
"gou": 'szülőmappa">fel',
|
||||
"gon": 'következő mappába">következő',
|
||||
"gop": 'előző mappába',
|
||||
"gou": 'szülőmappa',
|
||||
"gon": 'következő mappába',
|
||||
"logout": 'Kilépés ',
|
||||
"login": 'Belépés',
|
||||
"access": ' hozzáférés',
|
||||
|
|
@ -159,7 +159,7 @@ Ls.hun = {
|
|||
"ut_u2ts": 'helyi dátumok$Nátvitele a szerverre">📅',
|
||||
"ut_ow": 'felülírás?$N🛡️: soha (új nevet ad)$N🕒: csak ha a tiéd újabb$N♻️: mindig, ha más a tartalom$N⏭️: létezőket kihagy',
|
||||
"ut_mt": 'háttérben hashelés feltöltés alatt$N$Nkapcsold ki, ha fagy a géped',
|
||||
"ut_ask": 'megerősítés feltöltés előtt">💭',
|
||||
"ut_ask": 'megerősítés feltöltés előtt',
|
||||
"ut_pot": 'feltöltés gyorsítása (egyszerűbb UI)',
|
||||
"ut_srch": 'csak létezés ellenőrzése$N(nem tölt fel semmit)',
|
||||
"ut_par": '0 = szünet$N$Nnöveld, ha lassú a net$N$NHDD limit vagy LAN esetén hagyd 1-en',
|
||||
|
|
@ -226,7 +226,7 @@ Ls.hun = {
|
|||
|
||||
"ct_grid": '田 rács nézet',
|
||||
"ct_ttips": '◔ ◡ ◔">ℹ️ segítő szövegek',
|
||||
"ct_thumb": 'rács nézetben ikonok/indexképek váltása$Ngyorsbillentyű: T">🖼️ képek',
|
||||
"ct_thumb": 'ikonok/indexképek váltása$Ngyorsbillentyű: T">🖼️ képek',
|
||||
"ct_csel": 'kijelölés CTRL és SHIFT gombokkal rács nézetben">kijelölés',
|
||||
"ct_dsel": 'kijelölés egérhúzással rács nézetben">húzás',
|
||||
"ct_dl": 'azonnali letöltés (beágyazás helyett)">letöltés',
|
||||
|
|
@ -289,9 +289,9 @@ Ls.hun = {
|
|||
"ml_drc": 'dinamikatartomány-tömörítő',
|
||||
"ml_ss": 'csönd átugrása',
|
||||
|
||||
"mt_loop": 'egy szám ismétlése">🔁',
|
||||
"mt_loop": 'egy szám ismétlése',
|
||||
"mt_one": 'leállás egy szám után">1️⃣',
|
||||
"mt_shuf": 'véletlenszerű lejátszás mappánként">🔀',
|
||||
"mt_shuf": 'véletlenszerű lejátszás mappánként',
|
||||
"mt_aplay": 'automatikus kezdés a link alapján$N$Nha kikapcsolod, a linkek sem fognak szám-azonosítót tartalmazni">a▶',
|
||||
"mt_preload": 'következő szám betöltése a végén (gapless)">preload',
|
||||
"mt_prescan": 'mappaváltás az utolsó szám vége előtt, hogy a böngésző ne álljon le">nav',
|
||||
|
|
@ -306,7 +306,7 @@ Ls.hun = {
|
|||
"mt_follow": 'fókuszban tartja az aktuális számot">🎯',
|
||||
"mt_compact": 'kompakt vezérlők">⟎',
|
||||
"mt_uncache": 'gyorsítótár ürítése (próbáld ezt, ha a böngésző hibás fájlt mentett el és nem játssza le)">uncache',
|
||||
"mt_mloop": 'mappa ismétlése">🔁 ismétlés',
|
||||
"mt_mloop": 'mappa ismétlése',
|
||||
"mt_mnext": 'következő mappa betöltése és folytatás">📂 tovább',
|
||||
"mt_mstop": 'stop">⏸ stop',
|
||||
"mt_cflac": 'flac / wav konvertálása ide: {0}">flac',
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ Ls.ita = {
|
|||
"tt": "Italiano",
|
||||
|
||||
"cols": {
|
||||
"c": "pulsanti azione",
|
||||
"!": "pulsanti azione",
|
||||
"dur": "durata",
|
||||
"q": "qualità / bitrate",
|
||||
"Ac": "codec audio",
|
||||
|
|
@ -14,7 +14,7 @@ Ls.ita = {
|
|||
"Ahash": "checksum audio",
|
||||
"Vhash": "checksum video",
|
||||
"Res": "risoluzione",
|
||||
"T": "tipo file",
|
||||
"Ext": "tipo file",
|
||||
"aq": "qualità audio / bitrate",
|
||||
"vq": "qualità video / bitrate",
|
||||
"pixfmt": "subsampling / struttura pixel",
|
||||
|
|
@ -33,7 +33,7 @@ Ls.ita = {
|
|||
["G", "alterna vista lista / griglia"],
|
||||
["T", "alterna miniature / icone"],
|
||||
["⇧ A/D", "dimensione miniature"],
|
||||
["ctrl-K", "elimina selezionati"],
|
||||
["ctrl-K/Del", "elimina selezionati"],
|
||||
["ctrl-X", "taglia selezione negli appunti"],
|
||||
["ctrl-C", "copia selezione negli appunti"],
|
||||
["ctrl-V", "incolla (sposta/copia) qui"],
|
||||
|
|
@ -107,9 +107,9 @@ Ls.ita = {
|
|||
"ht_and": " e ",
|
||||
|
||||
"goh": "control-panel",
|
||||
"gop": 'cartella sorella precedente">prec',
|
||||
"gou": 'cartella genitore">su',
|
||||
"gon": 'prossima cartella">succ',
|
||||
"gop": 'cartella sorella precedente',
|
||||
"gou": 'cartella genitore',
|
||||
"gon": 'prossima cartella',
|
||||
"logout": "Logout ",
|
||||
"login": "Accedi", //m
|
||||
"access": " accesso",
|
||||
|
|
@ -157,7 +157,7 @@ Ls.ita = {
|
|||
"ut_u2ts": "copia il timestamp di ultima modifica$Ndal tuo filesystem al server\">📅",
|
||||
"ut_ow": "sovrascrivere file esistenti sul server?$N🛡️: mai (genererà un nuovo nome file)$N🕒: sovrascrivi se il file del server è più vecchio del tuo$N♻️: sovrascrivi sempre se i file sono diversi$N⏭️: ignora sempre tutti i file esistenti", //m
|
||||
"ut_mt": "continua l'hashing di altri file durante il caricamento$N$NProva a disabilitare se la tua CPU o HDD è un collo di bottiglia",
|
||||
"ut_ask": 'chiedi conferma prima che inizi il caricamento">💭',
|
||||
"ut_ask": 'chiedi conferma prima che inizi il caricamento',
|
||||
"ut_pot": "migliora la velocità di caricamento su dispositivi lenti$Nrendendo l'interfaccia meno complessa",
|
||||
"ut_srch": "non caricare realmente, invece controlla se i file esistono già $N sul server (scansionerà tutte le cartelle che puoi leggere)",
|
||||
"ut_par": "metti in pausa i caricamenti impostandolo a 0$N$NAumenta se la tua connessione è lenta / alta latenza$N$NMantienilo a 1 su LAN o se l'HDD del server è un collo di bottiglia",
|
||||
|
|
@ -225,7 +225,7 @@ Ls.ita = {
|
|||
|
||||
"ct_grid": '田 griglia',
|
||||
"ct_ttips": '◔ ◡ ◔">ℹ️ tooltip',
|
||||
"ct_thumb": 'nella vista griglia, alterna icone o miniature$NTasto rapido: T">🖼️ miniature',
|
||||
"ct_thumb": 'alterna icone o miniature$NTasto rapido: T">🖼️ miniature',
|
||||
"ct_csel": 'usa CTRL e SHIFT per la selezione file nella vista griglia">sel',
|
||||
"ct_dsel": 'usa la selezione tramite trascinamento nella vista griglia">trascina', //m
|
||||
"ct_dl": 'forza il download (non visualizzare inline) quando si clicca su un file">dl', //m
|
||||
|
|
@ -288,9 +288,9 @@ Ls.ita = {
|
|||
"ml_drc": "compressore gamma dinamica",
|
||||
"ml_ss": "salta i silenzi", //m
|
||||
|
||||
"mt_loop": "loop/ripeti una canzone\">🔁",
|
||||
"mt_loop": "loop/ripeti una canzone",
|
||||
"mt_one": "fermati dopo una canzone\">1️⃣",
|
||||
"mt_shuf": "mescola le canzoni in ogni cartella\">🔀",
|
||||
"mt_shuf": "mescola le canzoni in ogni cartella",
|
||||
"mt_aplay": "autoplay se c'è un song-ID nel link che hai cliccato per accedere al server$N$NDisabilitando questo fermerà anche l'aggiornamento dell'URL della pagina con song-ID quando riproduci musica, per prevenire autoplay se queste impostazioni vengono perse ma l'URL rimane\">a▶",
|
||||
"mt_preload": "inizia a caricare la prossima canzone verso la fine per riproduzione senza interruzioni\">preload",
|
||||
"mt_prescan": "vai alla prossima cartella prima che finisca l'ultima canzone$Nmantenendo felice il browser web$Ncosì non si ferma la riproduzione\">nav",
|
||||
|
|
@ -305,7 +305,7 @@ Ls.ita = {
|
|||
"mt_follow": "mantieni la traccia in riproduzione scorrevole nella vista\">🎯",
|
||||
"mt_compact": "controlli compatti\">⟎",
|
||||
"mt_uncache": "pulisci cache (prova ad attivare se il tuo browser ha messo in cache$Nuna copia rotta di una canzone e si rifiuta di riprodurla)\">uncache",
|
||||
"mt_mloop": "loop della cartella aperta\">🔁 loop",
|
||||
"mt_mloop": "loop della cartella aperta",
|
||||
"mt_mnext": "carica la prossima cartella e continua\">📂 succ",
|
||||
"mt_mstop": "ferma riproduzione\">⏸ stop",
|
||||
"mt_cflac": "converti flac / wav in {0}\">flac",
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ Ls.jpn = {
|
|||
"tt": "日本語",
|
||||
|
||||
"cols": {
|
||||
"c": "アクションボタン",
|
||||
"!": "アクションボタン",
|
||||
"dur": "間隔",
|
||||
"q": "品質 / ビットレート",
|
||||
"Ac": "オーディオコーデック",
|
||||
|
|
@ -14,7 +14,7 @@ Ls.jpn = {
|
|||
"Ahash": "オーディオチェックサム",
|
||||
"Vhash": "ビデオチェックサム",
|
||||
"Res": "解像度",
|
||||
"T": "ファイル形式",
|
||||
"Ext": "ファイル形式",
|
||||
"aq": "オーディオ 品質 / ビットレート",
|
||||
"vq": "ビデオ 品質 / ビットレート",
|
||||
"pixfmt": "サブサンプリング / ピクセル構造",
|
||||
|
|
@ -33,7 +33,7 @@ Ls.jpn = {
|
|||
["G", "リスト / グリッド表示を切り替える"],
|
||||
["T", "サムネイル / アイコンを切り替える"],
|
||||
["⇧ A/D", "サムネイルサイズ"],
|
||||
["ctrl-K", "選択した項目を削除"],
|
||||
["ctrl-K/Del", "選択した項目を削除"],
|
||||
["ctrl-X", "選択範囲をクリップボードに切り取る"],
|
||||
["ctrl-C", "選択範囲をクリップボードにコピー"],
|
||||
["ctrl-V", "ここに貼り付け(移動/コピー)"],
|
||||
|
|
@ -107,9 +107,9 @@ Ls.jpn = {
|
|||
"ht_and": " と ",
|
||||
|
||||
"goh": "コントロールパネル",
|
||||
"gop": '前のフォルダ">prev',
|
||||
"gou": '親フォルダ">up',
|
||||
"gon": '次のフォルダ">next',
|
||||
"gop": '前のフォルダ',
|
||||
"gou": '親フォルダ',
|
||||
"gon": '次のフォルダ',
|
||||
"logout": "ログアウト ",
|
||||
"login": "ログイン",
|
||||
"access": " アクセス",
|
||||
|
|
@ -157,7 +157,7 @@ Ls.jpn = {
|
|||
"ut_u2ts": "最終更新日時のタイムスタンプ$Nファイルシステムからサーバーへコピーする\">📅",
|
||||
"ut_ow": "サーバー上の既存のファイルを上書きする?$N🛡️: しない(代わりに新しいファイル名を生成する)$N🕒: サーバーのファイルが古い場合は上書きする$N♻️: ファイルが異なる場合は常に上書きする$N⏭️: 既存のファイルをすべて無条件にスキップする",
|
||||
"ut_mt": "アップロード中に他のファイルのハッシュを継続する$N$NCPUやHDDがボトルネックになっている場合は無効にしてください",
|
||||
"ut_ask": 'aアップロードを開始する前に確認を求める">💭',
|
||||
"ut_ask": 'aアップロードを開始する前に確認を求める',
|
||||
"ut_pot": "UIをシンプルにすることで$N低速デバイスでのアップロード速度を向上させる",
|
||||
"ut_srch": "実際にはアップロードせず、代わりにファイルが既にアップロードされているかどうかを確認 $N すでにサーバー上に存在(読み取り可能なすべてのフォルダをスキャン)",
|
||||
"ut_par": "0に設定するとアップロードを一時停止$N$N接続が遅い / 遅延が大きい場合は増やす$N$NLANやサーバーのHDDがボトルネックになっている場合は1にする",
|
||||
|
|
@ -225,7 +225,7 @@ Ls.jpn = {
|
|||
|
||||
"ct_grid": '田 グリッド',
|
||||
"ct_ttips": '◔ ◡ ◔">ℹ️ ツールチップ',
|
||||
"ct_thumb": 'グリッドビューではアイコンまたはサムネイルを切り替える$Nホットキー: T">🖼️ サムネイル',
|
||||
"ct_thumb": 'アイコンまたはサムネイルを切り替える$Nホットキー: T">🖼️ サムネイル',
|
||||
"ct_csel": 'グリッドビューでファイルを選択するにはCtrlとShiftを使用する。">選択',
|
||||
"ct_dsel": 'グリッドビューでドラッグ選択を使用する。">ドラッグ', //m
|
||||
"ct_dl": 'ファイルをクリックしたときに強制的にダウンロードする(インラインで表示しない)">dl',
|
||||
|
|
@ -288,9 +288,9 @@ Ls.jpn = {
|
|||
"ml_drc": "ダイナミックレンジコンプレッサー",
|
||||
"ml_ss": "無音をスキップ", //m
|
||||
|
||||
"mt_loop": "1曲をループ/リピート再生\">🔁",
|
||||
"mt_loop": "1曲をループ/リピート再生",
|
||||
"mt_one": "1曲で止める\">1️⃣",
|
||||
"mt_shuf": "各フォルダ内の曲をシャッフルする\">🔀",
|
||||
"mt_shuf": "各フォルダ内の曲をシャッフルする",
|
||||
"mt_aplay": "サーバーにアクセスするためにクリックしたリンクに曲IDがある場合は自動再生されます$N$Nこれを無効にすると、音楽を再生するときにページのURLが曲IDで更新されなくなります。これにより設定が失われてもURLが残っている場合の自動再生が防止されます。\">a▶",
|
||||
"mt_preload": "ギャップレス再生のために曲の終わり近くに次の曲の読み込みを開始する\">preload",
|
||||
"mt_prescan": "最後の曲が終了する前に次のフォルダへ移動し$Nウェブブラウザが$N再生を停止しないようにする\">nav",
|
||||
|
|
@ -305,7 +305,7 @@ Ls.jpn = {
|
|||
"mt_follow": "再生中の曲をスクロールして表示したままにする\">🎯",
|
||||
"mt_compact": "コントローラーを小さく\">⟎",
|
||||
"mt_uncache": "キャッシュクリア (ブラウザが破損した曲のコピーをキャッシュしているために$N再生できない場合はこれを試してください)\">uncache",
|
||||
"mt_mloop": "開いているフォルダをループ\">🔁 ループ",
|
||||
"mt_mloop": "開いているフォルダをループ",
|
||||
"mt_mnext": "次のフォルダを読み込んで続行\">📂 次",
|
||||
"mt_mstop": "再生を停止\">⏸ 停止",
|
||||
"mt_cflac": "flac / wavを{0}に変換\">flac",
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ Ls.kor = {
|
|||
"tt": "한국어",
|
||||
|
||||
"cols": {
|
||||
"c": "작업 버튼",
|
||||
"!": "작업 버튼",
|
||||
"dur": "길이",
|
||||
"q": "품질/비트레이트",
|
||||
"Ac": "오디오 코덱",
|
||||
|
|
@ -14,7 +14,7 @@ Ls.kor = {
|
|||
"Ahash": "오디오 체크섬",
|
||||
"Vhash": "비디오 체크섬",
|
||||
"Res": "해상도",
|
||||
"T": "파일 유형",
|
||||
"Ext": "파일 유형",
|
||||
"aq": "오디오 품질/비트레이트",
|
||||
"vq": "비디오 품질/비트레이트",
|
||||
"pixfmt": "서브샘플링/픽셀 구조",
|
||||
|
|
@ -33,7 +33,7 @@ Ls.kor = {
|
|||
["G", "목록/그리드 보기 전환"],
|
||||
["T", "썸네일/아이콘 전환"],
|
||||
["⇧ A/D", "썸네일 이미지 크기"],
|
||||
["ctrl-K", "선택 항목 삭제"],
|
||||
["ctrl-K/Del", "선택 항목 삭제"],
|
||||
["ctrl-X", "선택 항목 잘라내기"],
|
||||
["ctrl-C", "선택 항목 복사"],
|
||||
["ctrl-V", "여기에 붙여넣기 (이동/복사)"],
|
||||
|
|
@ -107,9 +107,9 @@ Ls.kor = {
|
|||
"ht_and": " ",
|
||||
|
||||
"goh": "제어판",
|
||||
"gop": '이전 형제 폴더">이전',
|
||||
"gou": '상위 폴더">위로',
|
||||
"gon": '다음 폴더">다음',
|
||||
"gop": '이전 형제 폴더',
|
||||
"gou": '상위 폴더',
|
||||
"gon": '다음 폴더',
|
||||
"logout": "로그아웃 ",
|
||||
"login": "로그인", //m
|
||||
"access": " 액세스",
|
||||
|
|
@ -157,7 +157,7 @@ Ls.kor = {
|
|||
"ut_u2ts": "사용자 파일 시스템의 마지막 수정 타임스탬프를$N서버에 복사\">📅",
|
||||
"ut_ow": "서버에 있는 기존 파일을 덮어쓸까요?$N🛡️: 안 함 (대신 새 파일 이름 생성)$N🕒: 서버 파일이 더 오래된 경우 덮어쓰기$N♻️: 파일이 다르면 항상 덮어쓰기$N⏭️: 기존 파일을 모두 무조건 건너뜀", //m
|
||||
"ut_mt": "업로드 중 다른 파일 해싱 계속하기$N$NCPU 또는 HDD가 병목 현상을 일으키는 경우 비활성화하세요",
|
||||
"ut_ask": '업로드 시작 전 확인 요청">💭',
|
||||
"ut_ask": '업로드 시작 전 확인 요청',
|
||||
"ut_pot": "느린 기기에서 UI를 단순화하여$N업로드 속도 향상",
|
||||
"ut_srch": "실제로 업로드하는 대신, 파일이 이미 서버에 있는지 확인합니다$N(읽을 수 있는 모든 폴더를 스캔합니다)",
|
||||
"ut_par": "0으로 설정하여 업로드 일시정지$N$N연결이 느리거나 지연 시간이 길면 늘리세요$N$NLAN 환경이거나 서버 HDD가 병목 현상을 일으키면 1로 유지하세요",
|
||||
|
|
@ -225,7 +225,7 @@ Ls.kor = {
|
|||
|
||||
"ct_grid": "田 그리드",
|
||||
"ct_ttips": '◔ ◡ ◔">ℹ️ 도움말',
|
||||
"ct_thumb": '그리드 보기에서 아이콘 또는 미리보기 이미지 전환$N단축키: T">🖼️ 미리보기',
|
||||
"ct_thumb": '아이콘 또는 미리보기 이미지 전환$N단축키: T">🖼️ 미리보기',
|
||||
"ct_csel": '그리드 보기에서 CTRL과 SHIFT를 사용하여 파일 선택">선택',
|
||||
"ct_dsel": '그리드 보기에서 드래그 선택 사용">드래그', //m
|
||||
"ct_dl": '파일을 클릭하면 다운로드를 강제로 수행 (인라인으로 표시하지 않음)">dl', //m
|
||||
|
|
@ -288,9 +288,9 @@ Ls.kor = {
|
|||
"ml_drc": "다이내믹 레인지 압축기",
|
||||
"ml_ss": "무음 건너뛰기", //m
|
||||
|
||||
"mt_loop": "한 곡 반복 재생\">🔁",
|
||||
"mt_loop": "한 곡 반복 재생",
|
||||
"mt_one": "한 곡 재생 후 중지\">1️⃣",
|
||||
"mt_shuf": "각 폴더의 곡을 무작위 재생\">🔀",
|
||||
"mt_shuf": "각 폴더의 곡을 무작위 재생",
|
||||
"mt_aplay": "서버에 접속한 링크에 곡 ID가 있으면 자동 재생$N$N이것을 비활성화하면 음악 재생 시 페이지 URL이 곡 ID로 업데이트되지 않아, 이 설정이 손실되고 URL이 남아있을 경우 자동 재생되는 것을 방지합니다.\">a▶",
|
||||
"mt_preload": "끊김 없는 재생을 위해 다음 곡을 미리 불러오기 시작\">미리로드",
|
||||
"mt_prescan": "마지막 곡이 끝나기 전에 다음 폴더로 이동하여$N웹브라우저가 재생을 멈추지 않도록 합니다.\">탐색",
|
||||
|
|
@ -305,7 +305,7 @@ Ls.kor = {
|
|||
"mt_follow": "재생 중인 트랙이 보이도록 스크롤 유지\">🎯",
|
||||
"mt_compact": "컴팩트 컨트롤\">⟎",
|
||||
"mt_uncache": "캐시 지우기 (브라우저가 곡의 깨진 사본을 캐시하여$N재생이 안되는 경우 시도해보세요)\">캐시삭제",
|
||||
"mt_mloop": "열린 폴더 반복\">🔁 반복",
|
||||
"mt_mloop": "열린 폴더 반복",
|
||||
"mt_mnext": "다음 폴더 불러오고 계속\">📂 다음",
|
||||
"mt_mstop": "재생 중지\">⏸ 중지",
|
||||
"mt_cflac": "flac/wav를 {0}로 변환\">flac",
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ Ls.nld = {
|
|||
"tt": "Nederlands",
|
||||
|
||||
"cols": {
|
||||
"c": "Action knoppen",
|
||||
"!": "Action knoppen",
|
||||
"dur": "Duratie",
|
||||
"q": "Kwaliteit / bitrate",
|
||||
"Ac": "Audio codec",
|
||||
|
|
@ -14,7 +14,7 @@ Ls.nld = {
|
|||
"Ahash": "Audio checksum",
|
||||
"Vhash": "Video checksum",
|
||||
"Res": "Resolution",
|
||||
"T": "Bestandstype",
|
||||
"Ext": "Bestandstype",
|
||||
"aq": "Audio kwaliteit / bitrate",
|
||||
"vq": "Video kwaliteit / bitrate",
|
||||
"pixfmt": "Subsampling / pixel structure",
|
||||
|
|
@ -33,7 +33,7 @@ Ls.nld = {
|
|||
["G", "Verwissel tussen list / grid weergave"],
|
||||
["T", "Verwissel tussen miniaturen / iconen"],
|
||||
["⇧ A/D", "Thumbnail formaat"],
|
||||
["ctrl-K", "Verwijder geselecteerde"],
|
||||
["ctrl-K/Del", "Verwijder geselecteerde"],
|
||||
["ctrl-X", "Knip selectie naar klembord"],
|
||||
["ctrl-C", "Kopieer selectie naar klembord"],
|
||||
["ctrl-V", "Hier plakken (verplaatsen/kopieëren)"],
|
||||
|
|
@ -107,9 +107,9 @@ Ls.nld = {
|
|||
"ht_and": " en ",
|
||||
|
||||
"goh": "Beheer-paneel",
|
||||
"gop": 'Vorige map">Vorige',
|
||||
"gou": 'Bovenligende map">Omhoog',
|
||||
"gon": 'Volgende map">Volgende',
|
||||
"gop": 'Vorige map',
|
||||
"gou": 'Bovenligende map',
|
||||
"gon": 'Volgende map',
|
||||
"logout": "Uitloggen ",
|
||||
"login": "Inloggen", //m
|
||||
"access": " Toegang",
|
||||
|
|
@ -157,7 +157,7 @@ Ls.nld = {
|
|||
"ut_u2ts": "Kopieer de laatste-gewijzigde tijdstamp$Nvan je bestandsysteem naar de server\">📅",
|
||||
"ut_ow": "Overschrijf bestaande bestanden op de server?$N🛡️: nooit (zal in plaats daarvan een nieuwe bestandsnaam genereren)$N🕒: overschrijven als de server-bestand ouder is dan het geüploade bestand$N♻️: altijd overschrijven als de bestanden verschillend zijn$N⏭️: alle bestaande bestanden onvoorwaardelijk overslaan", //m
|
||||
"ut_mt": "Ga door met hashen van andere bestanden tijdens het uploaden$N$Moet je misschien uitschakelen als je CPU of HDD het niet aan kan",
|
||||
"ut_ask": 'Vraag voor bevestiging voordat het uploaden start">💭',
|
||||
"ut_ask": 'Vraag voor bevestiging voordat het uploaden start',
|
||||
"ut_pot": "Verbeter de uploadsnelheid voor langzame apparaten$Ndoor de interface minder complex te maken",
|
||||
"ut_srch": "Niet uploaden, maar check of de bestanden als op de server bestaan$N (checkt alle mappen die waar jij toegang op hebt)",
|
||||
"ut_par": "Pauzeer bij zetten het op 0$N$Nverhoog als je verbinding traag is$N$Nhou het op 1 als je netwerk of server HDD het niet aankan",
|
||||
|
|
@ -225,7 +225,7 @@ Ls.nld = {
|
|||
|
||||
"ct_grid": '田 grid',
|
||||
"ct_ttips": '◔ ◡ ◔">ℹ️ tooltips',
|
||||
"ct_thumb": 'In grid-overzicht, wissel tussen iconen of thumbnails$NHotkey: T">🖼️ thumbs',
|
||||
"ct_thumb": 'wissel tussen iconen of thumbnails$NHotkey: T">🖼️ thumbs',
|
||||
"ct_csel": 'Gebruik CTRL en SHIFT voor de bestand selectie in grid-overzicht>sel',
|
||||
"ct_dsel": 'Gebruik slepen om te selecteren in grid-overzicht>slepen', //m
|
||||
"ct_dl": 'download afdwingen (niet inline weergeven) wanneer op een bestand wordt geklikt">dl', //m
|
||||
|
|
@ -288,9 +288,9 @@ Ls.nld = {
|
|||
"ml_drc": "Dynamisch bereikcompressor",
|
||||
"ml_ss": "Stiltes overslaan", //m
|
||||
|
||||
"mt_loop": "Loop/herhaal een nummer\">🔁",
|
||||
"mt_loop": "Loop/herhaal een nummer",
|
||||
"mt_one": "Stop na een nummer\">1️⃣",
|
||||
"mt_shuf": "Shuffle alle muziek in alle mappen\">🔀",
|
||||
"mt_shuf": "Shuffle alle muziek in alle mappen",
|
||||
"mt_aplay": "Autoplay als er een song-ID staat in de link waarop je hebt geklikt om naar de server te gaan$N$NAls u dit uitschakelt, wordt de pagina-URL ook niet meer bijgewerkt met nummer-ID's tijdens het afspelen van muziek. Dit voorkomt automatisch afspelen als deze instellingen verloren gaan, maar de URL behouden blijft.\">a▶",
|
||||
"mt_preload": "Begin het laden van de volgende nummer vlak voordat de huidige nummer het einde bereikt voor gapless playback\">preload",
|
||||
"mt_prescan": "Ga naar de volgende map voordat de laatste nummer eindigd$NMaakt de webbrower blij$NZo het afspelen van muziek niet gestopt word\">nav",
|
||||
|
|
@ -305,7 +305,7 @@ Ls.nld = {
|
|||
"mt_follow": "Het afgespeelde nummer in beeld houden\">🎯",
|
||||
"mt_compact": "Compacte bedieningselementen\">⟎",
|
||||
"mt_uncache": "Cache wissen (Probeer dit als uw browser een kapotte kopie van een nummer heeft gecached, waardoor het niet afgespeeld kan worden)\">uncache",
|
||||
"mt_mloop": "De open map herhalen\">🔁 loop",
|
||||
"mt_mloop": "De open map herhalen",
|
||||
"mt_mnext": "Laad de volgende map en ga verder\">📂 next",
|
||||
"mt_mstop": "Stoppen met afspelen\">⏸ stop",
|
||||
"mt_cflac": "flac / wav omzetten naar {0}\">flac",
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ Ls.nno = {
|
|||
"tt": "Nynorsk",
|
||||
|
||||
"cols": {
|
||||
"c": "handlingsknappar",
|
||||
"!": "handlingsknappar",
|
||||
"dur": "varigheit",
|
||||
"q": "kvalitet / bitrate",
|
||||
"Ac": "lydformat",
|
||||
|
|
@ -11,7 +11,7 @@ Ls.nno = {
|
|||
"Ahash": "lydkontrollsum",
|
||||
"Vhash": "videokontrollsum",
|
||||
"Res": "oppløysing",
|
||||
"T": "filtype",
|
||||
"Ext": "filtype",
|
||||
"aq": "lydkvalitet / bitrate",
|
||||
"vq": "videokvalitet / bitrate",
|
||||
"pixfmt": "fargekoding / detaljnivå",
|
||||
|
|
@ -30,7 +30,7 @@ Ls.nno = {
|
|||
["G", "listevisning eller ikon"],
|
||||
["T", "miniatyrbilder på/av"],
|
||||
["⇧ A/D", "ikonstorleik"],
|
||||
["ctrl-K", "slett valde"],
|
||||
["ctrl-K/Del", "slett valde"],
|
||||
["ctrl-X", "klipp ut valde"],
|
||||
["ctrl-C", "kopiér åt utklippstavle"],
|
||||
["ctrl-V", "lim inn (flytt/kopiér)"],
|
||||
|
|
@ -104,9 +104,9 @@ Ls.nno = {
|
|||
"ht_and": " og ",
|
||||
|
||||
"goh": "kontrollpanel",
|
||||
"gop": 'navigér åt mappa før den her">forr.',
|
||||
"gou": 'navigér eitt nivå opp">opp',
|
||||
"gon": 'navigér åt mappa etter den her">neste',
|
||||
"gop": 'navigér åt mappa før den her',
|
||||
"gou": 'navigér eitt nivå opp',
|
||||
"gon": 'navigér åt mappa etter den her',
|
||||
"logout": "Logg ut ",
|
||||
"login": "Logg inn",
|
||||
"access": " åtgang",
|
||||
|
|
@ -154,7 +154,7 @@ Ls.nno = {
|
|||
"ut_u2ts": "gje fila på serveren same$Ntidsstempel som lokalt hos deg\">📅",
|
||||
"ut_ow": "overskrive eksisterande filer på serveren?$N🛡️: aldri (finn på eit nytt filnamn i staden for)$N🕒: overskriv viss fila åt serveren er eldre$N♻️: alltid, gitt at innhaldet er annleis$N⏭️: hopp over alle eksisterande filer",
|
||||
"ut_mt": "fortsett å synfare køa mens opplasting føregår$N$Nskru denne av dersom du har ein$Ntreig prosessor eller harddisk",
|
||||
"ut_ask": 'bekreft filutvalg før opplasting startar">💭',
|
||||
"ut_ask": 'bekreft filutvalg før opplasting startar',
|
||||
"ut_pot": "forbetre ytinga på treige einheiter ved å$Nforenkle brukergrensesnittet",
|
||||
"ut_srch": "gjer eit søk i staden for å laste opp --$Nleitar gjennom alle mappane du har lov åt å sjå",
|
||||
"ut_par": "sett åt 0 for å midlertidig stoppe opplasting$N$Nhøge verdier (4 eller 8) kan gje betre yting,$Nspesielt på treige internettlinjer$N$Nbør ikkje vere høgare enn 1 på LAN$Neller viss serveren sin harddisk er treig",
|
||||
|
|
@ -285,9 +285,9 @@ Ls.nno = {
|
|||
"ml_drc": "compressor (volumutjevning)",
|
||||
"ml_ss": "spol forbi stillheit",
|
||||
|
||||
"mt_loop": "spel den same songen om og om igjen\">🔁",
|
||||
"mt_loop": "spel den same songen om og om igjen",
|
||||
"mt_one": "spel kun éin song\">1️⃣",
|
||||
"mt_shuf": "songane i kvar mappe$Nspelast i tilfeldig rekkefølge\">🔀",
|
||||
"mt_shuf": "songane i kvar mappe$Nspelast i tilfeldig rekkefølge",
|
||||
"mt_aplay": "prøv å starte avspeling viss linken du trykte på for å åpne nettsida inneheld ein song-ID$N$Nviss denne deaktiverast så vil heller ikkje nettside-URL'en bli oppdatert med song-ID'er når musikk spelast, i tilfelle innstillingane skulle gå tapt og nettsida lastast på ny\">a▶",
|
||||
"mt_preload": "hent ned litt av neste song i forkant,$Nslik at pausa i overgangen blir mindre\">forsyn",
|
||||
"mt_prescan": "ved behov, bla åt neste mappe$Nslik at nettlesaren lar oss$Nfortsetja å spele musikk\">bla",
|
||||
|
|
@ -302,7 +302,7 @@ Ls.nno = {
|
|||
"mt_follow": "bla slik at songen som spelast alltid er synleg\">🎯",
|
||||
"mt_compact": "tettpakka spelarpanel\">⟎",
|
||||
"mt_uncache": "prøv denne viss ein song ikkje spelar riktig\">oppfrisk",
|
||||
"mt_mloop": "repetér heile mappa\">🔁 gjenta",
|
||||
"mt_mloop": "repetér heile mappa",
|
||||
"mt_mnext": "hopp åt neste mappe og fortsett\">📂 neste",
|
||||
"mt_mstop": "stopp avspeling\">⏸ stopp",
|
||||
"mt_cflac": "konvertér flac / wav-filer åt {0}\">flac",
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ Ls.nor = {
|
|||
"tt": "Norsk",
|
||||
|
||||
"cols": {
|
||||
"c": "handlingsknapper",
|
||||
"!": "handlingsknapper",
|
||||
"dur": "varighet",
|
||||
"q": "kvalitet / bitrate",
|
||||
"Ac": "lyd-format",
|
||||
|
|
@ -11,7 +11,7 @@ Ls.nor = {
|
|||
"Ahash": "lyd-kontrollsum",
|
||||
"Vhash": "video-kontrollsum",
|
||||
"Res": "oppløsning",
|
||||
"T": "filtype",
|
||||
"Ext": "filtype",
|
||||
"aq": "lydkvalitet / bitrate",
|
||||
"vq": "videokvalitet / bitrate",
|
||||
"pixfmt": "fargekoding / detaljenivå",
|
||||
|
|
@ -30,7 +30,7 @@ Ls.nor = {
|
|||
["G", "listevisning eller ikoner"],
|
||||
["T", "miniatyrbilder på/av"],
|
||||
["⇧ A/D", "ikonstørrelse"],
|
||||
["ctrl-K", "slett valgte"],
|
||||
["ctrl-K/Del", "slett valgte"],
|
||||
["ctrl-X", "klipp ut valgte"],
|
||||
["ctrl-C", "kopiér til utklippstavle"],
|
||||
["ctrl-V", "lim inn (flytt/kopiér)"],
|
||||
|
|
@ -104,9 +104,9 @@ Ls.nor = {
|
|||
"ht_and": " og ",
|
||||
|
||||
"goh": "kontrollpanel",
|
||||
"gop": 'naviger til mappen før denne">forr.',
|
||||
"gou": 'naviger ett nivå opp">opp',
|
||||
"gon": 'naviger til mappen etter denne">neste',
|
||||
"gop": 'naviger til mappen før denne',
|
||||
"gou": 'naviger ett nivå opp',
|
||||
"gon": 'naviger til mappen etter denne',
|
||||
"logout": "Logg ut ",
|
||||
"login": "Logg inn",
|
||||
"access": " tilgang",
|
||||
|
|
@ -154,7 +154,7 @@ Ls.nor = {
|
|||
"ut_u2ts": "gi filen på serveren samme$Ntidsstempel som lokalt hos deg\">📅",
|
||||
"ut_ow": "overskrive eksisterende filer på serveren?$N🛡️: aldri (finner på et nytt filnavn istedenfor)$N🕒: overskriv hvis serverens fil er eldre$N♻️: alltid, gitt at innholdet er forskjellig$N⏭️: hopp over alle eksisterende filer",
|
||||
"ut_mt": "fortsett å befare køen mens opplastning foregår$N$Nskru denne av dersom du har en$Ntreg prosessor eller harddisk",
|
||||
"ut_ask": 'bekreft filutvalg før opplastning starter">💭',
|
||||
"ut_ask": 'bekreft filutvalg før opplastning starter',
|
||||
"ut_pot": "forbedre ytelsen på trege enheter ved å$Nforenkle brukergrensesnittet",
|
||||
"ut_srch": "utfør søk istedenfor å laste opp --$Nleter igjennom alle mappene du har lov til å se",
|
||||
"ut_par": "sett til 0 for å midlertidig stanse opplastning$N$Nhøye verdier (4 eller 8) kan gi bedre ytelse,$Nspesielt på trege internettlinjer$N$Nbør ikke være høyere enn 1 på LAN$Neller hvis serveren sin harddisk er treg",
|
||||
|
|
@ -222,7 +222,7 @@ Ls.nor = {
|
|||
|
||||
"ct_grid": '田 ikoner',
|
||||
"ct_ttips": 'vis hjelpetekst ved å holde musen over ting">ℹ️ tips',
|
||||
"ct_thumb": 'vis miniatyrbilder istedenfor ikoner$NSnarvei: T">🖼️ bilder',
|
||||
"ct_thumb": 'vis miniatyrbilder isteden for ikoner$NSnarvei: T">🖼️ bilder',
|
||||
"ct_csel": 'bruk tastene CTRL og SHIFT for markering av filer i ikonvisning">merk',
|
||||
"ct_dsel": 'marker filer med klikk-og-dra i ikonvisning">dsel',
|
||||
"ct_dl": 'last ned filer (ikke vis i nettleseren)">dl',
|
||||
|
|
@ -285,9 +285,9 @@ Ls.nor = {
|
|||
"ml_drc": "compressor (volum-utjevning)",
|
||||
"ml_ss": "spol forbi stillhet",
|
||||
|
||||
"mt_loop": "spill den samme sangen om og om igjen\">🔁",
|
||||
"mt_loop": "spill den samme sangen om og om igjen",
|
||||
"mt_one": "spill kun én sang\">1️⃣",
|
||||
"mt_shuf": "sangene i hver mappe$Nspilles i tilfeldig rekkefølge\">🔀",
|
||||
"mt_shuf": "sangene i hver mappe$Nspilles i tilfeldig rekkefølge",
|
||||
"mt_aplay": "forsøk å starte avspilling hvis linken du klikket på for å åpne nettsiden inneholder en sang-ID$N$Nhvis denne deaktiveres så vil heller ikke nettside-URL'en bli oppdatert med sang-ID'er når musikk spilles, i tilfelle innstillingene skulle gå tapt og nettsiden lastes på ny\">a▶",
|
||||
"mt_preload": "hent ned litt av neste sang i forkant,$Nslik at pausen i overgangen blir mindre\">forles",
|
||||
"mt_prescan": "ved behov, bla til neste mappe$Nslik at nettleseren lar oss$Nfortsette å spille musikk\">bla",
|
||||
|
|
@ -302,7 +302,7 @@ Ls.nor = {
|
|||
"mt_follow": "bla slik at sangen som spilles alltid er synlig\">🎯",
|
||||
"mt_compact": "tettpakket avspillerpanel\">⟎",
|
||||
"mt_uncache": "prøv denne hvis en sang ikke spiller riktig\">oppfrisk",
|
||||
"mt_mloop": "repeter hele mappen\">🔁 gjenta",
|
||||
"mt_mloop": "repeter hele mappen",
|
||||
"mt_mnext": "hopp til neste mappe og fortsett\">📂 neste",
|
||||
"mt_mstop": "stopp avspilling\">⏸ stopp",
|
||||
"mt_cflac": "konverter flac / wav-filer til {0}\">flac",
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ Ls.pol = {
|
|||
"tt": "Polski",
|
||||
|
||||
"cols": {
|
||||
"c": "przyciski akcji",
|
||||
"!": "przyciski akcji",
|
||||
"dur": "czas trwania",
|
||||
"q": "jakość / bitrate",
|
||||
"Ac": "kodek audio",
|
||||
|
|
@ -14,7 +14,7 @@ Ls.pol = {
|
|||
"Ahash": "suma kontrolna audio",
|
||||
"Vhash": "suma kontrolna wideo",
|
||||
"Res": "rozdzielczość",
|
||||
"T": "rodzaj pliku",
|
||||
"Ext": "rodzaj pliku",
|
||||
"aq": "jakość / bitrate audio",
|
||||
"vq": "jakość / bitrate wideo",
|
||||
"pixfmt": "podpróbkowanie / struktura pikseli",
|
||||
|
|
@ -33,7 +33,7 @@ Ls.pol = {
|
|||
["G", "przełącz widok lista / siatka"],
|
||||
["T", "przełącz miniaturki / ikony"],
|
||||
["⇧ A/D", "wielkość miniaturki"],
|
||||
["ctrl-K", "usuń zaznaczone"],
|
||||
["ctrl-K/Del", "usuń zaznaczone"],
|
||||
["ctrl-X", "wytnij zaznaczone do schowka"],
|
||||
["ctrl-C", "skopiuj zaznaczone do schowka"],
|
||||
["ctrl-V", "wklej (przenieś/skopiuj) tutaj"],
|
||||
|
|
@ -110,9 +110,9 @@ Ls.pol = {
|
|||
"ht_and": " i ",
|
||||
|
||||
"goh": "panel sterowania",
|
||||
"gop": 'poprzedni plik/folder">poprzedni',
|
||||
"gou": 'nadrzędny folder">w górę',
|
||||
"gon": 'następny folder">następny',
|
||||
"gop": 'poprzedni plik/folder',
|
||||
"gou": 'nadrzędny folder',
|
||||
"gon": 'następny folder',
|
||||
"logout": "Wyloguj ",
|
||||
"login": "Zaloguj się", //m
|
||||
"access": " dostęp",
|
||||
|
|
@ -160,7 +160,7 @@ Ls.pol = {
|
|||
"ut_u2ts": "kopiuj znacznik ostatniej modyfikacji$Nz twojego systemu plików na serwer\">📅",
|
||||
"ut_ow": "nadpisywać istniejące pliki na serwerzę?$N🛡️: nigdy (wygeneruje nową nazwę)$N🕒: nadpisz jeśli pliki na serwerze są starsze niż przesyłane$N♻️: zawsze nadpisuj jeśli zawartość plików się różni$N⏭️: bezwarunkowo pomiń wszystkie istniejące pliki", //m
|
||||
"ut_mt": "hashuj inne pliki podczas przesyłania$N$Nmożna wyłączyć w przypadku wystąpienia wąskiego gardła na CPU lub HDD",
|
||||
"ut_ask": 'pytaj o potwierdzenie rozpoczęcia przesyłania">💭',
|
||||
"ut_ask": 'pytaj o potwierdzenie rozpoczęcia przesyłania',
|
||||
"ut_pot": "przyspiesz przesyłanie na słabszych urządzeniach,$Nupraszczając interfejs",
|
||||
"ut_srch": "nie przesyłaj plików, jedynie sprawdź czy istnieją$Njuż na serwerze (przeskanuje wszystkie foldery dostępne do odczytu)",
|
||||
"ut_par": "zatrzymuje przesyłanie jeśli wynosi 0$N$Nzwiększ w przypadku jeśli twoja sieć jest wolna / ma duże opóźnienia$N$Nustaw wartość 1 w sieci lokalnej lub w przypadku wolnego dysku serwerowego",
|
||||
|
|
@ -228,7 +228,7 @@ Ls.pol = {
|
|||
|
||||
"ct_grid": '田 siatka',
|
||||
"ct_ttips": '◔ ◡ ◔">ℹ️ podpowiedzi',
|
||||
"ct_thumb": 'w widoku siatki, przełącz ikony i miniaturki$NSkrót: T">🖼️ miniaturki',
|
||||
"ct_thumb": 'przełącz ikony i miniaturki$NSkrót: T">🖼️ miniaturki',
|
||||
"ct_csel": 'użyj CTRL i SHIFT do wybierania plików w widoku siatki">wybierz',
|
||||
"ct_dsel": 'użyj zaznaczania przez przeciąganie w widoku siatki">przeciągnij', //m
|
||||
"ct_dl": 'wymuś pobieranie (nie wyświetlaj inline) po kliknięciu pliku">dl', //m
|
||||
|
|
@ -291,9 +291,9 @@ Ls.pol = {
|
|||
"ml_drc": "kompresor zasięgu dynamiki",
|
||||
"ml_ss": "pomijaj ciszę", //m
|
||||
|
||||
"mt_loop": "pętla/powtarzaj jeden utwór\">🔁",
|
||||
"mt_loop": "pętla/powtarzaj jeden utwór",
|
||||
"mt_one": "zatrzymaj po jednym utworze\">1️⃣",
|
||||
"mt_shuf": "odtwarzaj losowo w każdym folderze\">🔀",
|
||||
"mt_shuf": "odtwarzaj losowo w każdym folderze",
|
||||
"mt_aplay": "autoodtwarzanie po kliknięciu linku do tego serwera, zawierającego identyfikator utworu$N$Nwyłączenie tej opcji zapobiegnie aktualizowaniu adresu strony podczas odtwarzania muzyki, aby zapobiec autoodtwarzaniu przy utracie ustawień\">a▶",
|
||||
"mt_preload": "rozpocznij ładowanie kolejnego utworu blisko końca aktualnego w celu uzyskania odtwarzania bez przerw\">preload",
|
||||
"mt_prescan": "przechodzi do następnego folderu przed zakończeniem ostatniego utworu,$Naby udobruchać przeglądarkę,$Nżeby nie zatrzymała odtwarzania\">naw",
|
||||
|
|
@ -308,7 +308,7 @@ Ls.pol = {
|
|||
"mt_follow": "podążaj za odtwarzanym utworem przewijając widok\">🎯",
|
||||
"mt_compact": "kompaktowe sterowanie\">⟎",
|
||||
"mt_uncache": "wyczyść pamięć podręczną (spróbuj jeśli przeglądarka$Nzachowała zepsutą kopię utworu, przez co nie odtwarza się ona)\">uncache",
|
||||
"mt_mloop": "odtwarzaj utwory w folderze w pętli\">🔁 loop",
|
||||
"mt_mloop": "odtwarzaj utwory w folderze w pętli",
|
||||
"mt_mnext": "wczytaj następny folder i kontynuuj\">📂 next",
|
||||
"mt_mstop": "zatrzymaj odtwarzanie\">⏸ stop",
|
||||
"mt_cflac": "przekonwertuj format flac / wav na {0}\">flac",
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ Ls.por = {
|
|||
"tt": "Português",
|
||||
|
||||
"cols": {
|
||||
"c": "botões de ação",
|
||||
"!": "botões de ação",
|
||||
"dur": "duração",
|
||||
"q": "qualidade / bitrate",
|
||||
"Ac": "codec de áudio",
|
||||
|
|
@ -14,7 +14,7 @@ Ls.por = {
|
|||
"Ahash": "checksum de áudio",
|
||||
"Vhash": "checksum de vídeo",
|
||||
"Res": "resolução",
|
||||
"T": "tipo de arquivo",
|
||||
"Ext": "tipo de arquivo",
|
||||
"aq": "qualidade / bitrate de áudio",
|
||||
"vq": "qualidade / bitrate de vídeo",
|
||||
"pixfmt": "subamostragem / estrutura de pixel",
|
||||
|
|
@ -33,7 +33,7 @@ Ls.por = {
|
|||
["G", "alternar entre visualização de lista / grade"],
|
||||
["T", "alternar entre miniaturas / ícones"],
|
||||
["⇧ A/D", "tamanho da miniatura"],
|
||||
["ctrl-K", "excluir selecionados"],
|
||||
["ctrl-K/Del", "excluir selecionados"],
|
||||
["ctrl-X", "recortar seleção para a área de transferência"],
|
||||
["ctrl-C", "copiar seleção para a área de transferência"],
|
||||
["ctrl-V", "colar (mover/copiar) aqui"],
|
||||
|
|
@ -107,9 +107,9 @@ Ls.por = {
|
|||
"ht_and": " e ",
|
||||
|
||||
"goh": "painel de controle",
|
||||
"gop": 'pai anterior">anterior',
|
||||
"gou": 'pasta pai">acima',
|
||||
"gon": 'próxima pasta">próximo',
|
||||
"gop": 'pai anterior',
|
||||
"gou": 'pasta pai',
|
||||
"gon": 'próxima pasta',
|
||||
"logout": "Sair ",
|
||||
"login": "Fazer login",
|
||||
"access": " acesso",
|
||||
|
|
@ -157,7 +157,7 @@ Ls.por = {
|
|||
"ut_u2ts": "copiar o carimbo de data/hora de última modificação$Ndo seu sistema de arquivos para o servidor\">📅",
|
||||
"ut_ow": "substituir arquivos existentes no servidor?$N🛡️: nunca (irá gerar um novo nome de arquivo em vez disso)$N🕒: substituir se o arquivo no servidor for mais antigo que o seu$N♻️: sempre substituir se os arquivos forem diferentes$N⏭️: ignorar incondicionalmente todos os arquivos existentes",
|
||||
"ut_mt": "continuar a fazer o hash de outros arquivos enquanto faz upload$N$Ntalvez desativar se sua CPU ou HDD for um gargalo",
|
||||
"ut_ask": 'pedir confirmação antes do upload começar">💭',
|
||||
"ut_ask": 'pedir confirmação antes do upload começar',
|
||||
"ut_pot": "melhorar a velocidade de upload em dispositivos lentos$Ntornando a UI menos complexa",
|
||||
"ut_srch": "não fazer upload, em vez disso verificar se os arquivos já$N existem no servidor (irá escanear todas as pastas que você pode ler)",
|
||||
"ut_par": "pausar uploads definindo para 0$N$Naumentar se sua conexão for lenta / alta latência$N$Nmanter em 1 em LAN ou se o HDD do servidor for um gargalo",
|
||||
|
|
@ -225,7 +225,7 @@ Ls.por = {
|
|||
|
||||
"ct_grid": '田 a grade',
|
||||
"ct_ttips": '◔ ◡ ◔">ℹ️ dicas de ferramentas',
|
||||
"ct_thumb": 'na visualização de grade, alternar entre ícones ou miniaturas$NHotkey: T">🖼️ miniaturas',
|
||||
"ct_thumb": 'alternar entre ícones ou miniaturas$NHotkey: T">🖼️ miniaturas',
|
||||
"ct_csel": 'usar CTRL e SHIFT para seleção de arquivo na visualização de grade">sel',
|
||||
"ct_dsel": 'usar seleção por arrasto na visualização de grade">arrastar',
|
||||
"ct_dl": 'forçar download (não exibir na página) ao clicar em um arquivo">dl',
|
||||
|
|
@ -288,9 +288,9 @@ Ls.por = {
|
|||
"ml_drc": "compressor de faixa dinâmica",
|
||||
"ml_ss": "ignorar silêncio", //m
|
||||
|
||||
"mt_loop": "loop/repetir uma música\">🔁",
|
||||
"mt_loop": "loop/repetir uma música",
|
||||
"mt_one": "parar depois de uma música\">1️⃣",
|
||||
"mt_shuf": "embaralhar as músicas em cada pasta\">🔀",
|
||||
"mt_shuf": "embaralhar as músicas em cada pasta",
|
||||
"mt_aplay": "reproduzir automaticamente se houver um ID de música no link que você clicou para acessar o servidor$N$Ndesativar isso também impedirá que a URL da página seja atualizada com IDs de música ao tocar música, para evitar a reprodução automática se essas configurações forem perdidas mas a URL permanecer\">a▶",
|
||||
"mt_preload": "começar a carregar a próxima música perto do final para uma reprodução sem interrupções\">preload",
|
||||
"mt_prescan": "ir para a próxima pasta antes que a última música$Ntermine, mantendo o navegador feliz$Npara que ele não pare a reprodução\">nav",
|
||||
|
|
@ -305,7 +305,7 @@ Ls.por = {
|
|||
"mt_follow": "manter a faixa que está tocando rolando à vista\">🎯",
|
||||
"mt_compact": "controles compactos\">⟎",
|
||||
"mt_uncache": "limpar cache (tente isso se seu navegador armazenou em cache$Numa cópia quebrada de uma música e se recusa a tocar)\">uncache",
|
||||
"mt_mloop": "loop na pasta aberta\">🔁 loop",
|
||||
"mt_mloop": "loop na pasta aberta",
|
||||
"mt_mnext": "carregar a próxima pasta e continuar\">📂 próximo",
|
||||
"mt_mstop": "parar reprodução\">⏸ parar",
|
||||
"mt_cflac": "converter flac / wav para {0}\">flac",
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ Ls.rus = {
|
|||
"tt": "Русский",
|
||||
|
||||
"cols": {
|
||||
"c": "кнопки действий",
|
||||
"!": "кнопки действий",
|
||||
"dur": "длительность",
|
||||
"q": "качество / битрейт",
|
||||
"Ac": "аудио кодек",
|
||||
|
|
@ -14,7 +14,7 @@ Ls.rus = {
|
|||
"Ahash": "контрольная сумма аудио",
|
||||
"Vhash": "контрольная сумма видео",
|
||||
"Res": "разрешение",
|
||||
"T": "тип файла",
|
||||
"Ext": "тип файла",
|
||||
"aq": "качество аудио / битрейт",
|
||||
"vq": "качество видео / битрейт",
|
||||
"pixfmt": "сабсемплинг / пиксельный формат",
|
||||
|
|
@ -33,7 +33,7 @@ Ls.rus = {
|
|||
["G", "переключиться между списком / плиткой"],
|
||||
["T", "переключиться между миниатюрами / иконками"],
|
||||
["⇧ A/D", "размер миниатюры"],
|
||||
["ctrl-K", "удалить выделенное"],
|
||||
["ctrl-K/Del", "удалить выделенное"],
|
||||
["ctrl-X", "вырезать выделенное в буфер"],
|
||||
["ctrl-C", "копировать выделенное в буфер"],
|
||||
["ctrl-V", "вставить (переместить/копировать) сюда"],
|
||||
|
|
@ -107,9 +107,9 @@ Ls.rus = {
|
|||
"ht_and": " и ",
|
||||
|
||||
"goh": "панель управления",
|
||||
"gop": 'предыдущая папка">пред',
|
||||
"gou": 'родительская папка">вверх',
|
||||
"gon": 'следующая папка">след',
|
||||
"gop": 'предыдущая папка',
|
||||
"gou": 'родительская папка',
|
||||
"gon": 'следующая папка',
|
||||
"logout": "Выйти ",
|
||||
"login": "Войти", //m
|
||||
"access": " доступ",
|
||||
|
|
@ -157,7 +157,7 @@ Ls.rus = {
|
|||
"ut_u2ts": "копировать время последнего изменения$Nиз вашей файловой системы на сервер\">📅",
|
||||
"ut_ow": "перезаписывать существующие файлы на сервере?$N🛡️: нет (для повторяющихся файлов будут создаваться новые имена)$N🕒: перезаписать файлы с датой изменения старее, чем у загружаемых$N♻️: всегда перезаписывать (если файлы различаются по содержанию)$N⏭️: безусловно пропускать все существующие файлы", //m
|
||||
"ut_mt": "продолжать хешировать другие файлы во время загрузки$N$Nесть смысл отключить при медленном диске или процессоре",
|
||||
"ut_ask": 'требовать подтверждения перед началом загрузки">💭',
|
||||
"ut_ask": 'требовать подтверждения перед началом загрузки',
|
||||
"ut_pot": "улучшить скорость загрузки на слабых устройства$Nс помощью упрощения интерфейса",
|
||||
"ut_srch": "не загружать, а проверять, существуют ли данные файлы $N на сервере (проверка всех доступных вам папок)",
|
||||
"ut_par": "при 0 загрузка встанет на паузу$N$Nследует повысить, если ваше подключение медленное$N$Nоставьте 1, если используется локальная сеть или диск сервера медленный",
|
||||
|
|
@ -225,7 +225,7 @@ Ls.rus = {
|
|||
|
||||
"ct_grid": '田 сетка',
|
||||
"ct_ttips": '◔ ◡ ◔">ℹ️ подсказки',
|
||||
"ct_thumb": 'переключение между иконками и миниатюрами в режиме сетки$NГорячая клавиша: T">🖼️ миниат.',
|
||||
"ct_thumb": 'переключение между иконками и миниатюрами$NГорячая клавиша: T">🖼️ миниат.',
|
||||
"ct_csel": 'держите CTRL или SHIFT для выделения файлов в режиме сетки">выбор',
|
||||
"ct_dsel": 'использовать выделение перетаскиванием в режиме сетки">перетащить', //m
|
||||
"ct_dl": 'принудительная загрузка (не показывать встроенно) при щелчке по файлу">dl', //m
|
||||
|
|
@ -288,9 +288,9 @@ Ls.rus = {
|
|||
"ml_drc": "компрессор",
|
||||
"ml_ss": "пропускать тишину", //m
|
||||
|
||||
"mt_loop": "повторять один трек\">🔁",
|
||||
"mt_loop": "повторять один трек",
|
||||
"mt_one": "остановить после этого трека\">1️⃣",
|
||||
"mt_shuf": "перемешать треки во всех папках\">🔀",
|
||||
"mt_shuf": "перемешать треки во всех папках",
|
||||
"mt_aplay": "автоматически играть треки по нажатии на ссылки с их ID$N$Nпри отключении адрес сайта также перестанет обновляться в соответствии с текущим треком\">a▶",
|
||||
"mt_preload": "подгружать следующий трек перед концом текущего для бесшовного переключения\">предзагр.",
|
||||
"mt_prescan": "переходить в следующую папку перед окончанием последнего трека$Nне даёт браузеру прервать следующий плейлист\">нав.",
|
||||
|
|
@ -305,7 +305,7 @@ Ls.rus = {
|
|||
"mt_follow": "держать фокус на играющем треке\">🎯",
|
||||
"mt_compact": "компактный плеер\">⟎",
|
||||
"mt_uncache": "очистить кеш (если браузер кешировал повреждённый$Nтрек и отказывается его запускать)\">уд. кеш",
|
||||
"mt_mloop": "повторять треки в папке\">🔁 цикл",
|
||||
"mt_mloop": "повторять треки в папке",
|
||||
"mt_mnext": "загрузить следующую папку и продолжить в ней\">📂 след.",
|
||||
"mt_mstop": "приостановить воспроизведение\">⏸ стоп",
|
||||
"mt_cflac": "конвертировать flac / wav в {0}\">flac",
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ Ls.spa = {
|
|||
"tt": "Español",
|
||||
|
||||
"cols": {
|
||||
"c": "acciones",
|
||||
"!": "acciones",
|
||||
"dur": "duración",
|
||||
"q": "calidad / bitrate",
|
||||
"Ac": "códec de audio",
|
||||
|
|
@ -14,7 +14,7 @@ Ls.spa = {
|
|||
"Ahash": "checksum de audio",
|
||||
"Vhash": "checksum de vídeo",
|
||||
"Res": "resolución",
|
||||
"T": "tipo de archivo",
|
||||
"Ext": "tipo de archivo",
|
||||
"aq": "calidad de audio / bitrate",
|
||||
"vq": "calidad de vídeo / bitrate",
|
||||
"pixfmt": "submuestreo / estructura de píxel",
|
||||
|
|
@ -33,7 +33,7 @@ Ls.spa = {
|
|||
["G", "alternar vista de lista / cuadrícula"],
|
||||
["T", "alternar miniaturas / iconos"],
|
||||
["⇧ A/D", "tamaño de miniatura"],
|
||||
["ctrl-K", "eliminar seleccionados"],
|
||||
["ctrl-K/Del", "eliminar seleccionados"],
|
||||
["ctrl-X", "cortar selección al portapapeles"],
|
||||
["ctrl-C", "copiar selección al portapapeles"],
|
||||
["ctrl-V", "pegar (mover/copiar) aquí"],
|
||||
|
|
@ -107,9 +107,9 @@ Ls.spa = {
|
|||
"ht_and": " y ",
|
||||
|
||||
"goh": "panel de control",
|
||||
"gop": 'hermano anterior">anterior',
|
||||
"gou": 'carpeta de nivel superior">subir',
|
||||
"gon": 'siguiente carpeta">siguiente',
|
||||
"gop": 'hermano anterior',
|
||||
"gou": 'carpeta de nivel superior',
|
||||
"gon": 'siguiente carpeta',
|
||||
"logout": "Cerrar sesión ",
|
||||
"login": "Iniciar sesión", //m
|
||||
"access": " acceso",
|
||||
|
|
@ -157,7 +157,7 @@ Ls.spa = {
|
|||
"ut_u2ts": 'copiar la fecha de última modificación$Nde tu sistema de archivos al servidor">📅',
|
||||
"ut_ow": "sobrescribir archivos existentes en el servidor?$N🛡️: nunca (generará un nuevo nombre de archivo en su lugar)$N🕒: sobrescribir si el archivo del servidor es más antiguo que el tuyo$N♻️: siempre sobrescribir si los archivos son diferentes$N⏭️: omitir incondicionalmente todos los archivos existentes", //m
|
||||
"ut_mt": "continuar generando hashes de otros archivos mientras se sube$N$Nquizás desactivar si tu CPU o HDD es un cuello de botella",
|
||||
"ut_ask": 'pedir confirmación antes de iniciar la subida">💭',
|
||||
"ut_ask": 'pedir confirmación antes de iniciar la subida',
|
||||
"ut_pot": "mejorar la velocidad de subida en dispositivos lentos$Nsimplificando la interfaz de usuario",
|
||||
"ut_srch": "no subir, en su lugar comprobar si los archivos ya $N existen en el servidor (escaneará todas las carpetas que puedas leer)",
|
||||
"ut_par": "pausar subidas poniéndolo a 0$N$Naumentar si tu conexión es lenta / de alta latencia$N$Nmantener en 1 en LAN o si el HDD del servidor es un cuello de botella",
|
||||
|
|
@ -224,7 +224,7 @@ Ls.spa = {
|
|||
|
||||
"ct_grid": '田 cuadrícula',
|
||||
"ct_ttips": '◔ ◡ ◔">ℹ️ tooltips',
|
||||
"ct_thumb": 'en vista de cuadrícula, alternar iconos o miniaturas$NAtajo: T">🖼️ miniaturas',
|
||||
"ct_thumb": 'alternar iconos o miniaturas$NAtajo: T">🖼️ miniaturas',
|
||||
"ct_csel": 'usa CTRL y SHIFT para seleccionar archivos en la vista de cuadrícula">sel',
|
||||
"ct_dsel": 'usa la selección por arrastre en la vista de cuadrícula">arrastrar', //m
|
||||
"ct_dl": 'forzar descarga (no mostrar en línea) al hacer clic en un archivo">dl', //m
|
||||
|
|
@ -287,9 +287,9 @@ Ls.spa = {
|
|||
"ml_drc": "compresor de rango dinámico",
|
||||
"ml_ss": "saltar silencios", //m
|
||||
|
||||
"mt_loop": 'poner en bucle/repetir una canción">🔁',
|
||||
"mt_loop": 'poner en bucle/repetir una canción',
|
||||
"mt_one": 'parar después de una canción">1️⃣',
|
||||
"mt_shuf": 'reproducir aleatoriamente las canciones en cada carpeta">🔀',
|
||||
"mt_shuf": 'reproducir aleatoriamente las canciones en cada carpeta',
|
||||
"mt_aplay": 'reproducir automaticamente si hay un ID de canción en el enlace en el que hiciste clic para acceder al servidor$N$Ndesactivar esto también evitará que la URL de la página se actualice con IDs de canción al reproducir música, para prevenir la reproducción automática si se pierden estos ajustes pero la URL permanece">a▶',
|
||||
"mt_preload": 'empezar a cargar la siguiente canción cerca del final para una reproducción sin pausas">precarga',
|
||||
"mt_prescan": 'ir a la siguiente carpeta antes de que la última canción$Ntermine, manteniendo contento al navegador$Npara que no detenga la reproducción">nav',
|
||||
|
|
@ -304,7 +304,7 @@ Ls.spa = {
|
|||
"mt_follow": 'mantener la pista en reproducción visible en pantalla">🎯',
|
||||
"mt_compact": 'controles compactos">⟎',
|
||||
"mt_uncache": 'limpiar caché (prueba esto si tu navegador guardó en caché$Nuna copia rota de una canción que se niega a reproducir)">limpiar caché',
|
||||
"mt_mloop": 'repetir la carpeta actual">🔁 bucle',
|
||||
"mt_mloop": 'repetir la carpeta actual',
|
||||
"mt_mnext": 'cargar la siguiente carpeta y continuar">📂 sig',
|
||||
"mt_mstop": 'detener reproducción">⏸ parar',
|
||||
"mt_cflac": 'convertir flac / wav a {0}">flac',
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ Ls.swe = {
|
|||
"tt": "Svenska",
|
||||
|
||||
"cols": {
|
||||
"c": "aktion",
|
||||
"!": "aktion",
|
||||
"dur": "längd",
|
||||
"q": "kvalitet / bitrate",
|
||||
"Ac": "ljudkodek",
|
||||
|
|
@ -14,7 +14,7 @@ Ls.swe = {
|
|||
"Ahash": "ljudchecksumma",
|
||||
"Vhash": "videochecksumma",
|
||||
"Res": "upplösning",
|
||||
"T": "filtyp",
|
||||
"Ext": "filtyp",
|
||||
"aq": "ljudkvalitet / bitrate",
|
||||
"vq": "videokvalitet / bitrate",
|
||||
"pixfmt": "subsampling / pixelstruktur",
|
||||
|
|
@ -33,7 +33,7 @@ Ls.swe = {
|
|||
["G", "växla mellan listvy / rutnät"],
|
||||
["T", "växla mellan miniatyrer / ikoner"],
|
||||
["⇧ A/D", "miniatyrstorlek"],
|
||||
["ctrl-K", "radera urval"],
|
||||
["ctrl-K/Del", "radera urval"],
|
||||
["ctrl-X", "klipp urval till urklipp"],
|
||||
["ctrl-C", "kopiera urval till urklipp"],
|
||||
["ctrl-V", "klistra in (kopiera/flytta) hit"],
|
||||
|
|
@ -107,9 +107,9 @@ Ls.swe = {
|
|||
"ht_and": " och ",
|
||||
|
||||
"goh": "kontrollpanel",
|
||||
"gop": 'föregående mapp">föreg.',
|
||||
"gou": 'överordnad mapp">upp',
|
||||
"gon": 'nästa mapp">nästa',
|
||||
"gop": 'föregående mapp',
|
||||
"gou": 'överordnad mapp',
|
||||
"gon": 'nästa mapp',
|
||||
"logout": "Logga ut ",
|
||||
"login": "Logga in", //m
|
||||
"access": "-rättighet",
|
||||
|
|
@ -157,7 +157,7 @@ Ls.swe = {
|
|||
"ut_u2ts": "bevara tidsstämpeln för senaste ändring$Nfrån ditt filsystem till servern\">📅",
|
||||
"ut_ow": "skriv över existerande filer på servern?$N🛡️: aldrig (skapar ett nytt filnamn istället)$N🕒: skriv över om serverns fil är äldre än din$N♻️: skriv alltid över om filerna skiljer sig$N⏭️: hoppa ovillkorligen över alla befintliga filer", //m
|
||||
"ut_mt": "fortsätt hasha filer under uppladdningens gång$N$Nstäng av om din CPU eller disk är en flaskhals",
|
||||
"ut_ask": 'bekräfta innan uppladdningar påbörjas">💭',
|
||||
"ut_ask": 'bekräfta innan uppladdningar påbörjas',
|
||||
"ut_pot": "förbättra uppladdningshastigheten på långsamma enheter$Ngenom att förenkla användargränssnittet",
|
||||
"ut_srch": "ladda inte upp; kolla istället om filerna redan existerar på $N servern (detta kommer att skanna alla mappar med läsrättighet)",
|
||||
"ut_par": "du kan pausa all uppladdning genom att sätta detta till 0$N$Nöka denna om din uppkoppling är långsam eller har hög latens$N$Nsätt till 1 över lokala nätverk eller om serverns disk är en flaskhals",
|
||||
|
|
@ -225,7 +225,7 @@ Ls.swe = {
|
|||
|
||||
"ct_grid": '田 rutnätet',
|
||||
"ct_ttips": '◔ ◡ ◔">ℹ️ tips',
|
||||
"ct_thumb": 'växla mellan miniatyrer och ikoner i rutnätsvyn$NSnabbtangent: T">🖼️ miniatyrer',
|
||||
"ct_thumb": 'växla mellan miniatyrer och ikoner$NSnabbtangent: T">🖼️ miniatyrer',
|
||||
"ct_csel": 'använd CTRL och SKIFT för urval av filer i rutnätsvyn">val',
|
||||
"ct_dsel": 'använd dra-urval i rutnätsvyn">dra', //m
|
||||
"ct_dl": 'tvinga nedladdning (visa inte inline) när en fil klickas">dl', //m
|
||||
|
|
@ -288,9 +288,9 @@ Ls.swe = {
|
|||
"ml_drc": "dynamikkompressor",
|
||||
"ml_ss": "hoppa över tystnad", //m
|
||||
|
||||
"mt_loop": "upprepa en låt\">🔁",
|
||||
"mt_loop": "upprepa en låt",
|
||||
"mt_one": "stoppa uppspelningen efter en låt\">1️⃣",
|
||||
"mt_shuf": "blanda låtarna i varje mapp\">🔀",
|
||||
"mt_shuf": "blanda låtarna i varje mapp",
|
||||
"mt_aplay": "spela automatiskt om det finns en låt-ID i länkar du har klickat på för att öppna sidan$N$Nom detta är avstängt kommer sidans adress inte att bli uppdaterad med en låt-ID om du spelar musik, för att förhindra automatisk uppspelning om dessa inställningar går förlorade men webbadressen återstår\">a▶",
|
||||
"mt_preload": "påbörja nedladdning av nästa låt i förväg för gapfri uppspelning\">ladda",
|
||||
"mt_prescan": "hoppa till nästa mapp i förväg så att webbläsaren$Nförblir glad och inte avbryter uppspelningen\">nav",
|
||||
|
|
@ -305,7 +305,7 @@ Ls.swe = {
|
|||
"mt_follow": "skrolla vyn till den spelande låten\">🎯",
|
||||
"mt_compact": "kompakt kontrollpanel\">⟎",
|
||||
"mt_uncache": "rensa cachen (prova detta om din webbläsare har cachat$Nen trasig kopia av en låt och den vägrar spela upp den)\">rensa",
|
||||
"mt_mloop": "upprepa den öppna mappen\">🔁 upprepa",
|
||||
"mt_mloop": "upprepa den öppna mappen",
|
||||
"mt_mnext": "ladda nästa mapp och fortsätt\">📂 nästa",
|
||||
"mt_mstop": "stoppa uppspelningen\">⏸ stopp",
|
||||
"mt_cflac": "konvertera flac / wav till {0}\">flac",
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ Ls.tur = {
|
|||
"tt": "Türkçe",
|
||||
|
||||
"cols": {
|
||||
"c": "işlem butonları",
|
||||
"!": "işlem butonları",
|
||||
"dur": "süre",
|
||||
"q": "kalite / bitrate",
|
||||
"Ac": "ses kodlaması",
|
||||
|
|
@ -14,7 +14,7 @@ Ls.tur = {
|
|||
"Ahash": "ses denetim toplamı",
|
||||
"Vhash": "video denetim toplamı",
|
||||
"Res": "çözünürlük",
|
||||
"T": "dosya türü",
|
||||
"Ext": "dosya türü",
|
||||
"aq": "ses kalitesi / bitrate",
|
||||
"vq": "video kalitesi / bitrate",
|
||||
"pixfmt": "subsampling / pixel yapısı",
|
||||
|
|
@ -33,7 +33,7 @@ Ls.tur = {
|
|||
["G", "liste / ızgara görünümü arasında geçiş yap"],
|
||||
["T", "küçük resimler / simgeler arasında geçiş yap"],
|
||||
["⇧ A/D", "küçük resim boyutu"],
|
||||
["ctrl-K", "seçileni sil"],
|
||||
["ctrl-K/Del", "seçileni sil"],
|
||||
["ctrl-X", "seçimi panoya kes"],
|
||||
["ctrl-C", "seçimi panoya kopyala"],
|
||||
["ctrl-V", "buraya yapıştır (taşı/kopyala)"],
|
||||
|
|
@ -107,9 +107,9 @@ Ls.tur = {
|
|||
"ht_and": " ve ",
|
||||
|
||||
"goh": "kontrol paneli",
|
||||
"gop": 'önceki kardeş">önceki',
|
||||
"gou": 'üst klasör">üst',
|
||||
"gon": 'sonraki klasör">sonraki',
|
||||
"gop": 'önceki kardeş',
|
||||
"gou": 'üst klasör',
|
||||
"gon": 'sonraki klasör',
|
||||
"logout": "Çıkış ",
|
||||
"login": "Giriş",
|
||||
"access": " erişim",
|
||||
|
|
@ -157,7 +157,7 @@ Ls.tur = {
|
|||
"ut_u2ts": "kendi dosyalarınızdan sunucuya$Nzaman damgasını kopyala\">📅",
|
||||
"ut_ow": "sunucudaki mevcut dosyaları üzerine yazmak mı?$N🛡️: asla (yerine yeni bir dosya adı oluşturur)$N🕒: sunucu dosyası sizinkinden daha eskiyse üzerine yaz$N♻️: dosyalar farklıysa her zaman üzerine yaz$N⏭️: mevcut tüm dosyaları koşulsuz atla", //m
|
||||
"ut_mt": "yükleme yaparken diğer dosyaların hash'lenmesini durdur$N$kötü bir CPU veya HDD'ye sahipseniz kullanabilirsiniz.",
|
||||
"ut_ask": 'yüklemeye başlamadan önce doğrulama mesajı göster">💭',
|
||||
"ut_ask": 'yüklemeye başlamadan önce doğrulama mesajı göster',
|
||||
"ut_pot": "arayüzü daha az karmaşık hale getirerek$Nyükleme hızını yavaş cihazlarda artır",
|
||||
"ut_srch": "gerçekten yükleme yapma, bunun yerine dosyaların $N sunucuda var olup olmadığını kontrol et (okuma izniniz olan tüm klasörleri tarar)",
|
||||
"ut_par": "0'a ayarlayarak yüklemeleri durdur$N$Nbağlantınız yavaşsa değeri artırın$N$NLAN'daysanız veya sunucu HDD'si darboğaz yapıyorsa 1'de tutun",
|
||||
|
|
@ -225,7 +225,7 @@ Ls.tur = {
|
|||
|
||||
"ct_grid": '田 ızgara',
|
||||
"ct_ttips": '◔ ◡ ◔">ℹ️ ipuçları',
|
||||
"ct_thumb": 'ızgara görünümünde, simgeler ve küçük resimler arasında geçiş yapın$NKısayol: T">🖼️ küçük resimler',
|
||||
"ct_thumb": 'simgeler ve küçük resimler arasında geçiş yapın$NKısayol: T">🖼️ küçük resimler',
|
||||
"ct_csel": 'ızgara görünümünde dosya seçimi için CTRL ve SHIFT tuşlarını kullanın">seç',
|
||||
"ct_dsel": 'ızgara görünümünde sürükleyerek seçimi kullanın">sürükle', //m
|
||||
"ct_dl": 'dosyaya tıklandığında indirmeyi zorla (satır içinde görüntüleme)">dl', //m
|
||||
|
|
@ -288,9 +288,9 @@ Ls.tur = {
|
|||
"ml_drc": "dinamik aralık sıkıştırıcı",
|
||||
"ml_ss": "sessizliği atla", //m
|
||||
|
||||
"mt_loop": "bir şarkıyı döngüye al / tekrar et\">🔁",
|
||||
"mt_loop": "bir şarkıyı döngüye al / tekrar et",
|
||||
"mt_one": "bir şarkıdan sonra dur\">1️⃣",
|
||||
"mt_shuf": "klasörlerdeki şarkıları karıştır\">🔀",
|
||||
"mt_shuf": "klasörlerdeki şarkıları karıştır",
|
||||
"mt_aplay": "sunucuya erişmek için kullandığın bağlantıda geçerli bir şarkı varsa otomatik oynat$N$Nbunu etkisiz kılmak aynı zamanda müzik oynatıldığında sayfa URL'nin değişmesini de engeller\">a▶",
|
||||
"mt_preload": "aralıksız oynatma için sıradaki şarkıyı önceden yüklemeye başla\">ön yükleme",
|
||||
"mt_prescan": "son şarkı bitmeden önce bir sonraki klasöre git$Nweb tarayıcısını mutlu tutar$Nbu nedenle oynatmayı durdurmaz\">nav",
|
||||
|
|
@ -305,7 +305,7 @@ Ls.tur = {
|
|||
"mt_follow": "oynatılan müzik ibaresini görünümde tut\">🎯",
|
||||
"mt_compact": "kompakt kontroller\">⟎",
|
||||
"mt_uncache": "önbelleği temizle (bunu, tarayıcınızın bozuk bir şarkı kopyasını önbelleğe alması nedeniyle çalmayı reddettiğinde deneyin)\">önbelleği temizle",
|
||||
"mt_mloop": "açık klasörü döngüye al\">🔁 döngü",
|
||||
"mt_mloop": "açık klasörü döngüye al",
|
||||
"mt_mnext": "bir sonraki klasörü yükle ve devam et\">📂 sonraki",
|
||||
"mt_mstop": "oynatmayı durdur\">⏸ durdur",
|
||||
"mt_cflac": "flac / wav'ı {0}'a dönüştür\">flac",
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ Ls.ukr = {
|
|||
"tt": "Українська",
|
||||
|
||||
"cols": {
|
||||
"c": "кнопки дій",
|
||||
"!": "кнопки дій",
|
||||
"dur": "тривалість",
|
||||
"q": "якість / бітрейт",
|
||||
"Ac": "аудіо кодек",
|
||||
|
|
@ -14,7 +14,7 @@ Ls.ukr = {
|
|||
"Ahash": "контрольна сума аудіо",
|
||||
"Vhash": "контрольна сума відео",
|
||||
"Res": "роздільність",
|
||||
"T": "тип файлу",
|
||||
"Ext": "тип файлу",
|
||||
"aq": "якість аудіо / бітрейт",
|
||||
"vq": "якість відео / бітрейт",
|
||||
"pixfmt": "підвибірка / структура пікселів",
|
||||
|
|
@ -33,7 +33,7 @@ Ls.ukr = {
|
|||
["G", "перемкнути список / сітку"],
|
||||
["T", "перемкнути мініатюри / іконки"],
|
||||
["⇧ A/D", "розмір мініатюр"],
|
||||
["ctrl-K", "видалити вибране"],
|
||||
["ctrl-K/Del", "видалити вибране"],
|
||||
["ctrl-X", "вирізати до буфера"],
|
||||
["ctrl-C", "копіювати до буфера"],
|
||||
["ctrl-V", "вставити (перемістити/копіювати) сюди"],
|
||||
|
|
@ -107,9 +107,9 @@ Ls.ukr = {
|
|||
"ht_and": " і ",
|
||||
|
||||
"goh": "панель керування",
|
||||
"gop": 'попередній сусід">назад',
|
||||
"gou": 'батьківська папка">вгору',
|
||||
"gon": 'наступна папка">далі',
|
||||
"gop": 'попередній сусід',
|
||||
"gou": 'батьківська папка',
|
||||
"gon": 'наступна папка',
|
||||
"logout": "Вийти ",
|
||||
"login": "увійти", //m
|
||||
"access": " доступ",
|
||||
|
|
@ -157,7 +157,7 @@ Ls.ukr = {
|
|||
"ut_u2ts": "копіювати часову мітку останньої зміни$Nз вашої файлової системи на сервер\">📅",
|
||||
"ut_ow": "перезаписати існуючі файли на сервері?$N🛡️: ніколи (замість цього створить нове ім'я файлу)$N🕒: перезаписати, якщо файл на сервері старіший за ваш$N♻️: завжди перезаписувати, якщо файли відрізняються$N⏭️: безумовно пропускати всі наявні файли", //m
|
||||
"ut_mt": "продовжувати хешування інших файлів під час завантаження$N$Nможливо, вимкніть, якщо ваш CPU або HDD є вузьким місцем",
|
||||
"ut_ask": 'запитати підтвердження перед початком завантаження">💭',
|
||||
"ut_ask": 'запитати підтвердження перед початком завантаження',
|
||||
"ut_pot": "покращити швидкість завантаження на повільних пристроях$Nроблячи інтерфейс менш складним",
|
||||
"ut_srch": "не завантажувати, а перевірити, чи файли вже $N існують на сервері (сканує всі папки, які ви можете читати)",
|
||||
"ut_par": "призупинити завантаження, встановивши 0$N$Nзбільшіть, якщо ваше з'єднання повільне / висока затримка$N$Nзалишіть 1 в локальній мережі або якщо HDD сервера є вузьким місцем",
|
||||
|
|
@ -225,7 +225,7 @@ Ls.ukr = {
|
|||
|
||||
"ct_grid": '田 сітка',
|
||||
"ct_ttips": '◔ ◡ ◔">ℹ️ підказки',
|
||||
"ct_thumb": 'у режимі сітки, перемкнути іконки або мініатюри$NГаряча клавіша: T">🖼️ мініатюри',
|
||||
"ct_thumb": 'перемкнути іконки або мініатюри$NГаряча клавіша: T">🖼️ мініатюри',
|
||||
"ct_csel": 'використовувати CTRL і SHIFT для вибору файлів у режимі сітки">вибір',
|
||||
"ct_dsel": 'використовувати вибір перетягуванням у режимі сітки">перетягнути', //m
|
||||
"ct_dl": 'примусове завантаження (не показувати вбудовано) під час натискання на файл">dl', //m
|
||||
|
|
@ -288,9 +288,9 @@ Ls.ukr = {
|
|||
"ml_drc": "компресор динамічного діапазону",
|
||||
"ml_ss": "пропускати тишу", //m
|
||||
|
||||
"mt_loop": "зациклити/повторити одну пісню\">🔁",
|
||||
"mt_loop": "зациклити/повторити одну пісню",
|
||||
"mt_one": "зупинити після однієї пісні\">1️⃣",
|
||||
"mt_shuf": "перемішати пісні в кожній папці\">🔀",
|
||||
"mt_shuf": "перемішати пісні в кожній папці",
|
||||
"mt_aplay": "автовідтворення, якщо є ID пісні в посиланні, по якому ви клацнули для доступу до сервера$N$Nвідключення цього також зупинить оновлення URL сторінки з ID пісень під час відтворення музики, щоб запобігти автовідтворенню, якщо ці налаштування втрачені, але URL залишається\">a▶",
|
||||
"mt_preload": "почати завантаження наступної пісні ближче до кінця для безперервного відтворення\">preload",
|
||||
"mt_prescan": "перейти до наступної папки перед тим, як остання пісня$Nзакінчиться, підтримуючи веб-браузер у робочому стані$Nщоб він не зупинив відтворення\">nav",
|
||||
|
|
@ -305,7 +305,7 @@ Ls.ukr = {
|
|||
"mt_follow": "тримати трек, що відтворюється, у полі зору\">🎯",
|
||||
"mt_compact": "компактні елементи керування\">⟎",
|
||||
"mt_uncache": "очистити кеш (спробуйте це, якщо ваш браузер закешував$Nпошкоджену копію пісні, тому відмовляється її відтворювати)\">uncache",
|
||||
"mt_mloop": "зациклити відкриту папку\">🔁 loop",
|
||||
"mt_mloop": "зациклити відкриту папку",
|
||||
"mt_mnext": "завантажити наступну папку і продовжити\">📂 next",
|
||||
"mt_mstop": "зупинити відтворення\">⏸ stop",
|
||||
"mt_cflac": "конвертувати flac / wav в {0}\">flac",
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ Ls.vie = {
|
|||
"tt": "Tiếng Việt",
|
||||
|
||||
"cols": {
|
||||
"c": "nút hành động",
|
||||
"!": "nút hành động",
|
||||
"dur": "thời lượng",
|
||||
"q": "chất lượng / bitrate",
|
||||
"Ac": "codec âm thanh",
|
||||
|
|
@ -11,7 +11,7 @@ Ls.vie = {
|
|||
"Ahash": "checksum âm thanh",
|
||||
"Vhash": "checksum video",
|
||||
"Res": "độ phân giải",
|
||||
"T": "loại tệp",
|
||||
"Ext": "loại tệp",
|
||||
"aq": "chất lượng âm thanh / bitrate",
|
||||
"vq": "chất lượng video / bitrate",
|
||||
"pixfmt": "subsampling / pixel structure",
|
||||
|
|
@ -30,7 +30,7 @@ Ls.vie = {
|
|||
["G", "chuyển đổi chế độ xem danh sách / lưới"],
|
||||
["T", "chuyển đổi ảnh thu nhỏ / biểu tượng"],
|
||||
["⇧ A/D", "kích thước ảnh thu nhỏ"],
|
||||
["ctrl-K", "xoá mục đã chọn"],
|
||||
["ctrl-K/Del", "xoá mục đã chọn"],
|
||||
["ctrl-X", "cắt mục đã chọn vào bảng nhớ tạm"],
|
||||
["ctrl-C", "sao chép mục đã chọn vào bảng nhớ tạm"],
|
||||
["ctrl-V", "dán (di chuyển/sao chép) tại đây"],
|
||||
|
|
@ -102,9 +102,9 @@ Ls.vie = {
|
|||
"ht_and": " và ",
|
||||
|
||||
"goh": "bảng điều khiển",
|
||||
"gop": 'thư mục trước">trước',
|
||||
"gou": 'thư mục cha">lên',
|
||||
"gon": 'thư mục sau">tiếp',
|
||||
"gop": 'thư mục trước',
|
||||
"gou": 'thư mục cha',
|
||||
"gon": 'thư mục sau',
|
||||
"logout": "Đăng xuất ",
|
||||
"login": "Đăng nhập",
|
||||
"access": "quyền truy cập",
|
||||
|
|
@ -154,7 +154,7 @@ Ls.vie = {
|
|||
"ut_u2ts": "sao chép dấu thời gian chỉnh sửa cuối$Ntừ hệ thống tệp của bạn lên máy chủ\">📅",
|
||||
"ut_ow": "ghi đè các tệp đã có trên máy chủ?$N🛡️: không bao giờ (sẽ tạo tên tệp mới)$N🕒: ghi đè nếu tệp trên máy chủ cũ hơn$N♻️: luôn ghi đè nếu hai tệp khác nhau$N⏭️: bỏ qua vô điều kiện tất cả các tệp hiện có", //m
|
||||
"ut_mt": "tiếp tục hash các tệp khác trong khi tải lên$N$NCó thể tắt nếu CPU hoặc HDD của bạn bị nghẽn",
|
||||
"ut_ask": 'yêu cầu xác nhận trước khi bắt đầu tải lên">💭',
|
||||
"ut_ask": 'yêu cầu xác nhận trước khi bắt đầu tải lên',
|
||||
"ut_pot": "cải thiện tốc độ tải lên trên các thiết bị chậm$Nbằng cách đơn giản hoá giao diện người dùng",
|
||||
"ut_srch": "không tải lên, chỉ kiểm tra xem tệp$Nđã tồn tại trên máy chủ hay chưa (sẽ quét toàn bộ thư mục bạn có quyền đọc)",
|
||||
"ut_par": "tạm dừng tải lên bằng cách đặt thành 0$N$NTăng lên nếu kết nối chậm hoặc độ trễ cao$N$NGiữ ở mức 1 khi dùng LAN hoặc nếu ổ cứng máy chủ bị nghẽn",
|
||||
|
|
@ -226,7 +226,7 @@ Ls.vie = {
|
|||
// settings / tuỳ chọn
|
||||
"ct_grid": '田 chế độ lưới',
|
||||
"ct_ttips": '༼ ◕_◕ ༽">ℹ️ tooltips',
|
||||
"ct_thumb": 'ở chế độ lưới, chuyển biểu tượng hoặc hình thu nhỏ$NPhím tắt: T">🖼️ ảnh thu nhỏ',
|
||||
"ct_thumb": 'chuyển biểu tượng hoặc hình thu nhỏ$NPhím tắt: T">🖼️ ảnh thu nhỏ',
|
||||
"ct_csel": 'dùng CTRL và SHIFT để chọn tệp trong chế độ lưới">sel',
|
||||
"ct_dsel": 'dùng chọn bằng cách kéo trong chế độ lưới">kéo', //m
|
||||
"ct_dl": 'cưỡng chế tải xuống (không hiện thị trong dòng) khi nhấp vào tệp">dl',
|
||||
|
|
@ -292,9 +292,9 @@ Ls.vie = {
|
|||
"ml_drc": "bộ nén dải động",
|
||||
"ml_ss": "bỏ qua khoảng lặng", //m
|
||||
|
||||
"mt_loop": "lặp lại một bài\">🔁",
|
||||
"mt_loop": "lặp lại một bài",
|
||||
"mt_one": "dừng sau một bài\">1️⃣",
|
||||
"mt_shuf": "trộn các bài trong thư mụcr\">🔀",
|
||||
"mt_shuf": "trộn các bài trong thư mụcr",
|
||||
"mt_aplay": "tự động phát nếu có ID bài trong link bạn nhấp để truy cập máy chủ$N$Ntắt tuỳ chọn sẽ ngăn URL của trang cập nhật theo ID bài khi phát nhạc, tránh tự động phát nếu cài đặt mất nhưng URL còn\">a▶",
|
||||
"mt_preload": "bắt đầu tải bài hát tiếp theo khi gần hết bài để phát liền mạch\">preload",
|
||||
"mt_prescan": "chuyển đến thư mục tiếp theo trước khi bài cuối cùng $Nkết thúc, giúp giữ trình duyệt hoạt động $N và không dừng phát nhạc\">nav",
|
||||
|
|
@ -309,7 +309,7 @@ Ls.vie = {
|
|||
"mt_follow": "giữ bài đang phát trong tầm nhìn\">🎯",
|
||||
"mt_compact": "giao diện điều khiển thu gọn\">⟎",
|
||||
"mt_uncache": "xoá bộ nhớ đệm (thử nếu trình duyệt lưu trữ đệm $Nmột bản nhạc bị lỗi và không thể phát)\">uncache",
|
||||
"mt_mloop": "lặp trong thư mục đang mở\">🔁 loop",
|
||||
"mt_mloop": "lặp trong thư mục đang mở",
|
||||
"mt_mnext": "tải thư mục tiếp theo và tiếp tục\">📂 next",
|
||||
"mt_mstop": "dừng phát\">⏸ stop",
|
||||
"mt_cflac": "chuyển flac / wav sang {0}\">flac",
|
||||
|
|
|
|||
|
|
@ -1,27 +1,125 @@
|
|||
:root {
|
||||
color-scheme: dark;
|
||||
|
||||
--font-main: sans-serif;
|
||||
--font-serif: serif;
|
||||
--font-mono: 'scp';
|
||||
|
||||
--fg: #ccc;
|
||||
--fg-max: #fff;
|
||||
--bg-u2: #2b2b2b;
|
||||
--bg-u5: #444;
|
||||
--bg-max: #080808;
|
||||
--a: #fc5;
|
||||
accent-color: var(--a);
|
||||
--radius: 7px;
|
||||
|
||||
--fg-max: #fefefe;
|
||||
--bg-max: #010101;
|
||||
|
||||
--a-hil: rgb(255, 215, 121);
|
||||
--a-dark: rgb(235, 165, 37); /* warning text etc */
|
||||
--a-gray: #ccc;
|
||||
|
||||
--fg: #efefef;
|
||||
--fg-weak: #c4c4c4;
|
||||
|
||||
--bg: #1f1f1f;
|
||||
--bg-half: #01010182;
|
||||
--bg-u1: #212121;
|
||||
--bg-u2: #353535;
|
||||
--bg-u3: #404040;
|
||||
--bg-u5: #4e4e4e;
|
||||
--bg-d1: #111111;
|
||||
--bg-d2: #0e0e0e;
|
||||
--bg-d3: #0b0b0b;
|
||||
|
||||
--bgg: var(--bg);
|
||||
|
||||
background: var(--bg);
|
||||
color: #b9bdc1;
|
||||
color: var(--fg);
|
||||
}
|
||||
html.y {
|
||||
--fg: #222;
|
||||
color-scheme: light;
|
||||
|
||||
--fg-max: #000;
|
||||
--bg-u2: #f7f7f7;
|
||||
--bg-u5: #ccc;
|
||||
--bg-max: #fff;
|
||||
color-scheme: light;
|
||||
|
||||
--a: #07c;
|
||||
|
||||
--a-hil: rgb(121, 193, 255);
|
||||
--a-dark: rgb(7, 95, 183); /* warning text etc */
|
||||
--a-gray: #ccc;
|
||||
|
||||
--fg: #101010;
|
||||
--fg-weak: #323232;
|
||||
|
||||
--bg: #eeeeee;
|
||||
--bg-half: #eeeeee82;
|
||||
--bg-u1: #e3e3e3;
|
||||
--bg-u2: #d6d6d6;
|
||||
--bg-u3: #c7c7c7;
|
||||
--bg-u5: #bcbcbc;
|
||||
--bg-d1: #f4f4f4;
|
||||
--bg-d2: #f5f5f5;
|
||||
--bg-d3: #f6f6f6;
|
||||
|
||||
--chk-fg: var(--fg);
|
||||
--txt-sh: #aaa;
|
||||
--txt-bg: var(--bg-d1);
|
||||
--mp-sh: #0002;
|
||||
|
||||
text-shadow: none;
|
||||
}
|
||||
html.bz {
|
||||
--bg-u2: #202231;
|
||||
@supports (background: hsl(from #ccc, h s l)){
|
||||
:root {
|
||||
--a-hil: hsl(from var(--a) h calc(s * 1.2) l);
|
||||
--a-dark: hsl(from var(--a) h calc(s * 1.3) l); /* warning text etc */
|
||||
--a-gray: hsl(from var(--a) h calc(s * 0.1) l);
|
||||
}
|
||||
}
|
||||
@supports (background: color-mix(in oklab, black, white)){
|
||||
:root, html.y {
|
||||
/* accent color in everything */
|
||||
--fg-max: color-mix(in oklab, #fefefe 95%, var(--a) 5%);
|
||||
--bg-max: color-mix(in oklab, #010101 95%, var(--a) 5%);
|
||||
|
||||
--a-hil: hsl(from color-mix(in oklab, var(--a) 80%, var(--fg-max) 20%) h calc(s * 1.2) l);
|
||||
--a-dark: hsl(from color-mix(in oklab, var(--a) 60%, var(--bg-max) 40%) h calc(s * 1.3) l); /* warning text etc */
|
||||
--a-gray: hsl(from var(--a) h calc(s * 0.1) l);
|
||||
|
||||
--fg: color-mix(in oklab, var(--fg-max) 90%, var(--bg-max) 10%);
|
||||
--fg-weak: color-mix(in oklab, var(--fg-max) 70%, var(--bg-max) 30%);
|
||||
|
||||
--bg: color-mix(in oklab, var(--bg-max) 85%, var(--fg-max) 15%);
|
||||
--bg-half: color-mix(in oklab, var(--bg) 50%, transparent 50%);
|
||||
--bg-u1: color-mix(in oklab, var(--bg-max) 80%, var(--fg-max) 20%);
|
||||
--bg-u2: color-mix(in oklab, var(--bg-max) 75%, var(--fg-max) 25%);
|
||||
--bg-u3: color-mix(in oklab, var(--bg-max) 70%, var(--fg-max) 30%);
|
||||
--bg-u5: color-mix(in oklab, var(--bg-max) 65%, var(--fg-max) 35%);
|
||||
--bg-d1: color-mix(in oklab, var(--bg-max) 90%, var(--fg-max) 10%);
|
||||
--bg-d2: color-mix(in oklab, var(--bg-max) 92%, var(--fg-max) 8%);
|
||||
--bg-d3: color-mix(in oklab, var(--bg-max) 95%, var(--fg-max) 5%);
|
||||
}
|
||||
html.y {
|
||||
--bg-max: color-mix(in oklab, #fefefe 95%, var(--a) 5%);
|
||||
--fg-max: color-mix(in oklab, #010101 95%, var(--a) 5%);
|
||||
|
||||
--bg-u1: color-mix(in oklab, var(--bg-max) 92%, var(--fg-max));
|
||||
--bg-u2: color-mix(in oklab, var(--bg-max) 95%, var(--fg-max));
|
||||
--bg-u5: color-mix(in oklab, var(--bg-max) 82%, var(--fg-max));
|
||||
--bg: color-mix(in oklab, var(--bg-max) 98%, var(--fg-max));
|
||||
}
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'scp';
|
||||
font-display: swap;
|
||||
src: local('Source Code Pro Regular'), local('SourceCodePro-Regular'), url(deps/scp.woff2) format('woff2');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'orbitron';
|
||||
font-display: swap;
|
||||
src: url(deps/orbitron.woff2) format('woff2');
|
||||
}
|
||||
html {
|
||||
text-size-adjust: 100%;
|
||||
-webkit-text-size-adjust: 100%;
|
||||
|
|
@ -54,9 +152,8 @@ html {
|
|||
bottom: 5em;
|
||||
right: -1em;
|
||||
line-height: 1.5em;
|
||||
padding: 1em 1.3em;
|
||||
margin-left: 3em;
|
||||
border-width: .4em 0;
|
||||
padding: 1em 2em 1em 1em;
|
||||
border-width: 1px;
|
||||
overflow-wrap: break-word;
|
||||
transform: translateX(100%);
|
||||
transition:
|
||||
|
|
@ -92,17 +189,16 @@ html {
|
|||
display: inline-block;
|
||||
position: absolute;
|
||||
overflow: hidden;
|
||||
left: 0;
|
||||
width: 0;
|
||||
right: 0;
|
||||
top: 0;
|
||||
opacity: 0;
|
||||
padding: .3em 0;
|
||||
margin: -.3em 0 0 0;
|
||||
line-height: 1.3em;
|
||||
color: #000;
|
||||
border: none;
|
||||
outline: none;
|
||||
text-shadow: none;
|
||||
border-radius: .5em 0 0 .5em;
|
||||
border-radius: .4em;
|
||||
transition: left .3s, width .3s, padding .3s, opacity .3s;
|
||||
}
|
||||
#toastb {
|
||||
|
|
@ -130,9 +226,7 @@ html {
|
|||
transform: initial;
|
||||
}
|
||||
#toast.vis #toastc {
|
||||
left: -2em;
|
||||
width: .4em;
|
||||
padding: .3em .8em;
|
||||
padding: .3em .5em;
|
||||
opacity: 1;
|
||||
}
|
||||
#toast.inf {
|
||||
|
|
@ -200,17 +294,18 @@ html {
|
|||
}
|
||||
#tt.show {
|
||||
padding: 1em 1.3em;
|
||||
border-width: .4em 0;
|
||||
border-width: 1px;
|
||||
height: auto;
|
||||
opacity: 1;
|
||||
}
|
||||
#tt.show.b {
|
||||
padding: 1.5em 2em;
|
||||
border-width: .5em 0;
|
||||
/* border-width: .5em 0; */
|
||||
}
|
||||
.logue code,
|
||||
#modalc code,
|
||||
#tt code {
|
||||
#tt code,
|
||||
.opview code{
|
||||
color: #eee;
|
||||
color: var(--fg-max);
|
||||
background: #444;
|
||||
|
|
@ -220,12 +315,12 @@ html {
|
|||
line-height: 1.7em;
|
||||
}
|
||||
#tt em {
|
||||
color: #f6a;
|
||||
color: var(--a);
|
||||
}
|
||||
html.y #tt {
|
||||
border-color: #888 #000 #777 #000;
|
||||
}
|
||||
html.bz #tt {
|
||||
html.az #tt {
|
||||
border-color: #3b3f58;
|
||||
}
|
||||
html.y #tt,
|
||||
|
|
@ -237,9 +332,6 @@ html.y #toast {
|
|||
background: transparent;
|
||||
border: 1px solid #ccc;
|
||||
}
|
||||
html.y #tt em {
|
||||
color: #d38;
|
||||
}
|
||||
html.y #tth {
|
||||
color: #000;
|
||||
background: #fff;
|
||||
|
|
@ -361,27 +453,20 @@ html.y #tth {
|
|||
border: .25em solid #ccc;
|
||||
border-radius: .4em;
|
||||
}
|
||||
#modali:focus {
|
||||
#modali:focus-visible {
|
||||
border-color: #06d;
|
||||
}
|
||||
#repl_pre {
|
||||
max-width: 24em;
|
||||
}
|
||||
*:focus,
|
||||
*:focus+label,
|
||||
#pctl *:focus,
|
||||
.btn:focus {
|
||||
box-shadow: 0 .1em .2em #fc0 inset;
|
||||
outline: #fc0 solid .1em;
|
||||
*:focus-visible,
|
||||
*:focus-visible+label,
|
||||
.pctl *:focus-visible,
|
||||
.btn:focus-visible {
|
||||
/* box-shadow: 0 .1em .2em #fc0 inset; */
|
||||
outline: var(--a) solid .1em;
|
||||
border-radius: .2em;
|
||||
}
|
||||
html.y *:focus,
|
||||
html.y *:focus+label,
|
||||
html.y #pctl *:focus,
|
||||
html.y .btn:focus {
|
||||
box-shadow: 0 .1em .2em #037 inset;
|
||||
outline: #037 solid .1em;
|
||||
}
|
||||
input, button {
|
||||
font-family: var(--font-main), sans-serif;
|
||||
}
|
||||
|
|
@ -391,12 +476,7 @@ input[type="submit"] {
|
|||
input[type="text"]:focus,
|
||||
input:not([type]):focus,
|
||||
textarea:focus {
|
||||
box-shadow: 0 .1em .3em #fc0, 0 -.1em .3em #fc0;
|
||||
}
|
||||
html.y input[type="text"]:focus,
|
||||
html.y input:not([type]):focus,
|
||||
html.y textarea:focus {
|
||||
box-shadow: 0 .1em .3em #037, 0 -.1em .3em #037;
|
||||
box-shadow: 0 .1em .3em var(--a), 0 -.1em .3em var(--a);
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -412,11 +492,10 @@ html.y textarea:focus {
|
|||
.mdo pre,
|
||||
.mdo code,
|
||||
.mdo a {
|
||||
color: #480;
|
||||
background: #f7f7f7;
|
||||
border: .07em solid #ddd;
|
||||
border-radius: .2em;
|
||||
padding: .1em .3em;
|
||||
padding: 0 .3em;
|
||||
margin: 0 .1em;
|
||||
}
|
||||
.mdo pre,
|
||||
|
|
@ -519,8 +598,7 @@ html.y .mdo a>code {
|
|||
line-height: 1.1em;
|
||||
}
|
||||
.mdo pre code:hover {
|
||||
background: #fec;
|
||||
color: #360;
|
||||
background: #ddd;
|
||||
}
|
||||
.mdo table {
|
||||
border-collapse: collapse;
|
||||
|
|
@ -565,7 +643,7 @@ hr {
|
|||
color: #fff;
|
||||
background: #444;
|
||||
font-weight: normal;
|
||||
border-top: .4em solid #fb0;
|
||||
border-top: .4em solid rgba(203, 203, 203, 0.634);
|
||||
border-bottom: .4em solid #777;
|
||||
border-radius: 0 1em 0 1em;
|
||||
margin: 3em 0 1em 0;
|
||||
|
|
@ -592,7 +670,7 @@ hr {
|
|||
}
|
||||
html.z .mdo pre,
|
||||
html.z .mdo code {
|
||||
color: #8c0;
|
||||
color: rgb(209, 209, 209);
|
||||
background: #1a1a1a;
|
||||
border: .07em solid #333;
|
||||
}
|
||||
|
|
@ -611,10 +689,10 @@ hr {
|
|||
}
|
||||
html.z .mdo h1 {
|
||||
background: #383838;
|
||||
border-top: .4em solid #b80;
|
||||
border-top: .4em solid rgba(203, 203, 203, 0.634);
|
||||
border-bottom: .4em solid #4c4c4c;
|
||||
}
|
||||
html.bz .mdo h1 {
|
||||
html.az .mdo h1 {
|
||||
background: #202231;
|
||||
border: 1px solid #2d2f45;
|
||||
border-width: 0 0 .4em 0;
|
||||
|
|
@ -623,8 +701,8 @@ hr {
|
|||
background: #444;
|
||||
border-bottom: .22em solid #555;
|
||||
}
|
||||
html.bz .mdo h2,
|
||||
html.bz .mdo h3 {
|
||||
html.az .mdo h2,
|
||||
html.az .mdo h3 {
|
||||
background: transparent;
|
||||
border-color: #3b3f58;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -50,8 +50,21 @@ catch (ex) {
|
|||
up2k = up2k_init(false);
|
||||
}
|
||||
catch (ex) {
|
||||
ebi('h_up2kcfg').style.display =
|
||||
ebi('u2btn_ct').style.display =
|
||||
ebi('u2c3t').style.display =
|
||||
ebi('up_info').style.display =
|
||||
ebi('opa_up').style.display =
|
||||
'none'
|
||||
|
||||
ebi('uq_up').onclick = function(){
|
||||
modaltoggle('bup', true);
|
||||
ebi('bup_btn').click();
|
||||
}
|
||||
|
||||
console.log('up2k init failed:', ex);
|
||||
toast.err(10, 'could not initialize up2k\n\n' + basenames(ex));
|
||||
toast.err(3, 'could not initialize up2k\n\n' + basenames(ex));
|
||||
|
||||
}
|
||||
}
|
||||
treectl.onscroll();
|
||||
|
|
@ -826,6 +839,7 @@ function up2k_init(subtle) {
|
|||
|
||||
var loading_deps = false;
|
||||
function init_deps() {
|
||||
console.log('up2k init deps');
|
||||
if (!loading_deps && !got_deps()) {
|
||||
var fn = 'sha512.' + sha_js + '.js',
|
||||
m = L.u_https1 + ' <a href="' + (location + '').replace(':', 's:') + '">' + L.u_https2 + '</a> ' + L.u_https3;
|
||||
|
|
@ -871,7 +885,7 @@ function up2k_init(subtle) {
|
|||
return false;
|
||||
}
|
||||
|
||||
setmsg(suggest_up2k, 'msg');
|
||||
//setmsg(suggest_up2k, 'msg');
|
||||
|
||||
var u2szs = u2sz.split(','),
|
||||
u2sz_min = parseInt(u2szs[0]),
|
||||
|
|
@ -904,7 +918,9 @@ function up2k_init(subtle) {
|
|||
uc.ow = parseInt(sread('u2ow', ['0', '1', '2', '3']) || u2ow);
|
||||
uc.owt = ['🛡️', '🕒', '♻️', '⏭️'];
|
||||
function set_ow() {
|
||||
QS('label[for="u2ow"]').innerHTML = uc.owt[uc.ow];
|
||||
var lbls = QSA('label[for="u2ow"]');
|
||||
for(var i=0; i<lbls.length; i++)
|
||||
lbls[i].innerHTML = uc.owt[uc.ow];
|
||||
ebi('u2ow').checked = true; //cosmetic
|
||||
}
|
||||
ebi('u2ow').onclick = function (e) {
|
||||
|
|
@ -1015,7 +1031,7 @@ function up2k_init(subtle) {
|
|||
|
||||
modal.confirm(L.u_nav_m, uf, ud, null, L.u_nav_b);
|
||||
}
|
||||
ebi('u2btn').onclick = nav;
|
||||
ebi('uq_up').onclick = ebi('u2btn').onclick = nav;
|
||||
|
||||
var nenters = 0;
|
||||
function ondrag(e) {
|
||||
|
|
@ -1054,7 +1070,24 @@ function up2k_init(subtle) {
|
|||
function onoverbtn(e) {
|
||||
return onovercmn(this, e, true);
|
||||
}
|
||||
function checkDropMode(){
|
||||
if(ebi('fsearch').checked){
|
||||
ebi('srch_zd').style.display = '';
|
||||
ebi('up_zd').style.display = 'none';
|
||||
ebi('srch_dz').style.display = '';
|
||||
ebi('up_dz').style.display = 'none';
|
||||
}
|
||||
else{
|
||||
ebi('srch_zd').style.display = 'none';
|
||||
ebi('up_zd').style.display = '';
|
||||
ebi('srch_dz').style.display = 'none';
|
||||
ebi('up_dz').style.display = '';
|
||||
}
|
||||
}
|
||||
function onovercmn(self, e, btn) {
|
||||
if(e.dataTransfer && e.dataTransfer.getData("text") && e.dataTransfer.getData("text").startsWith(window.location.origin)){
|
||||
return;
|
||||
}
|
||||
try {
|
||||
var ok = false, dt = e.dataTransfer.types;
|
||||
for (var a = 0; a < dt.length; a++)
|
||||
|
|
@ -1066,7 +1099,7 @@ function up2k_init(subtle) {
|
|||
if (toast.txt == L.u_uri)
|
||||
toast.hide();
|
||||
}
|
||||
else
|
||||
else if (!window.drag || !drag.no_warn)
|
||||
return toast.inf(10, L.u_uri) || true;
|
||||
}
|
||||
|
||||
|
|
@ -1087,6 +1120,7 @@ function up2k_init(subtle) {
|
|||
if (btn)
|
||||
return;
|
||||
|
||||
checkDropMode();
|
||||
clmod(ebi('drops'), 'vis', 1);
|
||||
var v = self.getAttribute('v');
|
||||
if (v)
|
||||
|
|
@ -1100,6 +1134,7 @@ function up2k_init(subtle) {
|
|||
clmod(ebi(v), 'hl');
|
||||
|
||||
if (--nenters <= 0) {
|
||||
checkDropMode();
|
||||
clmod(ebi('drops'), 'vis');
|
||||
clmod(ebi('up_dz'), 'hl');
|
||||
clmod(ebi('srch_dz'), 'hl');
|
||||
|
|
@ -1114,6 +1149,8 @@ function up2k_init(subtle) {
|
|||
document.body.ondrop = gotfile;
|
||||
ebi('u2btn').ondrop = gotfile;
|
||||
ebi('u2btn').ondragover = onoverbtn;
|
||||
ebi('wrap').ondrop = gotfile;
|
||||
ebi('wrap').ondragover = onoverbtn;
|
||||
|
||||
var drops = [ebi('up_dz'), ebi('srch_dz')];
|
||||
for (var a = 0; a < 2; a++) {
|
||||
|
|
@ -1156,12 +1193,24 @@ function up2k_init(subtle) {
|
|||
|
||||
function gotfile(e) {
|
||||
ev(e);
|
||||
|
||||
if (e.dataTransfer && e.dataTransfer.getData("text") && e.dataTransfer.getData("text").startsWith(window.location.origin)){
|
||||
var currLink = e.dataTransfer.getData("text");
|
||||
console.log("wrap.ondrop: " + currLink);
|
||||
fileman.clip = currLink.split("\n");
|
||||
|
||||
fileman.cut();
|
||||
msel.evsel();
|
||||
fileman.paste(true);
|
||||
return
|
||||
}
|
||||
|
||||
nenters = 0;
|
||||
offdrag.call(this);
|
||||
var dz = this && this.getAttribute('id');
|
||||
if (!dz && e && e.clientY)
|
||||
// cuo2duo fallback
|
||||
dz = e.clientY < window.innerHeight / 2 ? 'up_dz' : 'srch_dz';
|
||||
// var dz = this && this.getAttribute('id');
|
||||
// if (!dz && e && e.clientY)
|
||||
// // cuo2duo fallback
|
||||
// dz = e.clientY < window.innerHeight / 2 ? 'up_dz' : 'srch_dz';
|
||||
|
||||
var err = this.getAttribute('err');
|
||||
if (err)
|
||||
|
|
@ -1169,11 +1218,11 @@ function up2k_init(subtle) {
|
|||
|
||||
toast.inf(0, L.u_scan);
|
||||
|
||||
if ((dz == 'up_dz' && uc.fsearch) || (dz == 'srch_dz' && !uc.fsearch))
|
||||
tgl_fsearch();
|
||||
// if ((dz == 'up_dz' && uc.fsearch) || (dz == 'srch_dz' && !uc.fsearch))
|
||||
// tgl_fsearch();
|
||||
|
||||
if (!QS('#op_up2k.act'))
|
||||
goto('up2k');
|
||||
if(!uc.fsearch)
|
||||
up2k.init_deps();
|
||||
|
||||
var files,
|
||||
is_itemlist = false;
|
||||
|
|
@ -1978,7 +2027,7 @@ function up2k_init(subtle) {
|
|||
ng = pvis.ctr.ng,
|
||||
spd = Math.floor(st.bytes.finished / st.time.busy),
|
||||
suf = '\n\n{0} @ {1}/s'.format(shumantime(st.time.busy), humansize(spd)),
|
||||
t = uc.ask_up ? 0 : 10;
|
||||
t = 10; // uc.ask_up ? 0 : 10;
|
||||
|
||||
console.log('toast', ok, ng);
|
||||
|
||||
|
|
@ -3019,41 +3068,6 @@ function up2k_init(subtle) {
|
|||
/// config ui
|
||||
//
|
||||
|
||||
function onresize(e) {
|
||||
// 10x faster than matchMedia('(min-width
|
||||
var bar = ebi('ops'),
|
||||
wpx = window.innerWidth,
|
||||
fpx = parseInt(getComputedStyle(bar)['font-size']),
|
||||
wem = wpx * 1.0 / fpx,
|
||||
wide = wem > 57 ? 'w' : '',
|
||||
parent = ebi(wide ? 'u2btn_cw' : 'u2btn_ct'),
|
||||
btn = ebi('u2btn');
|
||||
|
||||
if (btn.parentNode !== parent) {
|
||||
parent.appendChild(btn);
|
||||
ebi('u2conf').className = ebi('u2cards').className = ebi('u2etaw').className = wide;
|
||||
}
|
||||
|
||||
wide = wem > 86 ? 'ww' : wide;
|
||||
parent = ebi(wide == 'ww' ? 'u2c3w' : 'u2c3t');
|
||||
var its = [ebi('u2etaw'), ebi('u2cards')];
|
||||
if (its[0].parentNode !== parent) {
|
||||
ebi('u2conf').className = wide;
|
||||
for (var a = 0; a < 2; a++) {
|
||||
parent.appendChild(its[a]);
|
||||
its[a].className = wide;
|
||||
}
|
||||
}
|
||||
}
|
||||
onresize100.add(onresize, true);
|
||||
|
||||
if (MOBILE) {
|
||||
// android-chrome wobbles for a bit; firefox / iOS-safari are OK
|
||||
setTimeout(onresize, 20);
|
||||
setTimeout(onresize, 100);
|
||||
setTimeout(onresize, 500);
|
||||
}
|
||||
|
||||
var o = QSA('#u2conf .c *[tt]');
|
||||
for (var a = o.length - 1; a >= 0; a--) {
|
||||
o[a].parentNode.getElementsByTagName('input')[0].setAttribute('tt', o[a].getAttribute('tt'));
|
||||
|
|
@ -3284,7 +3298,10 @@ function up2k_init(subtle) {
|
|||
|
||||
try {
|
||||
clmod(ebi('u2c3w'), 's', !can_write);
|
||||
QS('label[for="fsearch"]').style.display = QS('#fsearch').style.display = fixed ? 'none' : '';
|
||||
QS('#fsearch').style.display = fixed ? 'none' : '';
|
||||
var lbls = QSA('label[for="fsearch"]');
|
||||
for(var i=0; i<lbls.length; i++)
|
||||
lbls[i].style.display = fixed ? 'none' : '';
|
||||
}
|
||||
catch (ex) { }
|
||||
|
||||
|
|
@ -3293,6 +3310,7 @@ function up2k_init(subtle) {
|
|||
desc = uc.fsearch ? L.ul_btns : L.ul_btnu;
|
||||
|
||||
clmod(ebi('op_up2k'), 'srch', uc.fsearch);
|
||||
clmod(ebi('u2conf'), 'srch', uc.fsearch);
|
||||
ebi('u2bm').innerHTML = ico + ' <sup>' + desc + '</sup>';
|
||||
}
|
||||
catch (ex) { }
|
||||
|
|
@ -3308,7 +3326,6 @@ function up2k_init(subtle) {
|
|||
|
||||
draw_turbo();
|
||||
draw_life();
|
||||
onresize();
|
||||
}
|
||||
|
||||
function apply_flag_cfg() {
|
||||
|
|
@ -3440,8 +3457,8 @@ function warn_uploader_busy(e) {
|
|||
tt.init();
|
||||
favico.init();
|
||||
ebi('ico1').onclick = function () {
|
||||
var a = favico.txt == this.textContent;
|
||||
swrite('icot', a ? 'c' : this.textContent);
|
||||
var a = favico.txt == '🎉';
|
||||
swrite('icot', a ? 'c' : '🎉');
|
||||
swrite('icof', a ? 'fc5' : '000');
|
||||
swrite('icob', a ? '222' : '');
|
||||
favico.init();
|
||||
|
|
|
|||
|
|
@ -20,6 +20,13 @@ if (window.CGV)
|
|||
Object.assign(window, window.CGV);
|
||||
|
||||
|
||||
function supportsEmoji() {
|
||||
var ctx = document.createElement('canvas').getContext('2d');
|
||||
ctx.canvas.width = ctx.canvas.height = 1;
|
||||
ctx.fillText('🎉', -4, 4);
|
||||
return ctx.getImageData(0, 0, 1, 1).data[3] > 0; // Checks if pixels were drawn
|
||||
}
|
||||
|
||||
var wah = '',
|
||||
STG = null,
|
||||
NOAC = 'autocorrect="off" autocapitalize="off"',
|
||||
|
|
@ -35,6 +42,8 @@ var wah = '',
|
|||
VCHROME = CHROME ? 1 : 0,
|
||||
UA = '' + navigator.userAgent,
|
||||
IE = !!document.documentMode,
|
||||
EMOJI = supportsEmoji(),
|
||||
N3DS = /Nintendo 3DS/i.test(UA),
|
||||
FIREFOX = ('netscape' in window) && / rv:/.test(UA),
|
||||
IPHONE = TOUCH && /iPhone|iPad|iPod/i.test(UA),
|
||||
LINUX = /Linux/.test(UA),
|
||||
|
|
@ -43,6 +52,10 @@ var wah = '',
|
|||
APPLE = IPHONE || MACOS,
|
||||
APPLEM = TOUCH && APPLE;
|
||||
|
||||
window.onpointerdown = function (e) {
|
||||
TOUCH = e.pointerType === "touch";
|
||||
}
|
||||
|
||||
if (!window.WebAssembly || !WebAssembly.Memory)
|
||||
window.WebAssembly = false;
|
||||
|
||||
|
|
@ -766,7 +779,7 @@ function assert_vp(path) {
|
|||
}
|
||||
|
||||
|
||||
function linksplit(rp, base, id) {
|
||||
function linksplit(rp, base, id, flink) {
|
||||
var ret = [],
|
||||
apath = base || '/',
|
||||
q = null;
|
||||
|
|
@ -803,7 +816,7 @@ function linksplit(rp, base, id) {
|
|||
link += '" id="' + id;
|
||||
}
|
||||
|
||||
ret.push('<a href="' + apath + link + '">' + vlink + '</a>');
|
||||
ret.push('<a href="' + apath + link + '" class="' + (!rp ? 'flink' : '') + '">' + vlink + '</a>');
|
||||
apath += link;
|
||||
}
|
||||
return ret;
|
||||
|
|
@ -1324,8 +1337,12 @@ function bcfg_upd_ui(name, val) {
|
|||
if (!o)
|
||||
return val;
|
||||
|
||||
if (o.getAttribute('type') == 'checkbox')
|
||||
if (o.getAttribute('type') == 'checkbox'){
|
||||
o.checked = val;
|
||||
var lbls = QSA('label[for="' + o.id +'"]');
|
||||
for(var i=0; i<lbls.length; i++)
|
||||
clmod(lbls[i], 'on', val);
|
||||
}
|
||||
else if (o) {
|
||||
clmod(o, 'on', val);
|
||||
}
|
||||
|
|
@ -1397,7 +1414,7 @@ function hist_replace(url) {
|
|||
|
||||
function sethash(hv) {
|
||||
if (window.history && history.replaceState) {
|
||||
hist_replace(location.pathname + location.search + '#' + hv);
|
||||
hist_replace(location.pathname + location.search + (hv ? '#' : '') + hv);
|
||||
}
|
||||
else {
|
||||
location.hash = hv;
|
||||
|
|
@ -1590,6 +1607,18 @@ var tt = (function () {
|
|||
return el.getAttribute('tt');
|
||||
};
|
||||
|
||||
r.parse = function(msg){
|
||||
if(msg == null || msg.length == 0)
|
||||
return msg;
|
||||
if (msg.startsWith('`')) {
|
||||
var x = false;
|
||||
msg = msg.slice(1);
|
||||
while (msg.indexOf('`') + 1)
|
||||
msg = msg.replace('`', (x = !x) ? '<code>' : '</code>');
|
||||
}
|
||||
return msg.replace(/\$N/g, "<br />");
|
||||
}
|
||||
|
||||
r.show = function () {
|
||||
clearTimeout(tev);
|
||||
if (r.skip) {
|
||||
|
|
@ -1600,13 +1629,6 @@ var tt = (function () {
|
|||
if (!msg)
|
||||
return;
|
||||
|
||||
if (msg.startsWith('`')) {
|
||||
var x = false;
|
||||
msg = msg.slice(1);
|
||||
while (msg.indexOf('`') + 1)
|
||||
msg = msg.replace('`', (x = !x) ? '<code>' : '</code>')
|
||||
}
|
||||
|
||||
r.el = this;
|
||||
var pos = this.getBoundingClientRect(),
|
||||
dir = this.getAttribute('ttd') || '',
|
||||
|
|
@ -1622,7 +1644,7 @@ var tt = (function () {
|
|||
r.tt.style.left = '0';
|
||||
r.tt.style.top = '0';
|
||||
|
||||
r.tt.innerHTML = msg.replace(/\$N/g, "<br />");
|
||||
r.tt.innerHTML = r.parse(msg);
|
||||
r.el.addEventListener('mouseleave', r.hide);
|
||||
window.addEventListener('scroll', r.hide);
|
||||
clmod(r.tt, 'show', 1);
|
||||
|
|
@ -1643,6 +1665,10 @@ var tt = (function () {
|
|||
|
||||
r.hide = function (e) {
|
||||
//ev(e); // eats checkbox-label clicks
|
||||
|
||||
r.show.bind(null);
|
||||
r.el = null;
|
||||
|
||||
clearTimeout(tev);
|
||||
window.removeEventListener('scroll', r.hide);
|
||||
|
||||
|
|
@ -1736,6 +1762,8 @@ var toast = (function () {
|
|||
scrolling = false,
|
||||
obj = mknod('div', 'toast');
|
||||
|
||||
clmod(obj, 'hide', true);
|
||||
|
||||
document.body.appendChild(obj);
|
||||
r.visible = false;
|
||||
r.txt = null;
|
||||
|
|
@ -1816,7 +1844,7 @@ var toast = (function () {
|
|||
setcvar('--tmstep', Math.floor(sec * 20));
|
||||
html += '<div id="toastt"></div>';
|
||||
}
|
||||
obj.innerHTML = html + '<a href="#" id="toastc">x</a><div id="toastb">' + lf2br(txt) + '</div>';
|
||||
obj.innerHTML = html + '<a href="#" id="toastc"><span class="x">×</span></a><div id="toastb">' + lf2br(txt) + '</div>';
|
||||
obj.className = cl;
|
||||
sec += obj.offsetWidth;
|
||||
obj.className += ' vis';
|
||||
|
|
@ -2264,7 +2292,7 @@ var favico = (function () {
|
|||
|
||||
var gx = function (txt) {
|
||||
return (svg_decl +
|
||||
'<svg version="1.1" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg">\n' +
|
||||
'<svg version="1.1" viewBox="0 0 70 70" xmlns="http://www.w3.org/2000/svg">\n' +
|
||||
(r.bg ? '<rect width="100%" height="100%" rx="16" fill="#' + r.bg + '" />\n' : '') +
|
||||
'<text x="50%" y="55%" dominant-baseline="middle" text-anchor="middle"' +
|
||||
' font-family="sans-serif" font-weight="bold" font-size="64px"' +
|
||||
|
|
@ -2301,6 +2329,11 @@ var favico = (function () {
|
|||
document.head.appendChild(r.tag);
|
||||
}
|
||||
r.tag.href = 'data:image/svg+xml;base64,' + b64;
|
||||
|
||||
var fiop = ebi('favico_onpage');
|
||||
if(fiop != null){
|
||||
fiop.innerHTML = svg ? atob(b64) : gx(r.txt);
|
||||
}
|
||||
};
|
||||
|
||||
r.init = function () {
|
||||
|
|
@ -2314,8 +2347,7 @@ var favico = (function () {
|
|||
scfg_bind(r, 'bg', 'icob', bg, r.upd);
|
||||
r.upd();
|
||||
};
|
||||
|
||||
r.to = setTimeout(r.init, 100);
|
||||
r.init();
|
||||
return r;
|
||||
})();
|
||||
|
||||
|
|
@ -2331,7 +2363,7 @@ function bchrome() {
|
|||
return;
|
||||
|
||||
try {
|
||||
v = cprop('--bg-u3');
|
||||
v = cprop('--a');
|
||||
}
|
||||
catch (ex) { }
|
||||
o.setAttribute('content', v ? v : document.documentElement.className.indexOf('y') + 1 ? '#eee' : '#333');
|
||||
|
|
@ -2399,4 +2431,25 @@ function xhrchk(xhr, prefix, e404, lvl, tag) {
|
|||
return fun(0, prefix + xhr.status + ": " + errtxt, tag);
|
||||
}
|
||||
|
||||
// register service worker
|
||||
// ToDo: set http header: Service-Worker-Allowed: /
|
||||
// otherwise it will fail to register
|
||||
// https://stackoverflow.com/questions/49084718/how-exactly-add-service-worker-allowed-to-register-service-worker-scope-in-upp
|
||||
window.addEventListener('load', async () => {
|
||||
try {
|
||||
const registration = await navigator.serviceWorker.register("/.cpr/w/sw.js", {
|
||||
scope: "/",
|
||||
});
|
||||
if (registration.installing) {
|
||||
console.log("Service worker installing");
|
||||
} else if (registration.waiting) {
|
||||
console.log("Service worker installed");
|
||||
} else if (registration.active) {
|
||||
console.log("Service worker active");
|
||||
}
|
||||
} catch (error) {
|
||||
console.error(`Registration failed with ${error}`);
|
||||
}
|
||||
});
|
||||
|
||||
J_UTL = 2;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,80 @@
|
|||
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
|
||||
# 2026-0428-0907 `v1.21.0` UI V1.5
|
||||
|
||||
## 😴 tl;dr
|
||||
|
||||
* the web UI changed a LOT
|
||||
* nice mobile layout
|
||||
* try setting an accent color in the theme settings
|
||||
* drag n drop within copyparty and between browser windows of same server
|
||||
* the used storage metric is now at the bottom of the folder tree
|
||||
* the account details and control panel link are now in the account popup (top right)
|
||||
* media player settings and normal settings have merged
|
||||
* new file / new folder have moved from the top bar to the [+] button / right click menu (also accessible via long press on mobile)
|
||||
|
||||
## 🧪 new features
|
||||
|
||||
* [Add moving files into other folders by dragging](https://github.com/tilse/copyparty-uiV1.5/pull/1) within the browser window to move files or folders
|
||||
* extend drag n drop logic to work between browser windows
|
||||
* custom accent color setting added. works best for light and dark themes (the first 4 in the list)
|
||||
* custom corner rounding in settings
|
||||
* added 2 new themes: poison // wing
|
||||
* long press on mobile selects the element in grid view by default
|
||||
* long pressing selected items brings up the context menu
|
||||
* selection checkboxes on items in grid view
|
||||
* the tree and path can be visible at the same time
|
||||
* resize drag handle at the edge of the folder tree
|
||||
* new design for placeholder thumbnails
|
||||
* #386 gallery view toggle for smaller margins / bigger image previews
|
||||
* settings and upload are now a popup/modal by default (can be moved)
|
||||
* settings can be navigated via sections and former tooltip info is now always visible
|
||||
* new floating [+] button in bottom right for quickly creating files / folders / uploading
|
||||
* searching folders / subfolders is now possible, and is the new default when clicking the search button. old-school extended search options are accessible via down arrow in the search box
|
||||
* storage capacity progress bar at bottom of folder tree
|
||||
* account button with popup in the top right
|
||||
* search in "quotes with spaces" is now possible to find file names including spaces
|
||||
* new simpler audio progress bar slider added as option
|
||||
* quick setting for changing loop mode via bottom media player bar
|
||||
* a volume icon that works as a mute toggle
|
||||
* name of playing audio is now displayed
|
||||
* audio equalizer can be operated via sliders
|
||||
* image viewer has nearest neighbor scale mode toggle
|
||||
* toggle to scale up small grid thumbnails to fit
|
||||
|
||||
## 🩹 bugfixes
|
||||
|
||||
* #1455 tooltips disappear more consistently when element is no longer hovered
|
||||
* scrollable tree header so all options are accessible independent of tree width
|
||||
* #1378 improved mobile layout
|
||||
* media player has "fade" option now to disable fade in / fade out, which fixes play / pause on iOS lockscreens
|
||||
* #1002 proper overflow handling for text files or readmes (svg editor still overflows, but it doesn't break the page layout anymore)
|
||||
|
||||
## 🔧 other changes
|
||||
|
||||
* media player settings have moved to the main settings modal
|
||||
* creating files / folders is now done via right click menu, or the plus button in the bottom right
|
||||
* grid view toggle is now in grid header
|
||||
* default file sizes in MB
|
||||
* control panel button now lives in the account popup in the top bar
|
||||
* searching for files via drag n drop is now only possible when the search mode is toggled in the up2k UI
|
||||
* bup is an optional dropdown in the up2k modal
|
||||
* many mobile layout usability improvements
|
||||
* more consistent areas for clicking to navigate left / right in the image viewer (they don't depend on image fill mode anymore)
|
||||
* "folder up" / "next sibling" / "previous sibling" are now icon buttons at the top
|
||||
* new look for the login screen
|
||||
* pm-monokai theme has become "flat dark"
|
||||
|
||||
## 🌠 fun facts
|
||||
|
||||
* full support for the new 3DS, except some emoji rendering issues
|
||||
* it was a lot of work to keep all themes intact
|
||||
* some UI elements have gained IDs, so it should be easier to style them
|
||||
|
||||
## 😔 unfun facts
|
||||
|
||||
* #1209 (partially), #711 added a setting that gets rid of (most) emojis
|
||||
|
||||
|
||||
# 2026-0424-2222 `v1.20.14` autolocalization
|
||||
|
||||
## 🧪 new features
|
||||
|
|
@ -57,7 +133,6 @@
|
|||
* this release was powered by [一体いつから (TaKo Hardcore bootleg)](https://soundcloud.com/takomusiccc/tako-hardcore-bootleg) followed by [Fighting My Way (YUPPUN Hardcore Remix)](https://soundcloud.com/yuppun/fightingmyway) (shd is a good dj)
|
||||
|
||||
|
||||
|
||||
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
|
||||
# 2026-0323-0328 `v1.20.13` dothidden
|
||||
|
||||
|
|
|
|||
|
|
@ -1476,7 +1476,7 @@
|
|||
see-dots
|
||||
|
||||
# number of confirmations to show when deleting files (2/1/0)
|
||||
qdel: 2 # default
|
||||
qdel: 1 # default
|
||||
|
||||
# don't show files/folders matching REGEX in file list. WARNING: Purely cosmetic! Does not affect API calls, just the browser. Example: [\.(js|css)$]
|
||||
# 📂 also available as volflag "unlist"
|
||||
|
|
|
|||
|
|
@ -404,8 +404,17 @@ git describe --tags >/dev/null 2>/dev/null && {
|
|||
printf 'unexpected git version format: [%s]\n' "$git_ver"
|
||||
exit 1
|
||||
}
|
||||
|
||||
dt="$(git log -1 --format=%cd --date=short | sed -E 's/-0?/, /g')"
|
||||
}
|
||||
|
||||
[ "$PRTY_SFX_VER" ] && {
|
||||
# PRTY_SFX_VER='1.20.14-5-g139ef185' PRTY_SFX_DT='2026, 5, 8'
|
||||
# PRTY_SFX_VER='2026-0510-2303' PRTY_SFX_DT='2026, 5, 10'
|
||||
ver="$PRTY_SFX_VER"
|
||||
dt="$PRTY_SFX_DT"
|
||||
}
|
||||
|
||||
[ "$ver" ] && {
|
||||
printf 'git %3s: \033[36m%s\033[0m\n' ver "$ver" dt "$dt"
|
||||
sed -ri '
|
||||
s/^(VERSION =)(.*)/#\1\2\n\1 ('"$t_ver"')/;
|
||||
|
|
|
|||
|
|
@ -75,6 +75,8 @@ copyparty/web/browser.js,
|
|||
copyparty/web/browser2.html,
|
||||
copyparty/web/cf.html,
|
||||
copyparty/web/copyparty.gif,
|
||||
copyparty/web/copyparty.png,
|
||||
copyparty/web/copyparty.svg,
|
||||
copyparty/web/deps,
|
||||
copyparty/web/deps/__init__.py,
|
||||
copyparty/web/deps/busy.mp3,
|
||||
|
|
@ -84,6 +86,7 @@ copyparty/web/deps/mfusepy.py,
|
|||
copyparty/web/deps/marked.js,
|
||||
copyparty/web/deps/mini-fa.css,
|
||||
copyparty/web/deps/mini-fa.woff,
|
||||
copyparty/web/deps/orbitron.woff2,
|
||||
copyparty/web/deps/prism.css,
|
||||
copyparty/web/deps/prism.js,
|
||||
copyparty/web/deps/prismd.css,
|
||||
|
|
@ -92,6 +95,7 @@ copyparty/web/deps/sha512.ac.js,
|
|||
copyparty/web/deps/sha512.hw.js,
|
||||
copyparty/web/idp.html,
|
||||
copyparty/web/iiam.gif,
|
||||
copyparty/web/manifest.json,
|
||||
copyparty/web/md.css,
|
||||
copyparty/web/md.html,
|
||||
copyparty/web/md.js,
|
||||
|
|
@ -114,6 +118,7 @@ copyparty/web/splash.html,
|
|||
copyparty/web/splash.js,
|
||||
copyparty/web/svcs.html,
|
||||
copyparty/web/svcs.js,
|
||||
copyparty/web/sw.js,
|
||||
copyparty/web/tl,
|
||||
copyparty/web/tl/chi.js,
|
||||
copyparty/web/tl/cze.js,
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ Ls.hmn = {
|
|||
"tt": "Hymmnos",
|
||||
|
||||
"cols": {
|
||||
"c": "action buttons",
|
||||
"!": "action buttons",
|
||||
"dur": "duration",
|
||||
"q": "quality / bitrate",
|
||||
"Ac": "audio codec",
|
||||
|
|
@ -46,7 +46,7 @@ Ls.hmn = {
|
|||
"Ahash": "audio checksum",
|
||||
"Vhash": "video checksum",
|
||||
"Res": "resolution",
|
||||
"T": "filetype",
|
||||
"Ext": "filetype",
|
||||
"aq": "audio quality / bitrate",
|
||||
"vq": "video quality / bitrate",
|
||||
"pixfmt": "subsampling / pixel structure",
|
||||
|
|
@ -65,7 +65,7 @@ Ls.hmn = {
|
|||
["G", "toggle list / grid view"],
|
||||
["T", "toggle thumbnails / icons"],
|
||||
["⇧ A/D", "thumbnail size"],
|
||||
["ctrl-K", "delete selected"],
|
||||
["ctrl-K/Del", "delete selected"],
|
||||
["ctrl-X", "cut selection to clipboard"],
|
||||
["ctrl-C", "copy selection to clipboard"],
|
||||
["ctrl-V", "paste (move/copy) here"],
|
||||
|
|
@ -139,9 +139,9 @@ Ls.hmn = {
|
|||
"ht_and": " and ",
|
||||
|
||||
"goh": "control-panel",
|
||||
"gop": 'previous sibling">prev',
|
||||
"gou": 'parent folder">up',
|
||||
"gon": 'next folder">next',
|
||||
"gop": 'previous sibling',
|
||||
"gou": 'parent folder',
|
||||
"gon": 'next folder',
|
||||
"logout": "Logout ",
|
||||
"login": "Login",
|
||||
"access": " access",
|
||||
|
|
@ -189,7 +189,7 @@ Ls.hmn = {
|
|||
"ut_u2ts": "copy the last-modified timestamp$Nfrom your filesystem to the server\">📅",
|
||||
"ut_ow": "overwrite existing files on the server?$N🛡️: never (will generate a new filename instead)$N🕒: overwrite if server-file is older than yours$N♻️: always overwrite if the files are different$N⏭️: unconditionally skip all existing files",
|
||||
"ut_mt": "continue hashing other files while uploading$N$Nmaybe disable if your CPU or HDD is a bottleneck",
|
||||
"ut_ask": 'ask for confirmation before upload starts">💭',
|
||||
"ut_ask": 'ask for confirmation before upload starts',
|
||||
"ut_pot": "improve upload speed on slow devices$Nby making the UI less complex",
|
||||
"ut_srch": "don't actually upload, instead check if the files already $N exist on the server (will scan all folders you can read)",
|
||||
"ut_par": "pause uploads by setting it to 0$N$Nincrease if your connection is slow / high latency$N$Nkeep it 1 on LAN or if the server HDD is a bottleneck",
|
||||
|
|
@ -237,12 +237,12 @@ Ls.hmn = {
|
|||
"u_nav_m": '<h6>aight, what do you have?</h6><code>Enter</code> = Files (one or more)\n<code>ESC</code> = One folder (including subfolders)',
|
||||
"u_nav_b": '<a href="#" id="modal-ok">Files</a><a href="#" id="modal-ng">One folder</a>',
|
||||
|
||||
"cl_opts": "switches",
|
||||
"cl_opts": "general",
|
||||
"cl_hfsz": "filesize",
|
||||
"cl_themes": "theme",
|
||||
"cl_langs": "language",
|
||||
"cl_ziptype": "folder download",
|
||||
"cl_uopts": "up2k switches",
|
||||
"cl_uopts": "upload",
|
||||
"cl_favico": "favicon",
|
||||
"cl_bigdir": "big dirs",
|
||||
"cl_hsort": "#sort",
|
||||
|
|
@ -256,7 +256,7 @@ Ls.hmn = {
|
|||
|
||||
"ct_grid": '田 the grid',
|
||||
"ct_ttips": '◔ ◡ ◔">ℹ️ tooltips',
|
||||
"ct_thumb": 'in grid-view, toggle icons or thumbnails$NHotkey: T">🖼️ thumbs',
|
||||
"ct_thumb": 'toggle icons or thumbnails$NHotkey: T">🖼️ thumbs',
|
||||
"ct_csel": 'use CTRL and SHIFT for file selection in grid-view">sel',
|
||||
"ct_dsel": 'use drag-selection in grid-view">dsel',
|
||||
"ct_dl": 'force download (don\'t display inline) when a file is clicked">dl',
|
||||
|
|
@ -317,7 +317,7 @@ Ls.hmn = {
|
|||
"ml_drc": "dynamic range compressor",
|
||||
"ml_ss": "skip silence",
|
||||
|
||||
"mt_loop": "loop/repeat one song\">🔁",
|
||||
"mt_loop": "loop/repeat one song",
|
||||
"mt_one": "stop after one song\">1️⃣",
|
||||
"mt_shuf": "shuffle the songs in each folder\">🔀",
|
||||
"mt_aplay": "autoplay if there is a song-ID in the link you clicked to access the server$N$Ndisabling this will also stop the page URL from being updated with song-IDs when playing music, to prevent autoplay if these settings are lost but the URL remains\">a▶",
|
||||
|
|
@ -547,6 +547,7 @@ Ls.hmn = {
|
|||
"s_f1": "name contains (negate with -nope)",
|
||||
"s_t1": "tags contains (^=start, end=$)",
|
||||
"s_a1": "specific metadata properties",
|
||||
"s_dir": "search this folder",
|
||||
|
||||
"md_eshow": "cannot render ",
|
||||
"md_off": "[📜<em>readme</em>] disabled in [⚙️] -- document hidden",
|
||||
|
|
|
|||
Loading…
Reference in a new issue