refactor(creator-studio): move taxonomy to the settings card, slim the drawer to pay

Classification belongs next to everything else the author decides before
publishing, and the drawer should only configure paid resources.

- PublishSettings now renders categories, tags and custom taxonomy
  dimensions first, then cover, paid content and scheduling. Chips use a
  stacked row layout so long category lists wrap naturally.
- PublishDrawer keeps only PayPanel: taxonomy, save/publish buttons and the
  now-unused props are gone, leaving a single 完成 button.
- New PublishDialog takes over the publish action from the bottom bar, and
  with it the captcha mount point, so the gate still renders somewhere the
  author can see it.
- Promotes .jio-creator-primary / .jio-creator-ghost out of the dialog-only
  rules (drawer and pay panel buttons had no styling), and drops the dead
  .jio-creator-field / .jio-creator-cover blocks.

Contracts updated; 886 widget-system tests pass.
This commit is contained in:
kate522 committed 2026-11-09 15:47:02 +08:00
1 parent ac84e991d1
commit f97fd72bd0
11 files changed
+448 -322

No files matched your search

@@ -146,8 +146,12 @@ test('studio app uses TinyMCE while preserving autosave, recovery, and publishin
assert.match(drawer, /canPayDownload/);
assert.match(drawer, /<PayPanel/);
assert.match(read('assets/creator-studio/src/panels/pay-panel.tsx'), /私有附件存储尚未配置/);
assert.match(drawer, /onSubmit\(false\)/);
assert.match(drawer, /立即发布/);
// 发布动作在底部状态栏 + 确认弹窗里,抽屉只做付费配置。
assert.doesNotMatch(drawer, /onSubmit\(/);
assert.doesNotMatch(drawer, /立即发布/);
assert.doesNotMatch(drawer, /保存草稿/);
assert.match(read('assets/creator-studio/src/components/publish-dialog.tsx'), /onSubmit\(false\)/);
assert.match(read('assets/creator-studio/src/components/publish-dialog.tsx'), /立即发布/);
});
test('studio enqueues the WordPress editor and TinyMCE media tools', () => {
@@ -436,8 +440,21 @@ test('writing surface is a centered paper card with a publish settings card belo
assert.match(settings, /onOpenPaySettings/);
assert.match(settings, /配置价格与付费资源/);
assert.match(appSource, /onOpenPaySettings=\{/);
assert.match(appSource, /focusPay=\{drawerFocusPay\}/);
assert.match(read('assets/creator-studio/src/panels/publish-drawer.tsx'), /scrollIntoView/);
// 分类与标签已从抽屉移到发布设置卡片。
assert.match(settings, /__\('分类', 'jio'\)/);
assert.match(settings, /__\('标签', 'jio'\)/);
assert.match(settings, /onCategoriesChange/);
assert.match(settings, /onTagsChange/);
assert.match(settings, /onCustomChange/);
assert.match(appSource, /onCategoriesChange=\{/);
assert.match(appSource, /onTagsChange=\{/);
assert.doesNotMatch(read('assets/creator-studio/src/panels/publish-drawer.tsx'), /taxonomy/);
// 发布动作从抽屉移到确认弹窗,人机验证挂载点随之迁移。
assert.match(appSource, /<PublishDialog/);
assert.match(read('assets/creator-studio/src/components/publish-dialog.tsx'), /jio-creator-captcha/);
assert.doesNotMatch(drawer, /jio-creator-captcha/);
});
test('scheduled publishing is validated and applied server side', () => {