diff --git a/assets/js/credits.js b/assets/js/credits.js
index 16688bfc..7978ccb9 100644
--- a/assets/js/credits.js
+++ b/assets/js/credits.js
@@ -528,7 +528,18 @@
var item = document.createElement('button');
item.type = 'button';
item.className = 'uc-transfer-user';
- item.innerHTML = '' + (u.display_name || u.user_login) + '@' + (u.user_login || '') + '';
+ var avatar = document.createElement('img');
+ avatar.className = 'uc-transfer-user__avatar';
+ avatar.alt = '';
+ avatar.src = String(u.avatar || '');
+ item.appendChild(avatar);
+ var displayName = document.createElement('span');
+ displayName.textContent = String(u.display_name || u.user_login || '');
+ item.appendChild(displayName);
+ var login = document.createElement('span');
+ login.className = 'muted-2-color em09';
+ login.textContent = '@' + String(u.user_login || '');
+ item.appendChild(login);
item.addEventListener('click', function () {
if (recipientInput) recipientInput.value = String(u.id);
if (selected) selected.textContent = '已选择:' + (u.display_name || u.user_login);
@@ -737,31 +748,58 @@
}
function initAssetTabs() {
- var nav = document.querySelectorAll('[data-aksrt-asset-tab]');
- if (!nav.length) return;
- nav.forEach(function (link) {
- if (link.dataset.aksrtAssetTabBound === 'true') return;
- link.dataset.aksrtAssetTabBound = 'true';
- link.addEventListener('click', function (e) {
- e.preventDefault();
- var key = link.getAttribute('data-aksrt-asset-tab');
- document.querySelectorAll('.uc-asset-tabs__nav [data-aksrt-asset-tab]').forEach(function (a) {
- var li = a.closest('li');
- if (!li) return;
- var aKey = a.getAttribute('data-aksrt-asset-tab');
- var on = aKey === key || (key === 'points_date' && aKey === 'points_free');
- li.classList.toggle('active', on);
- });
- var tabs = document.querySelector('.uc-asset-tabs');
- if (tabs && typeof tabs.scrollIntoView === 'function') {
- tabs.scrollIntoView({ behavior: 'smooth', block: 'start' });
- }
- document.querySelectorAll('[data-aksrt-asset-pane]').forEach(function (pane) {
- var on = pane.getAttribute('data-aksrt-asset-pane') === key;
- pane.classList.toggle('is-active', on);
- pane.hidden = !on;
- });
+ if (document.documentElement.dataset.aksrtAssetTabsBound === 'true') return;
+ document.documentElement.dataset.aksrtAssetTabsBound = 'true';
+
+ function select(key) {
+ document.querySelectorAll('.uc-asset-tabs__nav [data-aksrt-asset-tab]').forEach(function (link) {
+ var li = link.closest('li');
+ if (!li) return;
+ var linkKey = link.getAttribute('data-aksrt-asset-tab');
+ li.classList.toggle('active', linkKey === key || (key === 'points_date' && linkKey === 'points_free'));
});
+ document.querySelectorAll('[data-aksrt-asset-pane]').forEach(function (pane) {
+ var active = pane.getAttribute('data-aksrt-asset-pane') === key;
+ pane.classList.toggle('is-active', active);
+ pane.hidden = !active;
+ });
+ }
+
+ function loadPage(key, page) {
+ var panel = document.querySelector('#panel-credits');
+ var rest = (window.aksrtData && (window.aksrtData.restUrl || window.aksrtData.apiUrl)) || '';
+ if (!panel || !rest) return;
+ panel.classList.add('is-loading');
+ var url = rest.replace(/\/$/, '') + '/user-center/panel/credits?asset=' + encodeURIComponent(key) + '&page=' + encodeURIComponent(page);
+ fetch(url, {
+ credentials: 'same-origin',
+ headers: { 'X-WP-Nonce': (window.aksrtData && (window.aksrtData.restNonce || window.aksrtData.nonce)) || '' }
+ }).then(function (response) {
+ return response.json().then(function (payload) {
+ if (!response.ok || !payload || !payload.success || !payload.data || typeof payload.data.html !== 'string') throw new Error('asset-page-load-failed');
+ panel.innerHTML = payload.data.html;
+ if (window.jQuery) jQuery(document).trigger('post_ajax.ed', [panel]);
+ if (typeof window.auto_fun === 'function') window.auto_fun();
+ select(key);
+ });
+ }).catch(function () {
+ notyf('记录加载失败,请重试', 'danger');
+ }).finally(function () {
+ panel.classList.remove('is-loading');
+ });
+ }
+
+ document.addEventListener('click', function (e) {
+ var pageButton = e.target.closest('[data-aksrt-asset-page]');
+ if (pageButton) {
+ e.preventDefault();
+ loadPage(pageButton.getAttribute('data-aksrt-asset-key') || 'points', parseInt(pageButton.getAttribute('data-aksrt-asset-page') || '1', 10) || 1);
+ return;
+ }
+ var link = e.target.closest('[data-aksrt-asset-tab]');
+ if (!link) return;
+ e.preventDefault();
+ select(link.getAttribute('data-aksrt-asset-tab'));
});
}
diff --git a/assets/js/homepage-fixed.js b/assets/js/homepage-fixed.js
index 4e0f8788..78c62e33 100644
--- a/assets/js/homepage-fixed.js
+++ b/assets/js/homepage-fixed.js
@@ -11,7 +11,6 @@
(function () {
'use strict';
- var SORT_QUERY_KEY = 'home_sort';
var DEFAULT_SORT = 'modified';
var REST_PATH = '/wp-json/aksrt/v1/homepage/tab-posts';
@@ -19,10 +18,6 @@
* Utilities
* ============================================================ */
- function getViewMode() {
- return getDefaultView();
- }
-
function getRenderedPostCount(scope) {
if (!scope) return 0;
return scope.querySelectorAll('.posts-item, .posts-mini').length;
@@ -42,7 +37,7 @@
function getDefaultSort() {
var configured = window.aksrtData && aksrtData.homepageDefaultSort;
- var allowed = ['modified', 'date', 'downloads', 'views', 'likes', 'comments'];
+ var allowed = ['modified', 'date', 'views', 'like', 'comment_count', 'favorite', 'rand'];
return allowed.indexOf(configured) !== -1 ? configured : DEFAULT_SORT;
}
@@ -51,12 +46,6 @@
return panel && panel.getAttribute('data-view') === 'card' ? 'card' : 'list';
}
- function isSortAjaxEnabled(sortbar) {
- var attr = sortbar && sortbar.getAttribute('data-sort-ajax');
- if (attr === 'false') return false;
- return !(window.aksrtData && aksrtData.homepageSortAjax === false);
- }
-
function isStickyTabsEnabled() {
return !(window.aksrtData && aksrtData.homepageStickyTabs === false);
}
@@ -66,14 +55,11 @@
return baseUrl.replace(/\/?$/, '');
}
- function getSortFromUrl() {
- return new URLSearchParams(window.location.search).get(SORT_QUERY_KEY) || getDefaultSort();
+ function getCurrentSort(stream) {
+ var activeLink = stream ? stream.querySelector('.aksrt-homepage__sortbar-link.is-active, .aksrt-homepage__sortbar-dropdown-item.is-active') : null;
+ return (activeLink && activeLink.getAttribute('data-sort')) || getDefaultSort();
}
- function getCurrentSort(stream) {
- var activeLink = stream ? stream.querySelector('.aksrt-homepage__sortbar-link.is-active') : null;
- return (activeLink && activeLink.getAttribute('data-sort')) || getSortFromUrl();
- }
function setActiveSortLink(sortbar, sort) {
var links = sortbar.querySelectorAll('.aksrt-homepage__sortbar-link, .aksrt-homepage__sortbar-dropdown-item');
@@ -88,20 +74,6 @@
}
}
- function normalizeHomepageUrl(url) {
- url.searchParams.delete('paged');
- url.searchParams.delete('page');
- url.pathname = url.pathname.replace(/\/page\/\d+\/?$/, '/');
- return url;
- }
-
- function replaceUrlSort(sort) {
- if (!window.history || !window.history.replaceState) return;
- var url = normalizeHomepageUrl(new URL(window.location.href));
- url.searchParams.set(SORT_QUERY_KEY, sort);
- window.history.replaceState({}, '', url.toString());
- }
-
function getStreamViewMode(stream) {
var panel = getActivePanel(stream);
return panel && panel.getAttribute('data-view') === 'card' ? 'card' : 'list';
@@ -124,12 +96,6 @@
return panel.getAttribute('data-tab-orderby') || '';
}
- function getPanelSource(panel) {
- var target = panel ? panel.getAttribute('data-home-tab-panel') : '';
- if (target === 'latest') return 'home';
- return target ? 'home' : 'widget';
- }
-
function buildRestUrl(options) {
options = options || {};
return getRestBaseUrl() + REST_PATH +
@@ -137,9 +103,7 @@
'&page=' + encodeURIComponent(options.page || 1) +
'&per_page=' + encodeURIComponent(options.perPage || 10) +
'&sort=' + encodeURIComponent(options.sort || getDefaultSort()) +
- '&page_url=' + encodeURIComponent(options.pageUrl || window.location.href) +
'&panel=' + encodeURIComponent(options.panel || 'latest') +
- '&source=' + encodeURIComponent(options.source || 'home') +
'&tab_orderby=' + encodeURIComponent(options.tabOrderby || '');
}
@@ -149,7 +113,7 @@
/**
* Dispatch post_ajax.before — fired before AJAX request is sent.
- * Detail: { termId, page, sort, viewMode, panel, source, url }
+ * Detail: { termId, page, sort, viewMode, panel, url }
*/
function dispatchBeforeEvent(container, detail) {
try {
@@ -162,7 +126,7 @@
/**
* Dispatch post_ajax.ed — fired after AJAX response is injected.
- * Detail: { termId, page, sort, viewMode, panel, source, total, hasMore }
+ * Detail: { termId, page, sort, viewMode, panel, total, hasMore }
*/
function dispatchAfterEvent(container, detail) {
try {
@@ -245,18 +209,16 @@
button.addEventListener('click', function () {
button.disabled = true;
button.textContent = (window.aksrtData && aksrtData.ajaxLoading) || '正在加载...';
- requestHomepagePanel(panel, {
- termId: options.termId,
- page: options.page + 1,
- perPage: options.perPage,
- sort: options.sort,
- viewMode: options.viewMode,
- pageUrl: options.pageUrl,
- panel: options.panel,
- source: options.source,
- tabOrderby: options.tabOrderby,
- append: true
- });
+ requestHomepagePanel(panel, {
+ termId: options.termId,
+ page: options.page + 1,
+ perPage: options.perPage,
+ sort: options.sort,
+ viewMode: options.viewMode,
+ panel: options.panel,
+ tabOrderby: options.tabOrderby,
+ append: true
+ });
});
footer.appendChild(button);
panel.appendChild(footer);
@@ -293,33 +255,30 @@
* 4. aksrt:posts:rendered (after lazyload rebind)
*/
function requestHomepagePanel(panel, requestOptions) {
- var options = {
- termId: requestOptions.termId || 0,
- page: requestOptions.page || 1,
- perPage: requestOptions.perPage || getHomepagePerPage(panel),
- sort: requestOptions.sort || getDefaultSort(),
- viewMode: requestOptions.viewMode || getDefaultView(),
- pageUrl: requestOptions.pageUrl || window.location.href,
- panel: requestOptions.panel || panel.getAttribute('data-home-tab-panel') || 'latest',
- source: requestOptions.source || getPanelSource(panel),
- tabOrderby: requestOptions.tabOrderby || getPanelTabOrderby(panel) || '',
- append: requestOptions.append === true
- };
+ var options = {
+ termId: requestOptions.termId || 0,
+ page: requestOptions.page || 1,
+ perPage: requestOptions.perPage || getHomepagePerPage(panel),
+ sort: requestOptions.sort || getDefaultSort(),
+ viewMode: requestOptions.viewMode || getDefaultView(),
+ panel: requestOptions.panel || panel.getAttribute('data-home-tab-panel') || 'latest',
+ tabOrderby: requestOptions.tabOrderby || getPanelTabOrderby(panel) || '',
+ append: requestOptions.append === true
+ };
var restUrl = buildRestUrl(options);
var retryCount = 0;
var maxRetries = 1;
// 1. Pre-request event
- dispatchBeforeEvent(panel, {
- termId: options.termId,
- page: options.page,
- sort: options.sort,
- viewMode: options.viewMode,
- panel: options.panel,
- source: options.source,
- url: restUrl
- });
+ dispatchBeforeEvent(panel, {
+ termId: options.termId,
+ page: options.page,
+ sort: options.sort,
+ viewMode: options.viewMode,
+ panel: options.panel,
+ url: restUrl
+ });
// Full refreshes replace the panel; append requests keep existing cards.
if (!options.append) {
@@ -365,11 +324,10 @@
dispatchAfterEvent(panel, {
termId: options.termId,
page: options.page,
- sort: options.sort,
- viewMode: options.viewMode,
- panel: options.panel,
- source: options.source,
- total: data.total || 0,
+ sort: options.sort,
+ viewMode: options.viewMode,
+ panel: options.panel,
+ total: data.total || 0,
hasMore: !!data.has_more
});
@@ -393,7 +351,6 @@
sort: options.sort,
viewMode: options.viewMode,
panel: options.panel,
- source: options.source,
total: 0,
hasMore: false
});
@@ -477,9 +434,8 @@
perPage: getHomepagePerPage(panel),
sort: currentSort,
viewMode: viewMode,
- panel: target,
- source: 'home',
- tabOrderby: tabOrderby
+ panel: target,
+ tabOrderby: tabOrderby
});
}
}
@@ -600,7 +556,7 @@
function initSortbar() {
document.querySelectorAll('.aksrt-homepage__stream').forEach(function (stream) {
var sortbar = stream.querySelector('.aksrt-homepage__sortbar');
- if (!sortbar || !isSortAjaxEnabled(sortbar)) return;
+ if (!sortbar) return;
sortbar.addEventListener('click', function (event) {
var link = event.target.closest('.aksrt-homepage__sortbar-link, .aksrt-homepage__sortbar-dropdown-item');
@@ -612,17 +568,15 @@
event.preventDefault();
- setActiveSortLink(sortbar, sort);
- replaceUrlSort(sort);
+ setActiveSortLink(sortbar, sort);
- requestHomepagePanel(activePanel, {
+ requestHomepagePanel(activePanel, {
termId: termId,
page: 1,
perPage: getHomepagePerPage(activePanel),
sort: sort,
viewMode: getStreamViewMode(stream),
panel: activePanel.getAttribute('data-home-tab-panel') || 'latest',
- source: 'home'
});
});
});
diff --git a/assets/js/order-center.js b/assets/js/order-center.js
index 07392c13..e74b0213 100644
--- a/assets/js/order-center.js
+++ b/assets/js/order-center.js
@@ -81,7 +81,7 @@
html += '' + formatMoney(order) + "";
html += '
]*>([^<]+)<\/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+"
",wrap.appendChild(noResults)}function fetchPosts(pushState){showLoading(),fetch(buildUrl(),{method:"GET",headers:{Accept:"application/json"},credentials:"same-origin"}).then(function(r){if(!r.ok)throw new Error("HTTP "+r.status);return r.json()}).then(function(data){if(hideLoading(),data.html!==void 0){var children=Array.from(wrap.children);if(children.forEach(function(child){child!==loading&&wrap.removeChild(child)}),data.html){var temp=document.createElement("div");for(temp.innerHTML=data.html;temp.firstChild;)wrap.appendChild(temp.firstChild)}else rebuildEmptyState();wrap.dispatchEvent(new CustomEvent("post_ajax.ed",{bubbles:!0})),typeof window.auto_fun=="function"&&window.auto_fun()}if(pushState!==!1){var url=new URL(window.location.href);url.searchParams.delete("orderby"),url.searchParams.delete("order"),url.searchParams.delete("paged"),url.searchParams.delete("aksrt_filter_cat"),url.searchParams.delete("aksrt_filter_tag"),state.filter_cat&&url.searchParams.set("aksrt_filter_cat",state.filter_cat),state.filter_tag&&url.searchParams.set("aksrt_filter_tag",state.filter_tag),state.sort&&url.searchParams.set("orderby",state.sort),state.page>1&&url.searchParams.set("paged",String(state.page)),history.pushState({aksrtArchive:!0,state:Object.assign({},state)},"",url.toString())}}).catch(function(){hideLoading()})}bar.addEventListener("click",function(e){var chip=e.target.closest("[data-filter-cat], [data-filter-tag], [data-filter-sort]");if(chip){e.preventDefault();var changed=!1;if(chip.dataset.filterCat!==void 0){var newCat=chip.dataset.filterCat;newCat!==state.filter_cat&&(state.filter_cat=newCat,changed=!0)}if(chip.dataset.filterTag!==void 0){var newTag=chip.dataset.filterTag;newTag!==state.filter_tag&&(state.filter_tag=newTag,changed=!0)}if(chip.dataset.filterSort!==void 0){var newSort=chip.dataset.filterSort||"date";newSort!==state.sort&&(state.sort=newSort,changed=!0)}changed&&(state.page=1,updateActiveChips(),fetchPosts(!0))}}),wrap.addEventListener("click",function(e){var pageLink=e.target.closest(".pagination a, .nav-links a, a.page-numbers");if(!(!pageLink||!wrap.contains(pageLink))){var href=pageLink.getAttribute("href");if(href){var match=href.match(/[?&]paged=(\d+)/);match&&(e.preventDefault(),state.page=parseInt(match[1],10)||1,fetchPosts(!0))}}}),window.addEventListener("popstate",function(e){e.state&&e.state.aksrtArchive&&(state=Object.assign(state,e.state.state),updateActiveChips(),fetchPosts(!1))})}function init(root){initArchiveFilter(root)}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",function(){init()}):init(),window.jQuery&&window.jQuery(document).on("auto_fun",function(){init()})})(),(function(){"use strict";function initFooterTabbar(){var tabbar=document.getElementById("footer-tabbar");if(!tabbar||tabbar.dataset.aksrtTabbarInit==="1")return;tabbar.dataset.aksrtTabbarInit="1";var addBackdrop=document.getElementById("tabbar-add-backdrop"),ticking=!1,scrollThreshold=100,isHidden=!1;function handleScrollDownHide(){var body=document.body,scrollTop=window.pageYOffset||document.documentElement.scrollTop;scrollTop>scrollThreshold?body.classList.contains("scroll-down")&&!isHidden?(tabbar.classList.add("is-hidden"),isHidden=!0):body.classList.contains("scroll-up")&&isHidden&&(tabbar.classList.remove("is-hidden"),isHidden=!1):(tabbar.classList.remove("is-hidden"),isHidden=!1)}function handleOntopWrap(){var ontopWraps=tabbar.querySelectorAll(".tabbar-ontop-wrap"),scrollTop=window.pageYOffset||document.documentElement.scrollTop;ontopWraps.forEach(function(wrap){scrollTop>scrollThreshold?wrap.classList.add("is-scrolled"):wrap.classList.remove("is-scrolled")})}function onScroll(){ticking||(requestAnimationFrame(function(){tabbar.classList.contains("scroll-down-hide")&&handleScrollDownHide(),handleOntopWrap(),ticking=!1}),ticking=!0)}window.addEventListener("scroll",onScroll,{passive:!0});function closeAddPanels(){document.querySelectorAll(".tabbar-add-panel").forEach(function(panel){panel.setAttribute("hidden","")}),addBackdrop&&addBackdrop.setAttribute("hidden",""),document.body.classList.remove("tabbar-add-open")}function openAddPanel(panelId){closeAddPanels();var panel=document.getElementById(panelId);panel&&(panel.removeAttribute("hidden"),addBackdrop&&addBackdrop.removeAttribute("hidden"),document.body.classList.add("tabbar-add-open"))}addBackdrop&&addBackdrop.addEventListener("click",closeAddPanels),document.addEventListener("keydown",function(e){e.key==="Escape"&&closeAddPanels()});var homeClickTimer=null;tabbar.addEventListener("click",function(e){var addBtn=e.target.closest('.tabbar-item[data-type="add"]');if(addBtn){e.preventDefault(),openAddPanel(addBtn.getAttribute("data-panel-id"));return}var searchBtn=e.target.closest('.tabbar-item[data-type="search"]');if(searchBtn){e.preventDefault(),typeof window.__aksrtOpenSearchPanel=="function"&&window.__aksrtOpenSearchPanel();return}var ontopBtn=e.target.closest(".tabbar-ontop-btn");if(ontopBtn){e.preventDefault(),window.scrollTo({top:0,behavior:"smooth"});return}var homeBtn=e.target.closest('.tabbar-item[data-type="home"]');if(homeBtn&&tabbar.classList.contains("has-animation")){if(homeClickTimer){clearTimeout(homeClickTimer),homeClickTimer=null,window.location.reload();return}homeClickTimer=setTimeout(function(){homeClickTimer=null},350)}}),document.addEventListener("click",function(e){e.target.closest("[data-close-tabbar-add-panel]")&&closeAddPanels()})}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",initFooterTabbar):initFooterTabbar()})(),(function(){"use strict";function renderGradientBackground(container){if(!(!container||container.dataset.aksrtGradientState||typeof window.Grade!="function")){var source=container.querySelector("img");!source||!source.classList.contains("lazyloaded")&&!(source.complete&&source.naturalWidth>0)||(container.dataset.aksrtGradientState="loading",window.Grade(container,null,function(result){var gradientData=result&&result[0],colors=gradientData&&gradientData.gradientData;if(!gradientData||!colors||!colors[0]||!colors[1]){delete container.dataset.aksrtGradientState;return}var opacity=container.getAttribute("data-opacity"),colorName=opacity?"rgba":"rgb",alpha=opacity?","+opacity:"",color1=colorName+"("+colors[0].rgba.slice(0,3).join(",")+alpha+") 10%",color2=colorName+"("+colors[1].rgba.slice(0,3).join(",")+alpha+") 80%";gradientData.element.classList.add("gradient-bg-loaded"),gradientData.element.style.backgroundImage="linear-gradient(135deg, "+color1+", "+color2+")",container.dataset.aksrtGradientState="loaded"}))}}function initGradientBackgrounds(root){var scope=root||document;scope.nodeType===1&&scope.matches(".gradient-bg")&&renderGradientBackground(scope),scope.querySelectorAll(".gradient-bg").forEach(renderGradientBackground)}document.addEventListener("lazyloaded",function(event){!(event.target instanceof Element)||!event.target.matches(".gradient-bg img")||renderGradientBackground(event.target.closest(".gradient-bg"))},!0);function initPostThumbMedia(root){var scope=root||document;scope.querySelectorAll("[data-post-thumb-video]").forEach(function(box){if(box.dataset.aksrtThumbVideoBound==="1")return;box.dataset.aksrtThumbVideoBound="1";var video=box.querySelector("video");if(!video)return;function loadVideo(){!video.getAttribute("src")&&video.dataset.src&&(video.setAttribute("src",video.dataset.src),video.load())}function playVideo(){loadVideo();var result=video.play(),postItem=box.closest(".posts-item");postItem&&postItem.classList.add("thumb-dplayer-playing"),result&&typeof result.catch=="function"&&result.catch(function(){})}function pauseVideo(){video.pause();var postItem=box.closest(".posts-item");postItem&&postItem.classList.remove("thumb-dplayer-playing")}var item=box.closest(".item-thumbnail")||box;item.addEventListener("mouseenter",playVideo),item.addEventListener("mouseleave",pauseVideo),item.addEventListener("focusin",playVideo),item.addEventListener("focusout",pauseVideo)})}function init(root){initPostThumbMedia(root),initGradientBackgrounds(root)}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",function(){init()}):init(),window.jQuery&&window.jQuery(document).on("auto_fun",function(){init()})})(),(function(){"use strict";function initSlideCovers(){var covers=document.querySelectorAll(".single-cover--slide");covers.forEach(function(cover){var slides=cover.querySelectorAll(".single-cover__slide"),dots=cover.querySelectorAll(".single-cover__dot");if(slides.length<2)return;var current=0,interval=5e3;function goTo(idx){slides[current].classList.remove("is-active"),dots[current]&&dots[current].classList.remove("is-active"),current=idx,slides[current].classList.add("is-active"),dots[current]&&dots[current].classList.add("is-active")}var timer=setInterval(function(){goTo((current+1)%slides.length)},interval);dots.forEach(function(dot,i){dot.addEventListener("click",function(){clearInterval(timer),goTo(i),timer=setInterval(function(){goTo((current+1)%slides.length)},interval)})})})}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",initSlideCovers):initSlideCovers()})(),(function(){"use strict";function initHiddenContent(){document.addEventListener("click",function(e){var btn=e.target.closest(".aksrt-hidden-content__submit-btn");if(btn){e.preventDefault();var wrapper=btn.closest(".aksrt-hidden-content--locked");if(wrapper){var mode=wrapper.getAttribute("data-aksrt-visibility-mode"),pid=wrapper.getAttribute("data-aksrt-visibility-pid"),input=wrapper.querySelector(".aksrt-hidden-content__password-input"),password=input?input.value.trim():"";if(mode==="password"&&!password){input&&input.focus();return}var formData=new FormData;formData.append("action","aksrt_check_visibility"),formData.append("_nonce",window.aksrtData&&aksrtData.visibilityNonce||""),formData.append("mode",mode),formData.append("pid",pid),password&&formData.append("password",password),btn.disabled=!0,btn.textContent="...",fetch(window.aksrtData&&aksrtData.ajaxUrl||"/wp-admin/admin-ajax.php",{method:"POST",body:formData,credentials:"same-origin"}).then(function(res){return res.json()}).then(function(data){if(data.success)window.location.reload();else{var msg=data.data&&data.data.message?data.data.message:"验证失败";alert(msg),btn.disabled=!1,btn.textContent="验证"}}).catch(function(){alert("网络错误,请重试"),btn.disabled=!1,btn.textContent="验证"})}}}),document.addEventListener("keydown",function(e){if(e.key==="Enter"&&e.target.classList.contains("aksrt-hidden-content__password-input")){e.preventDefault();var wrapper=e.target.closest(".aksrt-hidden-content--locked");if(wrapper){var btn=wrapper.querySelector(".aksrt-hidden-content__submit-btn");btn&&btn.click()}}})}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",initHiddenContent):initHiddenContent()})(),(function(){"use strict";var THEME_KEY="aksrt-theme",THEME_COOKIE_KEY="theme_mode";function normalizeStoredTheme(value){return value==="dark"||value==="dark-theme"?"dark":value==="light"||value==="white-theme"?"light":null}function toCookieTheme(value){return value==="dark"?"dark-theme":"white-theme"}function getCookie(name){for(var parts=document.cookie?document.cookie.split("; "):[],i=0;i请完成验证后继续操作
]*>([^<]+)<\/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+" 请完成验证后继续操作