diff --git a/assets/js/front-submit.js b/assets/js/front-submit.js
index 1a0ece2e..db942467 100644
--- a/assets/js/front-submit.js
+++ b/assets/js/front-submit.js
@@ -522,7 +522,7 @@
type: 'image',
multiple: false,
allowExternal: false,
- title: i18n.setVideoCoverTitle || '为视频设置首图封面',
+ title: i18n.setVideoCoverTitle || '为视频设置封面',
onSelect: function (cover) {
self.setFeatured('video', {
url: current.data.url,
@@ -554,7 +554,7 @@
type: 'image',
multiple: false,
allowExternal: false,
- title: i18n.setVideoCoverTitle || '为视频设置首图封面',
+ title: i18n.setVideoCoverTitle || '为视频设置封面',
onSelect: function (cover) {
self.setFeatured('video', {
url: video.url,
diff --git a/templates/pages/page-submit.php b/templates/pages/page-submit.php
index 697b521b..4a9b6c80 100644
--- a/templates/pages/page-submit.php
+++ b/templates/pages/page-submit.php
@@ -147,8 +147,7 @@ if (file_exists($js)) {
'fileTooLarge' => __('文件大小超过限制', 'aksrt'),
'lastSaved' => __('最后保存:', 'aksrt'),
'preview' => __('预览文章', 'aksrt'),
- 'setVideoCover' => __('设置视频首图封面', 'aksrt'),
- 'setVideoCoverTitle' => __('为视频设置首图封面', 'aksrt'),
+ 'setVideoCoverTitle' => __('为视频设置封面', 'aksrt'),
'close' => __('关闭', 'aksrt'),
'insertImage' => __('插入图片', 'aksrt'),
'uploadImage' => __('上传图片', 'aksrt'),
diff --git a/templates/parts/submit/featured.php b/templates/parts/submit/featured.php
index be258163..9cc37b92 100644
--- a/templates/parts/submit/featured.php
+++ b/templates/parts/submit/featured.php
@@ -47,8 +47,10 @@ $can_video = !empty($ctx['can_cover_video']);
-
-
-
+
+
- >
-
+
+ title=""
+ aria-label="">
+
diff --git a/tests/front-submit/video-cover-contract.test.cjs b/tests/front-submit/video-cover-contract.test.cjs
index 62cfad18..1625b35f 100644
--- a/tests/front-submit/video-cover-contract.test.cjs
+++ b/tests/front-submit/video-cover-contract.test.cjs
@@ -17,7 +17,12 @@ test('featured box renders a playable video preview and a video-cover button', (
assert.match(featured, /fa fas fa-play-circle/);
// The video-cover button is capability-gated like the video button.
- assert.match(featured, /if \(\$can_video\) : \?>\s*\n\s*/);
+ assert.match(featured, /if \(\$can_video\) : \?>\s*\n\s*"/);
+
+ // The video row (video cover / video / clear) is icon-only with hover titles.
+ assert.match(featured, /btn-video" data-featured-action="video"\s*\n\s*title="<\?php esc_attr_e\('视频', 'aksrt'\); \?>"\s*\n\s*aria-label="<\?php esc_attr_e\('视频', 'aksrt'\); \?>">\s*\n\s*<\/i>\s*\n\s*<\/button>/);
+ assert.match(featured, /btn-delete" data-featured-action="close"[\s\S]*?title="<\?php esc_attr_e\('清除', 'aksrt'\); \?>"/);
+ assert.doesNotMatch(featured, /首图|>视频<|>清除);
// Dead capability attributes are gone.
assert.doesNotMatch(featured, /data-can-(image|slide|video)=/);
@@ -46,7 +51,9 @@ test('submit.css toggles the video-cover button like the reference theme', () =>
const css = read('assets/css/frontend/pages/submit.css');
assert.match(css, /\.featured-edit \.btns-full \.btn-video-pic \{\s*\n display: none;\s*\n\}/);
- assert.match(css, /\.featured-loaded\.video \.btns-full \.btn-video-pic \{\s*\n display: inline-flex;\s*\n\}/);
+ assert.match(css, /\.featured-loaded\.video \.btns-full \.btn-video-pic \{\s*\n display: inline-flex;\s*\n align-items: center;\s*\n justify-content: center;\s*\n\}/);
+ assert.match(css, /\.featured-edit \.btns-full \.btn-video,\s*\n\.featured-edit \.btns-full \.btn-delete:not\(\[hidden\]\) \{\s*\n display: inline-flex;\s*\n align-items: center;\s*\n justify-content: center;\s*\n\}/);
+ assert.match(css, /\.featured-edit \.btns-full \.btn-video-pic > \.fa,[\s\S]*?\.featured-edit \.btns-full \.btn-delete > \.fa \{\s*\n margin-right: 0;\s*\n\}/);
assert.doesNotMatch(css, /featured-video-placeholder/);
});
@@ -71,8 +78,11 @@ test('i18n exposes the video-cover strings and dead keys are removed', () => {
const editorJs = read('assets/js/front-submit-editor.js');
const submitJs = read('assets/js/front-submit.js');
- assert.match(page, /'setVideoCover' => __\('设置视频首图封面', 'aksrt'\)/);
- assert.match(page, /'setVideoCoverTitle' => __\('为视频设置首图封面', 'aksrt'\)/);
+ assert.match(page, /'setVideoCoverTitle' => __\('为视频设置封面', 'aksrt'\)/);
+ // The unused setVideoCover key died with the visible button label it served.
+ assert.doesNotMatch(page, /'setVideoCover' =>/);
+ assert.doesNotMatch(page, /首图/);
+ assert.doesNotMatch(submitJs, /首图/);
assert.doesNotMatch(page, /'(pickImage|pickVideo|pickVideoCover|pickVideoResource|videoUrl)'/);
// data-video-name / mediaUrl stay: pinned by tinymce.css and the