mirror of
https://github.com/9001/copyparty.git
synced 2026-06-18 20:22:27 -06:00
320 lines
10 KiB
HTML
320 lines
10 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en" id="ht_brw">
|
|
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title>{{ title }}</title>
|
|
<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="stylesheet" media="screen" href="{{ r }}/.cpr/w/ui.css?_={{ ts }}">
|
|
<link rel="stylesheet" media="screen" href="{{ r }}/.cpr/w/browser.css?_={{ ts }}">
|
|
{{ html_head }}
|
|
{%- if css %}
|
|
<link rel="stylesheet" media="screen" href="{{ css }}_={{ ts }}">
|
|
{%- endif %}
|
|
</head>
|
|
|
|
<body>
|
|
<a href="#" id="treeToggleBtn" class="tgl btn"></a>
|
|
|
|
<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="wrap">
|
|
|
|
<div id="pathBar">
|
|
<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 %}
|
|
</h1>
|
|
|
|
<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>
|
|
|
|
<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="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">▾</a>
|
|
<a id="closesearch">✕</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<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 id="op_player" class="opview opbox opwide"></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="cl_cfg" class="close btn">✕</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="cl_up" class="close btn">✕</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" href="#h_mp">⚙️</a>
|
|
<a id="cl_mu" class="close btn">✕</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 }}">{{ 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 }},
|
|
CGV = {{ cgv|tojson }},
|
|
TS = "{{ ts }}",
|
|
dtheme = "{{ dtheme }}",
|
|
lang = "{{ lang }}",
|
|
dfavico = "{{ favico }}",
|
|
have_tags_idx = {{ have_tags_idx }},
|
|
logues = {{ logues|tojson if sb_lg else "[]" }},
|
|
ls0 = {{ ls0|tojson }};
|
|
|
|
var STG = window.localStorage;
|
|
document.documentElement.className = (STG && STG.cpp_thm) || dtheme;
|
|
</script>
|
|
<script src="{{ r }}/.cpr/w/util.js?_={{ ts }}"></script>
|
|
{%- if lang != "eng" %}
|
|
<script src="{{ r }}/.cpr/w/tl/{{ lang }}.js?_={{ ts }}"></script>
|
|
{%- endif %}
|
|
<script src="{{ r }}/.cpr/w/browser.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_BRW", "browser");
|
|
jsldp("J_BBX", "baguettebox");
|
|
jsldp("J_U2K", "up2k");
|
|
</script>
|
|
</body>
|
|
</html>
|
|
|