diff --git a/partials/desktop/shell.php b/partials/desktop/shell.php index f64069be..1fb1422e 100644 --- a/partials/desktop/shell.php +++ b/partials/desktop/shell.php @@ -8,6 +8,18 @@ $baseSkinProfile = $desktopPayload['meta']['base_skin_profile']; $skinProfile = $desktopPayload['meta']['skin_profile']; $wallpaper = $desktopPayload['desktop']['wallpaper']; +$assetVersion = static function (string $publicPath): string { + $filesystemPath = dirname(__DIR__, 2) . '/public' . $publicPath; + + if (!is_file($filesystemPath)) { + return $publicPath; + } + + $mtime = filemtime($filesystemPath); + + return $mtime === false ? $publicPath : $publicPath . '?v=' . $mtime; +}; + $renderStartIcon = static function (array $profile): string { $style = (string) ($profile['taskbar_icon_style'] ?? 'label'); @@ -24,12 +36,12 @@ $renderStartIcon = static function (array $profile): string { <?= htmlspecialchars($desktopPayload['meta']['title'], ENT_QUOTES) ?> - + - + - + - + - + - + diff --git a/public/apps/mining-checker/index.php b/public/apps/mining-checker/index.php index 883feb26..676175e4 100644 --- a/public/apps/mining-checker/index.php +++ b/public/apps/mining-checker/index.php @@ -13,6 +13,18 @@ $projectRoot = dirname(__DIR__, 3); $keycloakConfig = ConfigLoader::load($projectRoot, 'keycloak'); $auth = new KeycloakAuth($keycloakConfig); +$assetVersion = static function (string $publicPath) use ($projectRoot): string { + $filesystemPath = $projectRoot . '/public' . $publicPath; + + if (!is_file($filesystemPath)) { + return $publicPath; + } + + $mtime = filemtime($filesystemPath); + + return $mtime === false ? $publicPath : $publicPath . '?v=' . $mtime; +}; + if (!$auth->shouldShowDesktop()) { header('Location: /auth/login', true, 302); exit; @@ -23,7 +35,7 @@ if (!$auth->shouldShowDesktop()) { Mining-Checker - +
@@ -159,6 +171,6 @@ if (!$auth->shouldShowDesktop()) { - + diff --git a/src/Desktop/AppIconResolver.php b/src/Desktop/AppIconResolver.php index 6a6ef42b..64e65c38 100644 --- a/src/Desktop/AppIconResolver.php +++ b/src/Desktop/AppIconResolver.php @@ -41,6 +41,7 @@ final class AppIconResolver 'workspace-manager' => '/assets/desktop/skin-icons/windows/workspace-manager.ico', 'admin-apps' => '/assets/desktop/skin-icons/windows/admin-apps.ico', 'desktop-login' => '/assets/desktop/skin-icons/windows/desktop-login.ico', + 'mining-checker' => '/assets/desktop/skin-icons/windows/admin-apps.ico', ], 'apple' => [ 'welcome-center' => '/assets/desktop/skin-icons/apple/welcome-center.svg', @@ -48,6 +49,7 @@ final class AppIconResolver 'workspace-manager' => '/assets/desktop/skin-icons/apple/workspace-manager.svg', 'admin-apps' => '/assets/desktop/skin-icons/apple/admin-apps.svg', 'desktop-login' => '/assets/desktop/skin-icons/apple/desktop-login.svg', + 'mining-checker' => '/assets/desktop/skin-icons/apple/admin-apps.svg', ], 'linux' => [ 'welcome-center' => '/assets/desktop/skin-icons/linux/welcome-center.svg', @@ -55,6 +57,7 @@ final class AppIconResolver 'workspace-manager' => '/assets/desktop/skin-icons/linux/workspace-manager.svg', 'admin-apps' => '/assets/desktop/skin-icons/linux/admin-apps.svg', 'desktop-login' => '/assets/desktop/skin-icons/linux/desktop-login.svg', + 'mining-checker' => '/assets/desktop/skin-icons/linux/admin-apps.svg', ], default => [], };