From c484ee6ef3333b0f883205c9a08e5a6adf7b4152 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 25 Aug 2026 19:59:43 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86=E4=B8=80=E4=BA=9B?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/css/frontend/pages/submit.css | 4 -- assets/js/front-submit.js | 54 ------------------- src/Core/ScriptsPart1b.php | 14 ++--- templates/parts/submit/editor-main.php | 10 +--- .../front-submit-editor-contract.test.cjs | 21 ++++---- 5 files changed, 16 insertions(+), 87 deletions(-) diff --git a/assets/css/frontend/pages/submit.css b/assets/css/frontend/pages/submit.css index 9a7d4df1..fd816f49 100644 --- a/assets/css/frontend/pages/submit.css +++ b/assets/css/frontend/pages/submit.css @@ -71,10 +71,6 @@ border: none; } -.aksrt-submit-editor-wrap textarea.wp-editor-area { - opacity: 1; -} - .aksrt-submit-editor-wrap .mce-toolbar-grp { background: var(--surface-1, #fff); border-bottom: 1px solid var(--color-line, #eceff4); diff --git a/assets/js/front-submit.js b/assets/js/front-submit.js index 44678fca..ae62eeed 100644 --- a/assets/js/front-submit.js +++ b/assets/js/front-submit.js @@ -100,7 +100,6 @@ if (!this.form) { return; } - this.hydrateEditor(); this.bindDirty(); this.bindAutoHeight(); this.bindSubmitButtons(); @@ -114,59 +113,6 @@ this.loadFeaturedFromDom(); }, - hydrateEditor: function () { - var snapshot = document.getElementById('aksrt-initial-post-content'); - var textarea = qs('#post_content') || qs('[name="post_content"]'); - var initialContent = snapshot ? snapshot.value : textarea ? textarea.value : ''; - if (!initialContent) { - return; - } - - var fallbackToTextEditor = function () { - if (window.switchEditors && typeof window.switchEditors.go === 'function') { - window.switchEditors.go('post_content', 'html'); - } - if (textarea) { - textarea.value = initialContent; - textarea.style.opacity = '1'; - textarea.style.display = 'block'; - } - }; - - var attempts = 0; - var restore = function () { - var editor = window.tinymce && window.tinymce.get('post_content'); - if (!editor) { - attempts += 1; - if (attempts < 20) { - setTimeout(restore, 250); - } else { - fallbackToTextEditor(); - } - return; - } - - var hydrate = function () { - var current = editor.getContent({ format: 'raw' }); - if (!current || !current.trim()) { - editor.setContent(initialContent); - editor.save(); - } - if (!editor.getContent({ format: 'raw' }).trim()) { - fallbackToTextEditor(); - } - }; - - if (editor.initialized) { - hydrate(); - } else { - editor.on('init', hydrate); - } - }; - - restore(); - }, - bindDirty: function () { var self = this; this.form.addEventListener('input', function () { diff --git a/src/Core/ScriptsPart1b.php b/src/Core/ScriptsPart1b.php index b85252af..c11930e3 100644 --- a/src/Core/ScriptsPart1b.php +++ b/src/Core/ScriptsPart1b.php @@ -16,15 +16,11 @@ trait ScriptsPart1b { $runtime_uri = $base_uri . '/assets'; $fa5_uri = $base_uri . '/assets/fontawesome5'; - // The legacy frontend runtime is the single public dependency stack. - wp_deregister_script('jquery'); - wp_register_script( - 'jquery', - $runtime_uri . '/js/runtime/libs/jquery.min.js', - [], - '1.9.1', - false - ); + // Keep the WordPress handle but make its modern core build the only runtime. + $wp_scripts = wp_scripts(); + if (isset($wp_scripts->registered['jquery'])) { + $wp_scripts->registered['jquery']->deps = ['jquery-core']; + } wp_enqueue_script('jquery'); wp_enqueue_script( diff --git a/templates/parts/submit/editor-main.php b/templates/parts/submit/editor-main.php index a3a170df..4fcd347d 100644 --- a/templates/parts/submit/editor-main.php +++ b/templates/parts/submit/editor-main.php @@ -42,12 +42,6 @@ $is_can_new = !empty($ctx['is_can_new']);
- - wp_is_mobile() ? 460 : 470, 'media_buttons' => false, 'default_editor' => 'tinymce', - 'quicktags' => true, + 'quicktags' => false, 'teeny' => false, 'tinymce' => [ 'toolbar1' => $toolbar1, @@ -65,7 +59,7 @@ $is_can_new = !empty($ctx['is_can_new']); 'placeholder' => (string) ($settings['content_placeholder'] ?? ''), ], ]; - wp_editor($initial_content, 'post_content', $editor_settings); + wp_editor((string) $ctx['current_content'], 'post_content', $editor_settings); ?>
diff --git a/tests/widget-system/front-submit-editor-contract.test.cjs b/tests/widget-system/front-submit-editor-contract.test.cjs index 3da60f4c..8fa27c96 100644 --- a/tests/widget-system/front-submit-editor-contract.test.cjs +++ b/tests/widget-system/front-submit-editor-contract.test.cjs @@ -21,19 +21,16 @@ test('published post content reaches the front submit editor unchanged', () => { const editor = read('templates/parts/submit/editor-main.php'); assert.match(context, /\$current_content\s*=\s*\$edit_post\s*\?\s*\$edit_post->post_content\s*:\s*'';/); - assert.match(editor, /\$initial_content\s*=\s*\(string\) \$ctx\['current_content'\]/); - assert.match(editor, /wp_editor\(\$initial_content, 'post_content', \$editor_settings\);/); + assert.match(editor, /wp_editor\(\(string\) \$ctx\['current_content'\], 'post_content', \$editor_settings\);/); }); -test('front submit restores published content when TinyMCE initializes empty', () => { - const editor = read('templates/parts/submit/editor-main.php'); - const runtime = read('assets/js/front-submit.js'); - const styles = read('assets/css/frontend/pages/submit.css'); +test('front submit uses the WordPress registered jQuery runtime', () => { + const source = read('src/Core/ScriptsPart1b.php'); - assert.match(editor, /'quicktags'\s*=>\s*true/); - assert.match(editor, /id="aksrt-initial-post-content"/); - assert.match(runtime, /hydrateEditor:\s*function/); - assert.match(runtime, /editor\.setContent\(initialContent\)/); - assert.match(runtime, /switchEditors\.go\('post_content', 'html'\)/); - assert.match(styles, /textarea\.wp-editor-area\s*\{[^}]*opacity:\s*1/s); + assert.match(source, /wp_enqueue_script\('jquery'\);/); + assert.match(source, /registered\['jquery'\]->deps\s*=\s*\['jquery-core'\]/); + assert.doesNotMatch(source, /wp_deregister_script\('jquery'\)/); + assert.doesNotMatch(source, /wp_register_script\(\s*'jquery'/); + assert.doesNotMatch(source, /jquery-migrate/); + assert.doesNotMatch(source, /runtime\/libs\/jquery\.min\.js|['"]1\.9\.1['"]/); });