mirror of
git://f0xx.org/ac/ac-be-hub
synced 2026-07-29 04:18:53 +03:00
feat(hub): shared nav shell, downloads UI, footer fix
Signed-off-by: Anton Afanasyeu <a.afanasieff@gmail.com>
This commit is contained in:
73
index.php
73
index.php
@@ -39,9 +39,9 @@ function hub_h(string $s): string {
|
||||
<link rel="icon" type="image/x-icon" href="/app/androidcast_project/favicon.ico">
|
||||
<link rel="apple-touch-icon" href="/app/androidcast_project/apple-touch-icon.ico">
|
||||
<link rel="stylesheet" href="/app/androidcast_project/issues/assets/css/app.css">
|
||||
<link rel="stylesheet" href="hub.css?v=20260610overlay">
|
||||
<link rel="stylesheet" href="hub-logo-layers.css?v=20260610overlay">
|
||||
<link rel="stylesheet" href="hub-landing.css?v=20260613layout">
|
||||
<link rel="stylesheet" href="hub.css?v=20260711overlay">
|
||||
<link rel="stylesheet" href="hub-logo-layers.css?v=20260711overlay">
|
||||
<link rel="stylesheet" href="hub-landing.css?v=20260711layout">
|
||||
<script src="/app/androidcast_project/issues/assets/js/nav_shell.js" defer></script>
|
||||
<script src="assets/hub-i18n.js" defer></script>
|
||||
<script src="assets/hub-landing.js" defer></script>
|
||||
@@ -139,55 +139,14 @@ function hub_h(string $s): string {
|
||||
</header>
|
||||
|
||||
<div class="landing-frame">
|
||||
<nav class="nav-pane landing-left" id="landing-nav-pane" aria-label="Android Cast apps">
|
||||
<button type="button" class="nav-handle" id="landing-nav-handle" data-i18n-aria="nav.toggle" data-i18n-title="nav.toggle" aria-label="Navigation" title="Navigation">
|
||||
<span class="nav-icon nav-icon--menu" aria-hidden="true"></span>
|
||||
</button>
|
||||
<ul class="nav-list">
|
||||
<li><a href="issues/?view=home" class="nav-link" data-i18n-title="nav.console" title="Console"><span class="nav-icon nav-icon--home"></span><span class="nav-text"><span class="nav-label" data-i18n="nav.console">Console</span><span class="nav-desc" data-i18n="nav.console_desc">Crash triage home and workspace cards.</span></span></a></li>
|
||||
<li><a href="git/" class="nav-link" data-i18n-title="nav.git" title="Git"><span class="nav-icon nav-icon--git"></span><span class="nav-text"><span class="nav-label" data-i18n="nav.git">Git</span><span class="nav-desc" data-i18n="nav.git_desc">Browse repos, branches, and tags.</span></span></a></li>
|
||||
<li><a href="issues/?view=reports" class="nav-link" data-i18n-title="nav.issues" title="Issues"><span class="nav-icon nav-icon--reports"></span><span class="nav-text"><span class="nav-label" data-i18n="nav.issues">Issues</span><span class="nav-desc" data-i18n="nav.issues_desc">Browse and triage crash reports.</span></span></a></li>
|
||||
<li><a href="issues/?view=tickets" class="nav-link" data-i18n-title="nav.tickets" title="Tickets"><span class="nav-icon nav-icon--tickets"></span><span class="nav-text"><span class="nav-label" data-i18n="nav.tickets">Tickets</span><span class="nav-desc" data-i18n="nav.tickets_desc">Roadmap tasks, QA items, and tags.</span></span></a></li>
|
||||
<li><a href="graphs/" class="nav-link" data-i18n-title="nav.graphs" title="Analytics"><span class="nav-icon nav-icon--graphs"></span><span class="nav-text"><span class="nav-label" data-i18n="nav.graphs">Analytics</span><span class="nav-desc" data-i18n="nav.graphs_desc">Sessions, live cast stats, and device activity.</span></span></a></li>
|
||||
<li><a href="monitor/" class="nav-link" data-i18n-title="nav.monitor" title="Monitoring"><span class="nav-icon nav-icon--monitor"></span><span class="nav-text"><span class="nav-label" data-i18n="nav.monitor">Monitoring</span><span class="nav-desc" data-i18n="nav.monitor_desc">Grafana dashboards — cluster health, alerts, exporters.</span></span></a></li>
|
||||
<li><a href="issues/?view=live_sessions" class="nav-link" data-i18n-title="nav.live_sessions" title="Live sessions"><span class="nav-icon nav-icon--live"></span><span class="nav-text"><span class="nav-label" data-i18n="nav.live_sessions">Live sessions</span><span class="nav-desc" data-i18n="nav.live_sessions_desc">Cast intents, join stats, session history.</span></span></a></li>
|
||||
<li><a href="issues/live/education" class="nav-link" data-i18n-title="nav.education" title="Education demo"><span class="nav-icon nav-icon--education"></span><span class="nav-text"><span class="nav-label" data-i18n="nav.education">Education (demo)</span><span class="nav-desc" data-i18n="nav.education_desc">Browser screen-share trial (5 min).</span></span></a></li>
|
||||
<li><a href="issues/?view=remote_access" class="nav-link" data-i18n-title="nav.remote" title="Remote access"><span class="nav-icon nav-icon--remote"></span><span class="nav-text"><span class="nav-label" data-i18n="nav.remote">Remote access</span><span class="nav-desc" data-i18n="nav.remote_desc">WireGuard sessions and device reachability.</span></span></a></li>
|
||||
<li><a href="monitor/" class="nav-link" data-i18n-title="nav.monitor" title="Monitoring"><span class="nav-icon nav-icon--monitor"></span><span class="nav-text"><span class="nav-label" data-i18n="nav.monitor">Monitoring</span><span class="nav-desc" data-i18n="nav.monitor_desc">Grafana dashboards — cluster health, alerts, exporters.</span></span></a></li>
|
||||
<li><a href="issues/?view=short_links" class="nav-link" data-i18n-title="nav.short_links" title="Short links"><span class="nav-icon nav-icon--link"></span><span class="nav-text"><span class="nav-label" data-i18n="nav.short_links">Short links</span><span class="nav-desc" data-i18n="nav.short_links_desc">Mint bearer tokens and shorten URLs for s.f0xx.org.</span></span></a></li>
|
||||
<li><a href="build/" class="nav-link" data-i18n-title="nav.builder" title="Builder"><span class="nav-icon nav-icon--builder"></span><span class="nav-text"><span class="nav-label" data-i18n="nav.builder">Builder</span><span class="nav-desc" data-i18n="nav.builder_desc">Docker CI for APK baking and OTA artifacts.</span></span></a></li>
|
||||
</ul>
|
||||
<div class="nav-user">
|
||||
<?php if ($hubUsername !== ''): ?>
|
||||
<span class="nav-user-name" title="<?= hub_h($hubUsername) ?>">
|
||||
<span class="nav-icon nav-icon--user" aria-hidden="true"></span>
|
||||
<span class="nav-label"><?= hub_h($hubUsername) ?></span>
|
||||
</span>
|
||||
<a href="<?= hub_h($hubIssuesBase) ?>/account-security"
|
||||
class="nav-link"
|
||||
data-i18n-aria="nav.security" data-i18n-title="nav.security"
|
||||
aria-label="Security" title="Security">
|
||||
<span class="nav-icon nav-icon--user" aria-hidden="true"></span>
|
||||
<span class="nav-label" data-i18n="nav.security">Security</span>
|
||||
</a>
|
||||
<a href="<?= hub_h($hubProjectBase) ?>/logout"
|
||||
class="nav-link nav-link--logout"
|
||||
data-i18n-aria="nav.logout" data-i18n-title="nav.logout"
|
||||
aria-label="Logout" title="Logout">
|
||||
<span class="nav-icon nav-icon--logout" aria-hidden="true"></span>
|
||||
<span class="nav-label" data-i18n="nav.logout">Logout</span>
|
||||
</a>
|
||||
<?php else: ?>
|
||||
<a href="<?= hub_h($hubProjectBase) ?>/login"
|
||||
class="nav-link"
|
||||
data-i18n-aria="nav.sign_in" data-i18n-title="nav.sign_in"
|
||||
aria-label="Sign in" title="Sign in">
|
||||
<span class="nav-icon nav-icon--user" aria-hidden="true"></span>
|
||||
<span class="nav-label" data-i18n="nav.sign_in">Sign in</span>
|
||||
</a>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</nav>
|
||||
<?php platform_render_nav_shell([
|
||||
'project_base' => $hubProjectBase,
|
||||
'issues_base' => $hubIssuesBase,
|
||||
'active' => '',
|
||||
'username' => $hubUsername,
|
||||
'pane_id' => 'landing-nav-pane',
|
||||
'handle_id' => 'landing-nav-handle',
|
||||
]); ?>
|
||||
|
||||
<main class="landing-scroll" id="landing-scroll" tabindex="-1">
|
||||
<?php require __DIR__ . '/landing-pages.inc.php'; ?>
|
||||
@@ -208,16 +167,6 @@ function hub_h(string $s): string {
|
||||
'use_i18n' => false,
|
||||
'extra_class' => 'bottom-bar',
|
||||
]); ?>
|
||||
<script>
|
||||
(function () {
|
||||
var footerLeft = document.querySelector('.platform-footer__left');
|
||||
if (footerLeft) {
|
||||
footerLeft.setAttribute('data-i18n', 'footer.copyright');
|
||||
footerLeft.setAttribute('data-holder', 'Anton Afanaasyeu');
|
||||
footerLeft.setAttribute('data-year', '2026 - current');
|
||||
}
|
||||
})();
|
||||
</script>
|
||||
<script>
|
||||
(function () {
|
||||
var sel = document.getElementById('theme-select');
|
||||
|
||||
Reference in New Issue
Block a user