04a2034975
- storefront 全站改为极简黑白配色:直角、细线分隔、卡片 hover 浅底、深色模式(跟随系统+手动切换) - 抽出 storefront/partials/card 复用卡片 - 一并提交此前暂存的客户端注册 API、站点设置、后台页面与测试 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
148 lines
8.0 KiB
PHP
148 lines
8.0 KiB
PHP
@php
|
|
$statusLabels = [
|
|
'draft' => '草稿',
|
|
'published' => '发布中',
|
|
'hidden' => '隐藏',
|
|
'deprecated' => '弃用',
|
|
];
|
|
$statusTones = [
|
|
'draft' => 'muted',
|
|
'published' => 'ok',
|
|
'hidden' => 'warn',
|
|
'deprecated' => 'warn',
|
|
];
|
|
@endphp
|
|
|
|
@extends('admin.layout', [
|
|
'title' => 'Tstore Admin · 控制台概览',
|
|
'pageTitle' => '控制台概览',
|
|
'pageSubtitle' => '先看整体状态,再继续维护扩展、版本发布和站点接入。',
|
|
'pageBadge' => 'Overview',
|
|
])
|
|
|
|
@section('content')
|
|
<div class="grid">
|
|
<section class="stats">
|
|
<div class="stat"><span class="label">扩展总数</span><span class="value">{{ $stats['packages'] }}</span><span class="hint">插件与主题总量</span></div>
|
|
<div class="stat"><span class="label">插件</span><span class="value">{{ $stats['plugins'] }}</span><span class="hint">plugin package</span></div>
|
|
<div class="stat"><span class="label">主题</span><span class="value">{{ $stats['themes'] }}</span><span class="hint">theme package</span></div>
|
|
<div class="stat"><span class="label">版本记录</span><span class="value">{{ $stats['versions'] }}</span><span class="hint">历史发布与手动录入</span></div>
|
|
<div class="stat"><span class="label">下载总量</span><span class="value">{{ $stats['downloads'] }}</span><span class="hint">累计下载次数</span></div>
|
|
<div class="stat"><span class="label">分类总数</span><span class="value">{{ $stats['categories'] }}</span><span class="hint">插件与主题分类</span></div>
|
|
<div class="stat"><span class="label">已注册站点</span><span class="value">{{ $stats['registered_sites'] }}</span><span class="hint">完成注册的客户端</span></div>
|
|
<div class="stat"><span class="label">在线站点</span><span class="value">{{ $stats['online_sites'] }}</span><span class="hint">最近心跳仍在线</span></div>
|
|
<div class="stat"><span class="label">追踪用户数</span><span class="value">{{ $stats['tracked_users'] }}</span><span class="hint">所有站点上报总和</span></div>
|
|
</section>
|
|
|
|
<div class="split">
|
|
<section class="panel">
|
|
<div class="section-title">
|
|
<div>
|
|
<h2>最近更新的扩展</h2>
|
|
<p>这里优先看扩展元数据、分类和当前发布状态,方便继续进入详情页维护。</p>
|
|
</div>
|
|
<a class="btn secondary small" href="{{ route('webadmin.packages') }}">查看全部</a>
|
|
</div>
|
|
|
|
<div class="list">
|
|
@forelse ($recentPackages as $package)
|
|
<article class="row-card">
|
|
<div class="row-top">
|
|
<div>
|
|
<h3>{{ $package->name }}</h3>
|
|
<p class="muted">{{ $package->type }} · {{ $package->slug }}</p>
|
|
</div>
|
|
<span class="chip {{ $statusTones[$package->status] ?? 'muted' }}">{{ $statusLabels[$package->status] ?? $package->status }}</span>
|
|
</div>
|
|
<p class="muted">{{ $package->summary ?: '暂无摘要。' }}</p>
|
|
<div class="tags">
|
|
@foreach ($package->categories as $category)
|
|
<span class="chip">{{ $category->name }}</span>
|
|
@endforeach
|
|
@if ($package->latestStableVersion)
|
|
<span class="chip ok">稳定版 v{{ $package->latestStableVersion->version }}</span>
|
|
@endif
|
|
<span class="chip muted">更新于 {{ optional($package->updated_at)->format('Y-m-d H:i') ?: '-' }}</span>
|
|
</div>
|
|
<div class="form-actions">
|
|
<a class="btn ghost small" href="{{ route('webadmin.packages.show', [$package->type, $package->slug]) }}">查看详情</a>
|
|
</div>
|
|
</article>
|
|
@empty
|
|
<div class="empty">当前还没有扩展数据。</div>
|
|
@endforelse
|
|
</div>
|
|
</section>
|
|
|
|
<div class="stack">
|
|
<section class="panel soft">
|
|
<div class="section-title">
|
|
<div>
|
|
<h2>最近版本发布</h2>
|
|
<p>快速核对最近写入的版本号、兼容区间和稳定状态。</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="list">
|
|
@forelse ($recentVersions as $version)
|
|
<article class="row-card">
|
|
<div class="row-top">
|
|
<div>
|
|
<h3>v{{ $version->version }}</h3>
|
|
<p class="muted">{{ $version->package?->name ?: '未知扩展' }}</p>
|
|
</div>
|
|
<div class="tags" style="margin-top:0">
|
|
<span class="chip {{ $version->is_stable ? 'ok' : 'warn' }}">{{ $version->is_stable ? '稳定版' : '预发布' }}</span>
|
|
@if ($version->is_latest)
|
|
<span class="chip">最新</span>
|
|
@endif
|
|
</div>
|
|
</div>
|
|
<div class="tags">
|
|
<span class="chip muted">Typecho {{ $version->typecho_min ?: '-' }} ~ {{ $version->typecho_max ?: '-' }}</span>
|
|
<span class="chip muted">PHP {{ $version->php_min ?: '-' }} ~ {{ $version->php_max ?: '-' }}</span>
|
|
</div>
|
|
<p class="muted">发布时间:{{ optional($version->published_at)->format('Y-m-d H:i') ?: '-' }}</p>
|
|
</article>
|
|
@empty
|
|
<div class="empty">当前还没有版本记录。</div>
|
|
@endforelse
|
|
</div>
|
|
</section>
|
|
|
|
<section class="panel soft">
|
|
<div class="section-title">
|
|
<div>
|
|
<h2>最近接入站点</h2>
|
|
<p>确认插件端是否完成注册、是否在线,以及最近一次同步时间。</p>
|
|
</div>
|
|
<a class="btn secondary small" href="{{ route('webadmin.clients') }}">全部站点</a>
|
|
</div>
|
|
|
|
<div class="list">
|
|
@forelse ($recentClients as $client)
|
|
<article class="row-card">
|
|
<div class="row-top">
|
|
<div>
|
|
<h3>{{ $client->site_name ?: '未命名站点' }}</h3>
|
|
<p class="muted">{{ $client->site_url }}</p>
|
|
</div>
|
|
<span class="chip {{ $client->is_online ? 'ok' : 'muted' }}">{{ $client->is_online ? '在线' : '离线' }}</span>
|
|
</div>
|
|
<div class="tags">
|
|
<span class="chip">用户 {{ $client->user_count }}</span>
|
|
<span class="chip muted">Typecho {{ $client->typecho_version ?: '-' }}</span>
|
|
<span class="chip muted">PHP {{ $client->php_version ?: '-' }}</span>
|
|
</div>
|
|
<p class="muted">最近同步:{{ optional($client->last_seen_at)->format('Y-m-d H:i:s') ?: '尚未同步' }}</p>
|
|
</article>
|
|
@empty
|
|
<div class="empty">当前还没有站点完成注册。</div>
|
|
@endforelse
|
|
</div>
|
|
</section>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@endsection
|