feat(creator-studio): two-row masthead with site logo and user avatar

顶栏改为知乎式两行结构:第一行左侧站点 LOGO、右侧当前用户头像,
第二行只保留正文工具条并居中,同时移除「Jio / 写文章」字样。

- bootstrap payload 新增 site/viewer 身份字段(复用 jio_get_site_logo_url
  与 jio_get_avatar_url,前端不拼 URL、不做权限判断)
- 拆分 draft 类型、TinyMCE 块运行时、顶栏组件,index.tsx 1065 → 735 行
- 清理死代码:未调用的 keepCaretInsideCode、永远无法打开的代码语言弹窗
  (setCodeLanguage 只会收到 null,codeTargetRef 从未赋值)及其样式,
  以及顶栏移除后失效的 bar-left/brand/mode/save-draft/ghost/primary 规则
- 契约测试、本地预览与截图脚本同步到新 DOM

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
kate522andClaude Opus 5 committed 2026-11-08 22:20:10 +08:00
1 parent 5f31c58df2
commit 1970db0b56
17 files changed
+602 -580

No files matched your search

+37 -1
View File
@@ -127,7 +127,9 @@ final class CreatorRest {
? (array) get_post_meta($source->ID, DomainModel::POST_META_KEY, true)
: [];
$terms = $this->term_payload($settings, $source, $snapshot);
$terms = $this->term_payload($settings, $source, $snapshot);
$viewer = $user_id > 0 ? get_userdata($user_id) : null;
$ident = $this->identity_payload($viewer instanceof \WP_User ? $viewer : null);
return [
'sourceId' => $post_id,
@@ -172,6 +174,40 @@ final class CreatorRest {
'newPost' => function_exists('jio_get_new_post_url') ? jio_get_new_post_url() : '',
'center' => function_exists('jio_get_user_center_url') ? jio_get_user_center_url('posts') : '',
],
'site' => $ident['site'],
'viewer' => $ident['viewer'],
];
}
/**
* 顶栏身份信息:站点 Logo 与当前用户头像。
*
* 只做展示,不承载权限判断;Logo 缺失时前端回退到品牌文字。
*
* @return array{site: array<string, string>, viewer: array<string, string>}
*/
private function identity_payload(?\WP_User $viewer = null): array {
$brand = function_exists('jio_get_site_logo_text') ? (string) jio_get_site_logo_text() : '';
$brand = $brand !== '' ? $brand : (string) get_bloginfo('name');
$logo = function_exists('jio_get_site_logo_url') ? trim((string) jio_get_site_logo_url()) : '';
if ($logo === '') {
$logo = get_template_directory_uri() . '/assets/img/logo.png';
}
$avatar = $viewer instanceof \WP_User && function_exists('jio_get_avatar_url')
? (string) jio_get_avatar_url($viewer, ['size' => 72])
: '';
return [
'site' => [
'home' => esc_url_raw(home_url('/')),
'name' => $brand,
'logo' => esc_url_raw($logo),
],
'viewer' => [
'avatar' => esc_url_raw($avatar),
],
];
}