diff --git a/assets/js/comment-ajax.js b/assets/js/comment-ajax.js index 4cf3541a..a18c14b5 100644 --- a/assets/js/comment-ajax.js +++ b/assets/js/comment-ajax.js @@ -88,7 +88,7 @@ } function handleDelete(commentEl, commentId) { - var msg = (window.aksrt && aksrt.__) ? aksrt.__('comment_confirm_delete', '确定要删除这条评论吗?') : '确定要删除这条评论吗?'; + var msg = '确定要删除这条评论吗?'; var doDelete = function () { restPost('/comment/delete', { comment_id: commentId }) .then(function (result) { @@ -118,9 +118,7 @@ .catch(function () { notyf('网络错误', 'danger'); }); }; - if (window.aksrt && aksrt.confirm) { - aksrt.confirm(msg).then(function (ok) { if (ok) doDelete(); }); - } else if (window.confirm(msg)) { + if (window.confirm(msg)) { doDelete(); } } diff --git a/assets/js/core/theme.js b/assets/js/core/theme.js index 00257c63..b74c84fa 100644 --- a/assets/js/core/theme.js +++ b/assets/js/core/theme.js @@ -189,7 +189,7 @@ themeInitialized = true; var stored = getStoredTheme(); - var configuredMode = (window.aksrtData && aksrtData.themeMode) || "light"; + var configuredMode = (window.aksrtData && window.aksrtData.themeMode) || "light"; if (stored === "dark" || stored === "light") { applyTheme(stored); } else { @@ -262,12 +262,6 @@ bindToggle("dropdown-theme-toggle"); bindToggle("float-theme-toggle"); bindToggle("theme-toggle-mobile"); - - aksrt.toggleTheme = function (event) { - var next = document.body.classList.contains("theme-dark") ? "light" : "dark"; - setStoredTheme(next); - runThemeTransition(next, event); - }; } if (document.readyState === "loading") { diff --git a/assets/js/runtime/main.min.js b/assets/js/runtime/main.min.js index 36bf9c96..10c221d1 100644 --- a/assets/js/runtime/main.min.js +++ b/assets/js/runtime/main.min.js @@ -1 +1 @@ -(function($,window2,document2){"use strict";function closeNotyf($element){$element.addClass("notyn-out"),window2.setTimeout(function(){$element.remove()},1e3)}function notyf2(message,type,time,id){var $body=jQuery(document2.body);jQuery(".notyn").length||$body.append('
'),type=type||"success",type==="error"&&(type="danger"),time=time||5e3,time=time<100?time*1e3:time;var idAttribute=id?' id="'+id+'"':"",$notification=jQuery(']*>([^<]+)<\/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){countdownTimer&&clearInterval(countdownTimer),submitBtn.classList.add("countdown-active"),submitBtn.disabled=!0;var remaining=seconds;countdownTimer=setInterval(function(){setSubmitBtnContent(' 请等待 '+remaining+"s","请等待 "+remaining+"s"),--remaining<=0&&(clearInterval(countdownTimer),countdownTimer=null,submitBtn.classList.remove("countdown-active","is-loading"),submitBtn.disabled=!1,setSubmitBtnContent(originalBtnHTML,originalBtnHTML),isSubmitting=!1)},1e3)}function updateCommentCount(delta){var countEl=document.querySelector("#comments .title-theme small");if(countEl){var text=countEl.textContent||"",match=text.match(/(\d+)/);if(match){var nextCount=Math.max(0,parseInt(match[1],10)+delta);countEl.textContent=text.replace(match[1],String(nextCount))}}}function handleResponse(responseText,statusCode){try{if((statusCode===200||statusCode===201)&&(responseText.includes("comment-submitted")||responseText.indexOf('id="comment-')!==-1||responseText.indexOf("awaiting-moderation")!==-1)){responseText.indexOf("审核")!==-1||responseText.indexOf("moderation")!==-1||responseText.includes("awaiting-moderation")?notyf("评论已提交,等待管理员审核","info"):notyf("评论发布成功","success");var textarea=form.querySelector("#comment");textarea&&(textarea.value="");var replyInfo=document.getElementById("comment-reply-info");return replyInfo&&(replyInfo.style.display="none"),setTimeout(function(){reloadCommentList()},500),setLoading(!1),!0}if(statusCode===429){var errorMsg=extractErrorMessage(responseText),waitSeconds=extractWaitTime(errorMsg);return notyf(errorMsg,"warning"),waitSeconds>0?startCountdown(waitSeconds):setLoading(!1),!1}if(statusCode===403){var forbiddenMsg=extractErrorMessage(responseText);return notyf(forbiddenMsg,"danger"),setLoading(!1),!1}var errorMatch=responseText.match(/
]*>([^<]*(?:错误|失败|error|Error)[^<]*)<\/p>/i);if(errorMatch)return notyf(errorMatch[1].trim(),"danger"),setLoading(!1),!1;notyf("评论已提交","success");var textarea2=form.querySelector("#comment");return textarea2&&(textarea2.value=""),setTimeout(function(){reloadCommentList()},500),setLoading(!1),!0}catch(e){return console.error("[AKSRT Comment] 解析响应失败:",e),notyf("响应解析异常,请重试","danger"),setLoading(!1),!1}}function performSubmit(captchaPayload){setLoading(!0);var formData=collectFormData(),restRoot=window.aksrtData&&aksrtData.siteUrl?String(aksrtData.siteUrl).replace(/\/$/,""):"",editId=form.querySelector('[name="edit_comment_ID"]'),isEdit=editId&&parseInt(editId.value,10)>0,restBase=(restRoot||"")+"/wp-json/aksrt/v1/comment/"+(isEdit?"edit":"submit"),restBody={};formData.forEach(function(v,k){restBody[k]=v}),Object.assign(restBody,captchaPayload||{}),isEdit&&(restBody.comment_id=parseInt(editId.value,10),restBody.content=restBody.comment||restBody.content||""),fetch(restBase,{method:"POST",headers:{"Content-Type":"application/json","X-WP-Nonce":window.aksrtData&&aksrtData.restNonce||""},credentials:"same-origin",body:JSON.stringify(restBody)}).then(function(r){return r.json()}).then(function(json){if(isEdit&&json&&json.success){var cid=restBody.comment_id,contentEl=document.querySelector("#comment-content-"+cid+', [data-comment-id="'+cid+'"] .comment-content'),rendered=json.data&&json.data.content||json.content||"";contentEl&&rendered&&(contentEl.innerHTML=rendered);var textarea=form.querySelector("#comment");textarea&&(textarea.value=""),editId&&editId.remove(),restoreRespondPosition(),setLoading(!1),notyf(json.message||"评论已更新","success");var respondEl=document.getElementById("respond");respondEl&&window.AksrtFixedInput&&window.AksrtFixedInput(respondEl,"hide");return}if(json&&json.success&&json.html){localInsertComment(json.html,json.is_reply,json.parent_id,json.needs_moderation);var textarea=form.querySelector("#comment");textarea&&(textarea.value="");var replyInfo=document.getElementById("comment-reply-info");replyInfo&&(replyInfo.style.display="none"),json.wait_time&&json.wait_time>0?startCountdown(json.wait_time):setLoading(!1),restoreRespondPosition();var respondEl=document.getElementById("respond");respondEl&&window.AksrtFixedInput?window.AksrtFixedInput(respondEl,"hide"):respondEl&&respondEl.classList.remove("show");var editField=form.querySelector('[name="edit_comment_ID"]');editField&&editField.remove();return}if(json&&json.code){notyf(json.message||"评论提交失败","danger"),json.wait_time?startCountdown(json.wait_time):setLoading(!1);return}notyf("评论已提交","success"),setLoading(!1),setTimeout(function(){reloadCommentList()},500)}).catch(function(error){console.error("[AKSRT Comment] 提交失败:",error),notyf(error&&error.message||"网络连接失败,请检查网络后重试","danger"),setLoading(!1)}).finally(function(){window.AKSRTCaptcha&&window.AKSRTCaptcha.reset("comment",form),!countdownTimer&&isSubmitting&&setLoading(!1)})}function localInsertComment(html,isReply,parentId,needsModeration){var temp=document.createElement("div");temp.innerHTML=html;var newComment=temp.firstElementChild;if(!newComment){reloadCommentList();return}if(newComment.style.overflow="hidden",newComment.style.maxHeight="0",newComment.style.opacity="0",newComment.style.transition="max-height 0.4s ease, opacity 0.3s ease",isReply&&parentId){var parentComment=document.querySelector("#comment-"+parentId);if(parentComment){var children=parentComment.querySelector(":scope > .children");children||(children=document.createElement("ol"),children.className="children",parentComment.appendChild(children)),children.insertBefore(newComment,children.firstChild)}else prependToCommentList(newComment)}else prependToCommentList(newComment);requestAnimationFrame(function(){newComment.style.maxHeight=newComment.scrollHeight+100+"px",newComment.style.opacity="1",setTimeout(function(){newComment.style.maxHeight="",newComment.style.overflow="",newComment.style.transition=""},500)}),needsModeration?notyf("评论已提交,等待管理员审核","info"):notyf("评论发布成功","success"),newComment.dispatchEvent(new CustomEvent("post_ajax.ed",{bubbles:!0})),typeof window.auto_fun=="function"&&window.auto_fun(),updateCommentCount(1)}function prependToCommentList(el){var list=document.querySelector("#comments .commentlist");if(list){var filter=list.querySelector(".comment-filter");filter&&filter.nextSibling?list.insertBefore(el,filter.nextSibling):list.insertBefore(el,list.firstChild)}}function restoreRespondPosition(){var respond=document.getElementById("respond"),placeholder=document.getElementById("wp-temp-form-div");respond&&placeholder&&placeholder.parentNode&&(placeholder.parentNode.insertBefore(respond,placeholder),placeholder.remove())}function handleSubmit(e){if(isSubmitting||countdownTimer)return e.preventDefault(),e.stopImmediatePropagation(),!1;e.preventDefault(),e.stopImmediatePropagation();var captcha=window.AKSRTCaptcha;return setLoading(!0),(captcha?captcha.run("comment",form):Promise.resolve({})).then(function(captchaPayload){if(captchaPayload===null){notyf("人机验证未通过,请重试","warning"),setLoading(!1);return}performSubmit(captchaPayload)}).catch(function(){notyf("人机验证未通过,请重试","warning"),setLoading(!1),captcha&&captcha.reset("comment",form)}),!1}form.addEventListener("submit",handleSubmit,!0)}function getCommentsRestBase(){var root=window.aksrtData&&aksrtData.siteUrl?String(aksrtData.siteUrl).replace(/\/$/,""):"";return root+"/wp-json/aksrt/v1"}function getCurrentCommentPostId(){var input=document.querySelector('input[name="comment_post_ID"]');if(input&&input.value)return parseInt(input.value,10)||0;var comments=document.getElementById("comments");return comments&&comments.dataset.postId&&parseInt(comments.dataset.postId,10)||0}function getCurrentCommentOrder(){var active=document.querySelector("#comments .comment-order-box li.active .comment-orderby");if(active&&active.dataset&&active.dataset.order)return active.dataset.order;var url=new URL(window.location.href);return url.searchParams.get("aksrt_comment_order")||"newest"}function getCurrentAuthorOnly(){var btn=document.querySelector("#comments .btn-only-author");return!!(btn&&btn.classList.contains("active")&&btn.dataset.authorOnly==="0")}var COMMENT_URL_PARAMS=["cpage","aksrt_comment_order","aksrt_author_only"],commentUrlStateCleaned=!1;function stripCommentUrlParams(){if(!(commentUrlStateCleaned||!window.history||typeof window.history.replaceState!="function")){commentUrlStateCleaned=!0;var url=new URL(window.location.href),changed=!1;COMMENT_URL_PARAMS.forEach(function(key){url.searchParams.has(key)&&(url.searchParams.delete(key),changed=!0)}),changed&&window.history.replaceState(null,"",url.toString())}}function getMaxCommentPages(){var pagenav=document.querySelector("#comments .pagenav[data-max-pages]");if(pagenav){var max=parseInt(pagenav.dataset.maxPages,10);if(max>0)return max}var jumpInput=document.querySelector("#comments .jump-input[max]");if(jumpInput){var maxAttr=parseInt(jumpInput.getAttribute("max"),10);if(maxAttr>0)return maxAttr}return 1}function parseCommentPageFromHref(href){if(!href||href==="#"||href.indexOf("javascript:")===0)return 0;try{var url=new URL(href,window.location.href),cpage=parseInt(url.searchParams.get("cpage"),10);if(cpage>0)return cpage;var match=url.pathname.match(/\/comment-page-([0-9]{1,})\/?$/);return match?parseInt(match[1],10):0}catch{return 0}}function scrollCommentsIntoView(){var commentsArea=document.getElementById("comments");if(!(!commentsArea||typeof commentsArea.scrollIntoView!="function")){var rect=commentsArea.getBoundingClientRect();rect.top>=0&&rect.top "+emptyText+" 请完成验证后继续操作 ]*>([^<]+)<\/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){countdownTimer&&clearInterval(countdownTimer),submitBtn.classList.add("countdown-active"),submitBtn.disabled=!0;var remaining=seconds;countdownTimer=setInterval(function(){setSubmitBtnContent(' 请等待 '+remaining+"s","请等待 "+remaining+"s"),--remaining<=0&&(clearInterval(countdownTimer),countdownTimer=null,submitBtn.classList.remove("countdown-active","is-loading"),submitBtn.disabled=!1,setSubmitBtnContent(originalBtnHTML,originalBtnHTML),isSubmitting=!1)},1e3)}function updateCommentCount(delta){var countEl=document.querySelector("#comments .title-theme small");if(countEl){var text=countEl.textContent||"",match=text.match(/(\d+)/);if(match){var nextCount=Math.max(0,parseInt(match[1],10)+delta);countEl.textContent=text.replace(match[1],String(nextCount))}}}function handleResponse(responseText,statusCode){try{if((statusCode===200||statusCode===201)&&(responseText.includes("comment-submitted")||responseText.indexOf('id="comment-')!==-1||responseText.indexOf("awaiting-moderation")!==-1)){responseText.indexOf("审核")!==-1||responseText.indexOf("moderation")!==-1||responseText.includes("awaiting-moderation")?notyf("评论已提交,等待管理员审核","info"):notyf("评论发布成功","success");var textarea=form.querySelector("#comment");textarea&&(textarea.value="");var replyInfo=document.getElementById("comment-reply-info");return replyInfo&&(replyInfo.style.display="none"),setTimeout(function(){reloadCommentList()},500),setLoading(!1),!0}if(statusCode===429){var errorMsg=extractErrorMessage(responseText),waitSeconds=extractWaitTime(errorMsg);return notyf(errorMsg,"warning"),waitSeconds>0?startCountdown(waitSeconds):setLoading(!1),!1}if(statusCode===403){var forbiddenMsg=extractErrorMessage(responseText);return notyf(forbiddenMsg,"danger"),setLoading(!1),!1}var errorMatch=responseText.match(/ ]*>([^<]*(?:错误|失败|error|Error)[^<]*)<\/p>/i);if(errorMatch)return notyf(errorMatch[1].trim(),"danger"),setLoading(!1),!1;notyf("评论已提交","success");var textarea2=form.querySelector("#comment");return textarea2&&(textarea2.value=""),setTimeout(function(){reloadCommentList()},500),setLoading(!1),!0}catch(e){return console.error("[AKSRT Comment] 解析响应失败:",e),notyf("响应解析异常,请重试","danger"),setLoading(!1),!1}}function performSubmit(captchaPayload){setLoading(!0);var formData=collectFormData(),restRoot=window.aksrtData&&aksrtData.siteUrl?String(aksrtData.siteUrl).replace(/\/$/,""):"",editId=form.querySelector('[name="edit_comment_ID"]'),isEdit=editId&&parseInt(editId.value,10)>0,restBase=(restRoot||"")+"/wp-json/aksrt/v1/comment/"+(isEdit?"edit":"submit"),restBody={};formData.forEach(function(v,k){restBody[k]=v}),Object.assign(restBody,captchaPayload||{}),isEdit&&(restBody.comment_id=parseInt(editId.value,10),restBody.content=restBody.comment||restBody.content||""),fetch(restBase,{method:"POST",headers:{"Content-Type":"application/json","X-WP-Nonce":window.aksrtData&&aksrtData.restNonce||""},credentials:"same-origin",body:JSON.stringify(restBody)}).then(function(r){return r.json()}).then(function(json){if(isEdit&&json&&json.success){var cid=restBody.comment_id,contentEl=document.querySelector("#comment-content-"+cid+', [data-comment-id="'+cid+'"] .comment-content'),rendered=json.data&&json.data.content||json.content||"";contentEl&&rendered&&(contentEl.innerHTML=rendered);var textarea=form.querySelector("#comment");textarea&&(textarea.value=""),editId&&editId.remove(),restoreRespondPosition(),setLoading(!1),notyf(json.message||"评论已更新","success");var respondEl=document.getElementById("respond");respondEl&&window.AksrtFixedInput&&window.AksrtFixedInput(respondEl,"hide");return}if(json&&json.success&&json.html){localInsertComment(json.html,json.is_reply,json.parent_id,json.needs_moderation);var textarea=form.querySelector("#comment");textarea&&(textarea.value="");var replyInfo=document.getElementById("comment-reply-info");replyInfo&&(replyInfo.style.display="none"),json.wait_time&&json.wait_time>0?startCountdown(json.wait_time):setLoading(!1),restoreRespondPosition();var respondEl=document.getElementById("respond");respondEl&&window.AksrtFixedInput?window.AksrtFixedInput(respondEl,"hide"):respondEl&&respondEl.classList.remove("show");var editField=form.querySelector('[name="edit_comment_ID"]');editField&&editField.remove();return}if(json&&json.code){notyf(json.message||"评论提交失败","danger"),json.wait_time?startCountdown(json.wait_time):setLoading(!1);return}notyf("评论已提交","success"),setLoading(!1),setTimeout(function(){reloadCommentList()},500)}).catch(function(error){console.error("[AKSRT Comment] 提交失败:",error),notyf(error&&error.message||"网络连接失败,请检查网络后重试","danger"),setLoading(!1)}).finally(function(){window.AKSRTCaptcha&&window.AKSRTCaptcha.reset("comment",form),!countdownTimer&&isSubmitting&&setLoading(!1)})}function localInsertComment(html,isReply,parentId,needsModeration){var temp=document.createElement("div");temp.innerHTML=html;var newComment=temp.firstElementChild;if(!newComment){reloadCommentList();return}if(newComment.style.overflow="hidden",newComment.style.maxHeight="0",newComment.style.opacity="0",newComment.style.transition="max-height 0.4s ease, opacity 0.3s ease",isReply&&parentId){var parentComment=document.querySelector("#comment-"+parentId);if(parentComment){var children=parentComment.querySelector(":scope > .children");children||(children=document.createElement("ol"),children.className="children",parentComment.appendChild(children)),children.insertBefore(newComment,children.firstChild)}else prependToCommentList(newComment)}else prependToCommentList(newComment);requestAnimationFrame(function(){newComment.style.maxHeight=newComment.scrollHeight+100+"px",newComment.style.opacity="1",setTimeout(function(){newComment.style.maxHeight="",newComment.style.overflow="",newComment.style.transition=""},500)}),needsModeration?notyf("评论已提交,等待管理员审核","info"):notyf("评论发布成功","success"),newComment.dispatchEvent(new CustomEvent("post_ajax.ed",{bubbles:!0})),typeof window.auto_fun=="function"&&window.auto_fun(),updateCommentCount(1)}function prependToCommentList(el){var list=document.querySelector("#comments .commentlist");if(list){var filter=list.querySelector(".comment-filter");filter&&filter.nextSibling?list.insertBefore(el,filter.nextSibling):list.insertBefore(el,list.firstChild)}}function restoreRespondPosition(){var respond=document.getElementById("respond"),placeholder=document.getElementById("wp-temp-form-div");respond&&placeholder&&placeholder.parentNode&&(placeholder.parentNode.insertBefore(respond,placeholder),placeholder.remove())}function handleSubmit(e){if(isSubmitting||countdownTimer)return e.preventDefault(),e.stopImmediatePropagation(),!1;e.preventDefault(),e.stopImmediatePropagation();var captcha=window.AKSRTCaptcha;return setLoading(!0),(captcha?captcha.run("comment",form):Promise.resolve({})).then(function(captchaPayload){if(captchaPayload===null){notyf("人机验证未通过,请重试","warning"),setLoading(!1);return}performSubmit(captchaPayload)}).catch(function(){notyf("人机验证未通过,请重试","warning"),setLoading(!1),captcha&&captcha.reset("comment",form)}),!1}form.addEventListener("submit",handleSubmit,!0)}function getCommentsRestBase(){var root=window.aksrtData&&aksrtData.siteUrl?String(aksrtData.siteUrl).replace(/\/$/,""):"";return root+"/wp-json/aksrt/v1"}function getCurrentCommentPostId(){var input=document.querySelector('input[name="comment_post_ID"]');if(input&&input.value)return parseInt(input.value,10)||0;var comments=document.getElementById("comments");return comments&&comments.dataset.postId&&parseInt(comments.dataset.postId,10)||0}function getCurrentCommentOrder(){var active=document.querySelector("#comments .comment-order-box li.active .comment-orderby");if(active&&active.dataset&&active.dataset.order)return active.dataset.order;var url=new URL(window.location.href);return url.searchParams.get("aksrt_comment_order")||"newest"}function getCurrentAuthorOnly(){var btn=document.querySelector("#comments .btn-only-author");return!!(btn&&btn.classList.contains("active")&&btn.dataset.authorOnly==="0")}var COMMENT_URL_PARAMS=["cpage","aksrt_comment_order","aksrt_author_only"],commentUrlStateCleaned=!1;function stripCommentUrlParams(){if(!(commentUrlStateCleaned||!window.history||typeof window.history.replaceState!="function")){commentUrlStateCleaned=!0;var url=new URL(window.location.href),changed=!1;COMMENT_URL_PARAMS.forEach(function(key){url.searchParams.has(key)&&(url.searchParams.delete(key),changed=!0)}),changed&&window.history.replaceState(null,"",url.toString())}}function getMaxCommentPages(){var pagenav=document.querySelector("#comments .pagenav[data-max-pages]");if(pagenav){var max=parseInt(pagenav.dataset.maxPages,10);if(max>0)return max}var jumpInput=document.querySelector("#comments .jump-input[max]");if(jumpInput){var maxAttr=parseInt(jumpInput.getAttribute("max"),10);if(maxAttr>0)return maxAttr}return 1}function parseCommentPageFromHref(href){if(!href||href==="#"||href.indexOf("javascript:")===0)return 0;try{var url=new URL(href,window.location.href),cpage=parseInt(url.searchParams.get("cpage"),10);if(cpage>0)return cpage;var match=url.pathname.match(/\/comment-page-([0-9]{1,})\/?$/);return match?parseInt(match[1],10):0}catch{return 0}}function scrollCommentsIntoView(){var commentsArea=document.getElementById("comments");if(!(!commentsArea||typeof commentsArea.scrollIntoView!="function")){var rect=commentsArea.getBoundingClientRect();rect.top>=0&&rect.top "+emptyText+" 请完成验证后继续操作'+escapeHtml(options.title)+'