The theme was renamed Zibll/子比 → AKSRT → Jio, but upstream branding survived the sweeps in CSS classes, the SVG sprite prefix, a persisted widget field ID, JS events, admin Vue class names, test infrastructure and docblocks. Renames: - zib-widget / zib-widget-wrap / zib-slider → jio-widget-box / jio-widget-box-wrap / jio-slider-box (jio-widget is taken by the modern widget shell, jio-box-* by the card primitives) - zib-partners-scroll + zps-* → jio-partners-scroll + jps-* - zib-combo-info-card + zci-* → jio-combo-info-card + jci-* - zibsvg- → jiosvg-, including the exported picker helpers and the fa-zibsvg- family-prefix guard - zibpay_type → pay_type; the dual-read fallback in PostQuery collapses to a single key - [zibajax="submit"] dropped (no PHP emitter); zib_ajax.success → jio_ajax.success - aks-* admin Vue classes → jio-* - zib_palette() → palette() User-facing vendor traces are gone: the floating "more" button default no longer ships a zibll.com link or 子比主题 marketing copy, the notice widget ships no preset promo entries, and the four 官网教程 links are removed from the post-list admin schema. Test infrastructure renamed to neutral names (docker-compose.reference.yml, Caddyfile, article-baseline.json, modern-widgets-contract.test.cjs) with their DB/volume/env/slug identifiers following. Kept intentionally, documented in tests/fixtures/README.md: the golden fixture reference fingerprint (a SHA-256 record of an external directory, read by validate-widget-golden / generate-widget-golden-fixture / audit-widget-system), the doesNotMatch guards that prove the old tokens are gone, and the reference theme's own meta key in the visual fixtures. No backward-compat or data migration: saved widget configs holding old icon keys or the old field ID silently lose them, per the project's rewrite-over-compatibility rule. Verified: 132/132 node contract tests, php tests/widget-system/run.php (146 assertions), audit-admin-contracts, audit-psr4-paths and validate-widget-golden all green; tracked bundles regenerated and in sync. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
43 lines
1.6 KiB
PHP
43 lines
1.6 KiB
PHP
<?php
|
|
/**
|
|
* User center sidebar: one-line account statistics.
|
|
*
|
|
* @package Jio
|
|
*/
|
|
|
|
defined('ABSPATH') || exit;
|
|
|
|
$stats = [
|
|
[
|
|
'label' => __('文章', 'jio'),
|
|
'value' => (int) ($post_count ?? 0),
|
|
'url' => jio_get_user_center_tab_url('posts'),
|
|
'tab' => 'posts',
|
|
],
|
|
[
|
|
'label' => __('评论', 'jio'),
|
|
'value' => (int) ($comment_count ?? 0),
|
|
'url' => isset($dashboard_tabs['comments']) ? jio_get_user_center_tab_url('comments') : $public_home_url,
|
|
'tab' => isset($dashboard_tabs['comments']) ? 'comments' : '',
|
|
],
|
|
[
|
|
'label' => __('收藏', 'jio'),
|
|
'value' => (int) ($favorite_count ?? 0),
|
|
'url' => isset($dashboard_tabs['favorites']) ? jio_get_user_center_tab_url('favorites') : $public_home_url,
|
|
'tab' => isset($dashboard_tabs['favorites']) ? 'favorites' : '',
|
|
],
|
|
[
|
|
'label' => __('粉丝', 'jio'),
|
|
'value' => (int) ($follower_count ?? 0),
|
|
'url' => jio_get_user_center_tab_url('follow'),
|
|
'tab' => 'follow',
|
|
],
|
|
];
|
|
?>
|
|
<?php // 单张 jio-widget-box,四项 space-around 平铺。 ?>
|
|
<div class="uc-sidebar-statistics mb10-sm mb20 flex ac jsa jio-widget-box padding-10 text-center" aria-label="<?php esc_attr_e('账号统计', 'jio'); ?>">
|
|
<?php foreach ($stats as $stat) : ?>
|
|
<a class="user-statistics-item" href="<?php echo esc_url((string) $stat['url']); ?>"<?php if (!empty($stat['tab'])) : ?> data-tab="<?php echo esc_attr((string) $stat['tab']); ?>"<?php endif; ?>><div class="em14"><?php echo esc_html(jio_cut_count((int) $stat['value'])); ?></div><div class="em09 opacity5 mt6"><?php echo esc_html((string) $stat['label']); ?></div></a>
|
|
<?php endforeach; ?>
|
|
</div>
|