Leah
035c1648c1
webmusic.js: prevent default action for keydown events webmusic.js: check for playable content webmusic.js: hide selector when track selected webmusic.js: ignore keyboard controls if ctrl or alt is pressed webmusic.js: seeking in track with number keys webmusic.js: use single quotes everywhere webmusic.js: use arrow functions everywhere webmusic.js: use const for audioplayer and variable element in function playSong webmusic.js: use strict mode webmusic.js: add classes needed for previous 2 commits webmusic.js: use classes for buttons webmusic.js: navigating through files/folders with arrowkeys/enter webmusic.js: removed debug prints, better player handling webmusic.js: bind to audioplayer-events just once webmusic.js: renamed gstate to playerState webmusic.js: renamed setState to setPlayerState and updateState to updatePlayerState webmusic.css: replaced spaces with tabs needed changes on template and css to make previous commit work webmusic.js: refactor continuous- and repeat-button handling webmusic.js: general code improvements webmusic.js: rename variable 'sound' to 'audioPlayer' remove howler.core.js webmusic.js: replace howler with the native Audio() element webmusic.js: set onclick-event on state element just once webmusic.js: skip folders needed changes on template to make previous commit work webmusic.js: navigate through files more smartly webmusic.js: code improovements webmusic.js: replace spaces with tabs webmusic.js: replace ifs with switch Co-authored-by: Leah (ctucx) <leah@ctu.cx> Co-authored-by: Isabelle <hi@f2k1.de> Co-authored-by: ctucx <c@ctu.cx> Reviewed-on: https://git.zotan.services/zotan/webmusic/pulls/5 Co-Authored-By: Leah <leah@ctu.cx> Co-Committed-By: Leah <leah@ctu.cx>
50 lines
1.6 KiB
Plaintext
50 lines
1.6 KiB
Plaintext
@page
|
|
@using System.IO
|
|
@model IndexModel
|
|
@{
|
|
ViewData["Title"] = $"webmusic on .NET {Environment.Version}";
|
|
}
|
|
@if (Model.Path.Contains("/..")) {
|
|
return;
|
|
}
|
|
@if (Model.Path.EndsWith(".lrc")) {
|
|
<h3>@Model.Path</h3>
|
|
<p>@Html.Raw((await System.IO.File.ReadAllTextAsync("music" + Model.Path)).Replace("\n", "<br/>"))</p>
|
|
}
|
|
else {
|
|
<h2>
|
|
@Model.Displaypath <span id="state"></span> <span id="flags">[<span id="repeatButton">R</span><span id="continuousButton">C</span>]</span>
|
|
</h2>
|
|
<a class="action-muted">[..]</a>
|
|
<a href="?@Model.PathOneup" id="back" class="entry-muted cfont"> Go back</a>
|
|
<br/>
|
|
<a class="action-muted">[--]</a>
|
|
<a href="/playlist/@(Request.QueryString).m3u" class="entry-muted cfont"> Download playlist</a>
|
|
<br/>
|
|
<br/>
|
|
@foreach (var dir in Model.Dirs) {
|
|
<li>
|
|
<a class="action" href="#">[--]</a>
|
|
<a class="dir" href="?@Model.Path/@dir"> @dir</a>
|
|
</li>
|
|
}
|
|
@foreach (var file in Model.Files) {
|
|
var jspath = IndexModel.Encode(Model.Fullpath);
|
|
var jsfile = jspath + "/" + IndexModel.Encode(file);
|
|
var basename = System.IO.Path.GetFileNameWithoutExtension(file);
|
|
var lrcfile = basename + ".lrc";
|
|
var lrcpath = System.IO.Path.Combine(Model.Fullpath, lrcfile);
|
|
|
|
<li>
|
|
<a class="action" href="@Html.Raw(IndexModel.Encode(Model.Fullpath + "/" + file))" download>[DL]</a>
|
|
@if (System.IO.File.Exists(lrcpath)) {
|
|
<a class="action" href="?@Model.Path/@lrcfile" target="_blank">[LRC]</a>
|
|
}
|
|
else if(Directory.GetFiles(@Model.Fullpath, "*.lrc").Length != 0) {
|
|
<a class="action">[---]</a>
|
|
}
|
|
<a class="file" href="@Html.Raw(IndexModel.Encode(Model.Fullpath + "/" + file))"> @file</a>
|
|
</li>
|
|
}
|
|
}
|