mirror of
https://github.com/9001/copyparty.git
synced 2025-08-17 00:52:16 -06:00
add tooltips and more mojibake compat
This commit is contained in:
parent
de32838346
commit
ffcee6d390
|
@ -55,11 +55,10 @@ body {
|
|||
display: block;
|
||||
padding: .3em 0;
|
||||
}
|
||||
#files[ts] tbody div a {
|
||||
#files tbody div a {
|
||||
color: #f5a;
|
||||
}
|
||||
a,
|
||||
#files[ts] tbody div a:last-child {
|
||||
a, #files tbody div a:last-child {
|
||||
color: #fc5;
|
||||
padding: .2em;
|
||||
text-decoration: none;
|
||||
|
@ -592,3 +591,25 @@ input[type="checkbox"]:checked+label {
|
|||
padding: 0;
|
||||
border-bottom: 1px solid #555;
|
||||
}
|
||||
#opdesc {
|
||||
display: none;
|
||||
}
|
||||
#ops:hover #opdesc {
|
||||
display: block;
|
||||
background: linear-gradient(0deg,#555, #4c4c4c 80%, #444);
|
||||
box-shadow: 0 .3em 1em #222;
|
||||
padding: 1em;
|
||||
border-radius: .3em;
|
||||
position: absolute;
|
||||
z-index: 3;
|
||||
top: 6em;
|
||||
right: 1.5em;
|
||||
}
|
||||
#opdesc code {
|
||||
background: #3c3c3c;
|
||||
padding: .2em .3em;
|
||||
border-top: 1px solid #777;
|
||||
border-radius: .3em;
|
||||
font-family: monospace, monospace;
|
||||
line-height: 2em;
|
||||
}
|
|
@ -12,18 +12,19 @@
|
|||
|
||||
<body>
|
||||
<div id="ops">
|
||||
<a href="#" data-dest="">---</a>
|
||||
<a href="#" data-perm="read" data-dest="search">🔎</a>
|
||||
<a href="#" data-dest="" data-desc="close submenu">---</a>
|
||||
<a href="#" data-perm="read" data-dest="search" data-desc="search for files by attributes, path/name, music tags, or any combination of those.<br /><br /><code>foo bar</code> = must contain both foo and bar,<br /><code>foo -bar</code> = must contain foo but not bar,<br /><code>^yana .opus$</code> = must start with yana and have the opus extension">🔎</a>
|
||||
{%- if have_up2k_idx %}
|
||||
<a href="#" data-dest="up2k">🚀</a>
|
||||
<a href="#" data-dest="up2k" data-desc="up2k: upload files (if you have write-access) or toggle into the search-mode and drag files onto the search button to see if they exist somewhere on the server">🚀</a>
|
||||
{%- else %}
|
||||
<a href="#" data-perm="write" data-dest="up2k">🚀</a>
|
||||
<a href="#" data-perm="write" data-dest="up2k" data-desc="up2k: upload files with resume support (close your browser and drop the same files in later)">🚀</a>
|
||||
{%- endif %}
|
||||
<a href="#" data-perm="write" data-dest="bup">🎈</a>
|
||||
<a href="#" data-perm="write" data-dest="mkdir">📂</a>
|
||||
<a href="#" data-perm="write" data-dest="new_md">📝</a>
|
||||
<a href="#" data-perm="write" data-dest="msg">📟</a>
|
||||
<a href="#" data-dest="cfg">⚙️</a>
|
||||
<a href="#" data-perm="write" data-dest="bup" data-desc="bup: basic uploader, even supports netscape 4.0">🎈</a>
|
||||
<a href="#" data-perm="write" data-dest="mkdir" data-desc="mkdir: create a new directory">📂</a>
|
||||
<a href="#" data-perm="write" data-dest="new_md" data-desc="new-md: create a new markdown document">📝</a>
|
||||
<a href="#" data-perm="write" data-dest="msg" data-desc="msg: send a message to the server log">📟</a>
|
||||
<a href="#" data-dest="cfg" data-desc="configuration options">⚙️</a>
|
||||
<div id="opdesc"></div>
|
||||
</div>
|
||||
|
||||
<div id="op_search" class="opview">
|
||||
|
|
|
@ -510,7 +510,7 @@ function evau_error(e) {
|
|||
if (eplaya.error.message)
|
||||
err += '\n\n' + eplaya.error.message;
|
||||
|
||||
err += '\n\nFile: «' + uricom_dec(eplaya.src.split('/').slice(-1)[0]) + '»';
|
||||
err += '\n\nFile: «' + uricom_dec(eplaya.src.split('/').slice(-1)[0])[0] + '»';
|
||||
|
||||
alert(err);
|
||||
}
|
||||
|
@ -545,7 +545,7 @@ function autoplay_blocked() {
|
|||
var na = ebi('blk_na');
|
||||
|
||||
var fn = mp.tracks[mp.au.tid].split(/\//).pop();
|
||||
fn = uricom_dec(fn.replace(/\+/g, ' '));
|
||||
fn = uricom_dec(fn.replace(/\+/g, ' '))[0];
|
||||
|
||||
go.textContent = 'Play "' + fn + '"';
|
||||
go.onclick = function (e) {
|
||||
|
@ -776,7 +776,7 @@ function autoplay_blocked() {
|
|||
ebi('treeul').setAttribute('ts', this.ts);
|
||||
|
||||
var top = this.top == '.' ? this.dst : this.top,
|
||||
name = uricom_dec(top.split('/').slice(-2)[0]),
|
||||
name = uricom_dec(top.split('/').slice(-2)[0])[0],
|
||||
rtop = top.replace(/^\/+/, "");
|
||||
|
||||
try {
|
||||
|
@ -912,7 +912,7 @@ function autoplay_blocked() {
|
|||
for (var a = 0; a < nodes.length; a++) {
|
||||
var r = nodes[a],
|
||||
ln = ['<tr><td>' + r.lead + '</td><td><a href="' +
|
||||
top + r.href + '">' + esc(uricom_dec(r.href)) + '</a>', r.sz];
|
||||
top + r.href + '">' + esc(uricom_dec(r.href)[0]) + '</a>', r.sz];
|
||||
|
||||
for (var b = 0; b < res.taglist.length; b++) {
|
||||
var k = res.taglist[b],
|
||||
|
@ -963,8 +963,8 @@ function autoplay_blocked() {
|
|||
var kk = keys[a],
|
||||
ks = kk.slice(1),
|
||||
k = uricom_dec(ks),
|
||||
hek = esc(k),
|
||||
uek = ks == k ? k : uricom_enc(k, true),
|
||||
hek = esc(k[0]),
|
||||
uek = k[1] ? uricom_enc(k[0], true) : k[0],
|
||||
url = '/' + (top ? top + uek : uek) + '/',
|
||||
sym = res[kk] ? '-' : '+',
|
||||
link = '<a href="#">' + sym + '</a><a href="' +
|
||||
|
@ -1296,6 +1296,18 @@ var mukey = (function () {
|
|||
})();
|
||||
|
||||
|
||||
(function () {
|
||||
function set_tooltip(e) {
|
||||
ev(e);
|
||||
ebi('opdesc').innerHTML = this.getAttribute('data-desc');
|
||||
}
|
||||
var btns = document.querySelectorAll('#ops, #ops>a');
|
||||
for (var a = 0; a < btns.length; a++) {
|
||||
btns[a].onmouseenter = set_tooltip;
|
||||
}
|
||||
})();
|
||||
|
||||
|
||||
function ev_row_tgl(e) {
|
||||
ev(e);
|
||||
filecols.toggle(this.parentElement.parentElement.getElementsByTagName('span')[0].textContent);
|
||||
|
|
|
@ -65,7 +65,7 @@ function statify(obj) {
|
|||
if (a > 0)
|
||||
loc.push(n[a]);
|
||||
|
||||
var dec = hesc(uricom_dec(n[a]));
|
||||
var dec = hesc(uricom_dec(n[a])[0]);
|
||||
|
||||
nav.push('<a href="/' + loc.join('/') + '">' + dec + '</a>');
|
||||
}
|
||||
|
|
|
@ -15,7 +15,7 @@ var dom_md = ebi('mt');
|
|||
if (a > 0)
|
||||
loc.push(n[a]);
|
||||
|
||||
var dec = uricom_dec(n[a]).replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
|
||||
var dec = uricom_dec(n[a])[0].replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
|
||||
|
||||
nav.push('<a href="/' + loc.join('/') + '">' + dec + '</a>');
|
||||
}
|
||||
|
|
|
@ -237,11 +237,11 @@ function uricom_enc(txt, do_fb_enc) {
|
|||
|
||||
function uricom_dec(txt) {
|
||||
try {
|
||||
return decodeURIComponent(txt);
|
||||
return [decodeURIComponent(txt), true];
|
||||
}
|
||||
catch (ex) {
|
||||
console.log("ucd-err [" + txt + "]");
|
||||
return txt;
|
||||
return [txt, false];
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -260,7 +260,7 @@ function get_evpath() {
|
|||
|
||||
|
||||
function get_vpath() {
|
||||
return uricom_dec(get_evpath());
|
||||
return uricom_dec(get_evpath())[0];
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue