fix(frontend): align page-set hint bar and FA5 icons with the reference

- 齿轮提示横条改为参考主题的 .abs-right 垂直居中几何(top:50% +
  right:.7em + translateY(-50%)),本站 legacy .abs-right 是 top:0/right:0
  导致横条贴到按钮顶角
- 新增 front-page-admin-set.js:横条 2 秒后淡出 1 秒消失(对齐参考
  主题 js/page-edit.js),开关关闭时不出队脚本
- 齿轮与弹窗内图标统一为 FA5 惯例 fa fas fa-*,并采用 FA5 的 glyph
  重命名(sliders→sliders-h、pie-chart→chart-pie)
This commit is contained in:
2026-10-06 12:50:20 +08:00
parent 12f60897d9
commit 6dbe1fe4c6
7 changed files with 178 additions and 6 deletions
@@ -20,6 +20,7 @@ namespace {
$GLOBALS['aksrt_set_object'] = null;
$GLOBALS['aksrt_set_page_templates'] = [];
$GLOBALS['aksrt_set_can'] = true;
$GLOBALS['aksrt_set_scripts'] = [];
function __(string $text, string $domain = ''): string { return $text; }
function esc_html__($t, $d = ''): string { return (string) $t; }
@@ -84,6 +85,11 @@ namespace {
function wp_kses($t, $allowed = null): string { return (string) $t; }
function checked($a, $b = true, $echo = true): string { return (string) $a === (string) $b ? ' checked="checked"' : ''; }
function selected($a, $b = true, $echo = true): string { return (string) $a === (string) $b ? ' selected="selected"' : ''; }
function wp_enqueue_script($handle, $src = '', $deps = [], $ver = false, $in_footer = false): void {
$GLOBALS['aksrt_set_scripts'][$handle] = ['src' => $src, 'deps' => $deps, 'in_footer' => $in_footer];
}
function get_template_directory(): string { return dirname(__DIR__, 2); }
function get_template_directory_uri(): string { return 'https://example.test/wp-content/themes/aksrt-theme'; }
function set_check(bool $condition, string $message): void {
if (!$condition) throw new \RuntimeException($message);
@@ -256,5 +262,36 @@ namespace {
set_check(($GLOBALS['aksrt_set_meta']['widgets_register'] ?? '') === '', 'closing the widget container must clear the flag');
set_check(($GLOBALS['aksrt_set_meta']['widgets_register_container'] ?? ['x']) === [], 'closing the widget container must clear positions');
// --- Hint script: the transient label must fade like the reference theme. ---
PageAdminSet::enqueue_hint_script();
$hint = $GLOBALS['aksrt_set_scripts']['aksrt-front-page-admin-set'] ?? null;
set_check(is_array($hint), 'the hint fade script must be enqueued when the feature is on');
set_check(strpos((string) ($hint['src'] ?? ''), '/assets/js/front-page-admin-set.js') !== false, 'the hint fade script must point at front-page-admin-set.js');
set_check(($hint['deps'] ?? []) === ['jquery'], 'the hint fade script must depend on jQuery');
set_check(!empty($hint['in_footer']), 'the hint fade script must load in the footer');
\AKSRT\Settings\ExtensionRuntime::$settings = ['admin_frontend_set' => false];
$GLOBALS['aksrt_set_scripts'] = [];
PageAdminSet::enqueue_hint_script();
set_check($GLOBALS['aksrt_set_scripts'] === [], 'the disabled switch must not enqueue the hint fade script');
\AKSRT\Settings\ExtensionRuntime::$settings = ['admin_frontend_set' => true];
// --- Icons: the site-wide convention is the normalized `fa fas fa-*` form. ---
$GLOBALS['aksrt_set_queried'] = 12;
$GLOBALS['aksrt_set_is_single'] = true;
$GLOBALS['aksrt_set_is_page'] = false;
$GLOBALS['aksrt_set_post_type'] = 'post';
$GLOBALS['aksrt_set_post'] = (object) ['ID' => 12, 'post_type' => 'post'];
ob_start();
(new PageAdminSet())->render_modal();
$modal_icons = (string) ob_get_clean();
foreach (['fa fas fa-sliders-h', 'fa fas fa-times', 'fa fas fa-chart-pie', 'fa fas fa-wordpress', 'fa fas fa-check'] as $icon) {
set_check(strpos($modal_icons, $icon) !== false, "modal must use the FA5 icon {$icon}");
}
set_check(strpos($modal_icons, 'class="fa fa-') === false, 'modal must not use bare FA4 icon classes');
$gear = (new PageAdminSet())->float_button('', false);
set_check(strpos($gear, 'fa fas fa-cog fa-spin') !== false, 'the gear must use the FA5 cog class');
echo "Frontend page edit harness passed\n";
}