Fix player UI: sports Highlights pane, scrubber knob, volume knob, description + save-to-playlist
Player/UI fixes:
- Sports (match) Highlights pane: move the toggle click-handler script out of
the always-false @if(false ...) legacy block so the "Highlights" button opens,
and emit videoId/isOwner with @json instead of {{ json_encode() }} (escaped
quotes crashed the data/tab/CRUD block once route keys became hashid strings).
- Progress scrubber knob (video + audio players): center on the track line with
translate(-50%, -50%); drop the margin-top hack that floated it above the line.
- Music player volume: give the slider wrap height so overflow:hidden no longer
crops the knob; add a subtle thumb shadow for visibility.
- Music language menu: cap height to available space above the header, sticky
header, internal scroll; keep controls from auto-hiding while the menu is open.
- Description box: re-check "Show more" overflow at every settle point (fonts,
images, rAF, tab reopen) so SPA autonext keeps the expand button.
Also bundles pending work: save-to-playlist button component, playlist/channel
views, PlaylistController + NasSyncService, and component-usage tracker updates.
Co-Authored-By: Claude Opus 4.8 <[email protected]>
This commit is contained in:
1 parent
80948efff7
commit
6b43a7060a
14 files changed
+236
-136
No files matched your search
@@ -490,6 +490,12 @@ class NasSyncService
|
||||
{
|
||||
if (file_exists($localPath)) return true;
|
||||
|
||||
// Don't shell out to smbclient when we already know NAS is unreachable
|
||||
// — smbclient hangs ~30 sec on the SMB timeout, multiplied by every
|
||||
// thumbnail/avatar on the page. isEnabled() uses a 2-sec TCP probe
|
||||
// cached for 120 sec, so this fails fast during an outage.
|
||||
if (! $this->isEnabled()) return false;
|
||||
|
||||
$dir = dirname($localPath);
|
||||
if (! is_dir($dir)) @mkdir($dir, 0755, true);
|
||||
|
||||
@@ -1015,6 +1021,7 @@ class NasSyncService
|
||||
|
||||
public function mkdirp(string $path): void
|
||||
{
|
||||
if (! $this->isEnabled()) return; // fail-fast when NAS unreachable
|
||||
$cfg = $this->cfg();
|
||||
$target = escapeshellarg($this->smbTarget($cfg));
|
||||
$cred = escapeshellarg($this->smbCredential($cfg));
|
||||
@@ -1033,6 +1040,7 @@ class NasSyncService
|
||||
|
||||
public function putFile(string $localAbsPath, string $nasRelPath): bool
|
||||
{
|
||||
if (! $this->isEnabled()) return false; // fail-fast when NAS unreachable
|
||||
$cfg = $this->cfg();
|
||||
$target = escapeshellarg($this->smbTarget($cfg));
|
||||
$cred = escapeshellarg($this->smbCredential($cfg));
|
||||
@@ -1058,6 +1066,7 @@ class NasSyncService
|
||||
|
||||
public function getContent(string $nasRelPath): ?string
|
||||
{
|
||||
if (! $this->isEnabled()) return null; // fail-fast when NAS unreachable
|
||||
$cfg = $this->cfg();
|
||||
$target = escapeshellarg($this->smbTarget($cfg));
|
||||
$cred = escapeshellarg($this->smbCredential($cfg));
|
||||
@@ -1202,6 +1211,7 @@ class NasSyncService
|
||||
|
||||
public function deleteFile(string $nasRelPath): void
|
||||
{
|
||||
if (! $this->isEnabled()) return; // fail-fast when NAS unreachable
|
||||
$cfg = $this->cfg();
|
||||
$target = escapeshellarg($this->smbTarget($cfg));
|
||||
$cred = escapeshellarg($this->smbCredential($cfg));
|
||||
|
||||
Reference in new issue
Block a user