修复了一些一些已知问题

This commit is contained in:
2026-08-21 12:35:55 +08:00
parent d69334b37d
commit 3e6af7863d
7 changed files with 178 additions and 38 deletions
@@ -16,6 +16,11 @@ const scriptsPart1c = read('src/Core/ScriptsPart1c.php')
const footerCss = read('assets/css/frontend/footer/zibll-shell.css')
const frontendBaseCss = read('assets/css/frontend/base.css')
const headerMenuButtons = read('inc/helpers/aksrt-header-menu-buttons.php')
const frontendRenderer = read('src/WidgetSystem/FrontendRenderer.php')
const userRenderer = read('src/WidgetSystem/Renderers/UserRenderer.php')
const headerNavbar = read('inc/helpers/header/aksrt-header-navbar.php')
const headerSearch = read('inc/helpers/header/aksrt-header-menu-search.php')
const headerCss = read('assets/css/frontend/header-userbox.css')
function activeRepositorySource() {
const roots = ['assets/admin/src', 'assets/js', 'inc', 'src', 'templates']
@@ -57,7 +62,6 @@ test('top-level field IDs match the Zibll V9.0 eight-page contract', () => {
'header_theme_custom', 'header_theme_bg_custom', 'header_theme_bg', 'header_theme_color_custom',
'header_layout', 'mobile_header_layout', 'mobile_navbar_align', 'nav_fixed', 'nav_scroll_down_hide',
'nav_newposts', 'nav_newposts_radius', 'nav_newposts_class', 'nav_newposts_text',
'nav_user_newposts_btn', 'nav_user_newposts_btn_text',
])
assert.deepEqual(topLevelFieldIds('header_components'), [
'header_slider_show', 'header_slider_show_type', 'header_slider_nav_color', 'header_slider',
@@ -201,6 +205,34 @@ test('header multifunction search keeps focus and submit alignment route-indepen
)
})
test('user profile widget owns its only card surface and keeps membership below the name', () => {
assert.match(frontendRenderer, /size\(\) === 'sidebar' && \$definition->slug\(\) !== 'user_card'/)
assert.match(userRenderer, /display_name\) \. '<\/a><\/h3>'/)
assert.match(userRenderer, /aksrt-user-card__identity.*aksrt_render_user_identity_chips\(\$user_id, 'widget'\)/s)
assert.doesNotMatch(userRenderer, /display_name\) \. '<\/a>' \. \(function_exists\('aksrt_render_vip_badge'/)
})
test('desktop header actions share one row without generic button masks', () => {
assert.match(headerNavbar, /aksrt-navbar-actions navbar-form navbar-right/)
assert.match(headerNavbar, /class="aksrt-nav-icon nav-search-btn main-search-btn"/)
assert.doesNotMatch(headerNavbar, /class="btn nav-search-btn main-search-btn"/)
assert.match(headerCss, /\.navbar-top \.aksrt-navbar-actions\s*\{[^}]*display:\s*flex;[^}]*align-items:\s*center;/s)
assert.match(headerCss, /\.navbar-top \.aksrt-nav-icon,[\s\S]*?background:\s*transparent !important;/)
assert.match(headerCss, /\.navbar-top \.aksrt-navbar-actions \.navbar-cta\.radius\s*\{[^}]*border-radius:\s*50px;/s)
})
test('search surface clears the fixed header and closes from the lower-right corner', () => {
assert.match(headerCss, /\.navbar-search\s*\{[^}]*z-index:\s*1001;[^}]*height:\s*100%;[^}]*overflow:\s*hidden;/s)
assert.match(headerCss, /\.navbar-search \.search-close-box\s*\{[^}]*position:\s*fixed;[^}]*right:[^;]+;[^}]*bottom:/s)
assert.ok(headerSearch.indexOf('echo $remote') < headerSearch.indexOf('search-close-box'))
})
test('header user-card publish controls are removed from configuration and runtime', () => {
assert.doesNotMatch(schema, /nav_user_newposts_btn/)
assert.doesNotMatch(headerNavbar, /nav_user_newposts_btn/)
assert.match(headerNavbar, /esc_html__\('发布内容', 'aksrt'\)/)
})
test('save contract rejects invalid input and round-trips canonical nested values', () => {
const result = spawnSync(process.env.PHP_BINARY || 'php', [path.join(__dirname, 'page-display-save-harness.php')], {
cwd: root,