fix(comments): align image upload with Zibll
Unify comment image upload settings, REST permissions, preview, progress, and response handling while removing obsolete compatibility paths.
This commit is contained in:
1 parent
129432ae45
commit
44e165d34e
14 files changed
+513
-216
No files matched your search
@@ -59,19 +59,6 @@
|
||||
return formData;
|
||||
}
|
||||
|
||||
// 从 wp_die() HTML 中提取错误信息
|
||||
function extractErrorMessage(html) {
|
||||
// WordPress wp_die() 输出格式: <p>错误信息</p>
|
||||
var match = html.match(/<p[^>]*>([^<]+)<\/p>/i);
|
||||
return match ? match[1].trim() : '未知错误';
|
||||
}
|
||||
|
||||
// 从错误消息中提取等待时间(秒)
|
||||
function extractWaitTime(msg) {
|
||||
var match = msg.match(/(\d+)\s*秒/);
|
||||
return match ? parseInt(match[1]) : 0;
|
||||
}
|
||||
|
||||
// 启动倒计时(用于频率限制)
|
||||
function startCountdown(seconds) {
|
||||
if (countdownTimer) clearInterval(countdownTimer);
|
||||
@@ -106,93 +93,6 @@
|
||||
var nextCount = Math.max(0, parseInt(match[1], 10) + delta);
|
||||
countEl.textContent = text.replace(match[1], String(nextCount));
|
||||
}
|
||||
function handleResponse(responseText, statusCode) {
|
||||
try {
|
||||
// 情况1: 成功提交 - 包含评论ID或成功标记
|
||||
if (statusCode === 200 || statusCode === 201) {
|
||||
if (responseText.includes('comment-submitted') ||
|
||||
responseText.indexOf('id="comment-') !== -1 ||
|
||||
responseText.indexOf('awaiting-moderation') !== -1) {
|
||||
|
||||
// 区分是否需要审核
|
||||
if (responseText.indexOf('审核') !== -1 ||
|
||||
responseText.indexOf('moderation') !== -1 ||
|
||||
responseText.includes('awaiting-moderation')) {
|
||||
notyf('评论已提交,等待管理员审核', 'info');
|
||||
} else {
|
||||
notyf('评论发布成功', 'success');
|
||||
}
|
||||
|
||||
// 清空文本框
|
||||
var textarea = form.querySelector('#comment');
|
||||
if (textarea) textarea.value = '';
|
||||
|
||||
// 重置回复状态
|
||||
var replyInfo = document.getElementById('comment-reply-info');
|
||||
if (replyInfo) replyInfo.style.display = 'none';
|
||||
|
||||
// 刷新评论列表(延迟执行,确保后端处理完成)
|
||||
setTimeout(function () {
|
||||
reloadCommentList();
|
||||
}, 500);
|
||||
setLoading(false);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
// 情况2: HTTP 429 频率限制
|
||||
if (statusCode === 429) {
|
||||
var errorMsg = extractErrorMessage(responseText);
|
||||
var waitSeconds = extractWaitTime(errorMsg);
|
||||
|
||||
notyf(errorMsg, 'warning');
|
||||
|
||||
if (waitSeconds > 0) {
|
||||
startCountdown(waitSeconds);
|
||||
} else {
|
||||
setLoading(false); // 无具体等待时间时恢复按钮
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// 情况3: HTTP 403 权限不足(地区/IP/关键词等)
|
||||
if (statusCode === 403) {
|
||||
var forbiddenMsg = extractErrorMessage(responseText);
|
||||
notyf(forbiddenMsg, 'danger');
|
||||
setLoading(false);
|
||||
return false;
|
||||
}
|
||||
|
||||
// 情况4: 包含WordPress错误信息
|
||||
var errorMatch = responseText.match(/<p[^>]*>([^<]*(?:错误|失败|error|Error)[^<]*)<\/p>/i);
|
||||
if (errorMatch) {
|
||||
notyf(errorMatch[1].trim(), 'danger');
|
||||
setLoading(false);
|
||||
return false;
|
||||
}
|
||||
// 默认情况:可能是成功或其他
|
||||
notyf('评论已提交', 'success');
|
||||
var textarea2 = form.querySelector('#comment');
|
||||
if (textarea2) textarea2.value = '';
|
||||
|
||||
// 局部刷新评论列表(不再整页 reload)
|
||||
setTimeout(function () {
|
||||
reloadCommentList();
|
||||
}, 500);
|
||||
setLoading(false);
|
||||
|
||||
return true;
|
||||
|
||||
} catch (e) {
|
||||
console.error('[AKSRT Comment] 解析响应失败:', e);
|
||||
notyf('响应解析异常,请重试', 'danger');
|
||||
setLoading(false);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// 执行实际的 REST 请求 — local insert instead of full-page re-fetch
|
||||
function performSubmit(captchaPayload) {
|
||||
setLoading(true);
|
||||
|
||||
Reference in new issue
Block a user