fix(frontend): keep asset and homepage filters in DOM
This commit is contained in:
1 parent
a0adddce59
commit
7308f055c7
23 files changed
+362
-305
No files matched your search
+63
-25
@@ -528,7 +528,18 @@
|
||||
var item = document.createElement('button');
|
||||
item.type = 'button';
|
||||
item.className = 'uc-transfer-user';
|
||||
item.innerHTML = '<img' + window.aksrtGetLazyImageAttr('lazy_avatar', u.avatar || '', 'uc-transfer-user__avatar', 'sm') + ' alt=""><span>' + (u.display_name || u.user_login) + '</span><span class="muted-2-color em09">@' + (u.user_login || '') + '</span>';
|
||||
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'));
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
+43
-89
@@ -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'
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -81,7 +81,7 @@
|
||||
html += '<strong class="aksrt-order-detail__hero-amount">' + formatMoney(order) + "</strong></div>";
|
||||
html += '<div class="aksrt-order-detail__product">';
|
||||
html += image
|
||||
? '<img' + window.aksrtGetLazyImageAttr('lazy_posts_thumb', image, 'aksrt-order-detail__thumb') + ' alt="">'
|
||||
? '<img src="' + escapeHtml(image) + '" class="aksrt-order-detail__thumb" alt="">'
|
||||
: '<span class="aksrt-order-detail__thumb aksrt-order-detail__thumb--empty"><i class="fa fas fa-book"></i></span>';
|
||||
html += '<div><strong class="aksrt-order-detail__product-title">' + escapeHtml(title) + "</strong>";
|
||||
html += '<span class="aksrt-order-detail__product-meta">' + escapeHtml(order.product_type_label || "") + "</span></div></div>";
|
||||
@@ -179,7 +179,7 @@
|
||||
|
||||
function cardHtml(order) {
|
||||
var image = order.image
|
||||
? '<img' + window.aksrtGetLazyImageAttr('lazy_posts_thumb', order.image, 'aksrt-orders-page__card-img') + ' alt="">'
|
||||
? '<img src="' + escapeHtml(order.image) + '" class="aksrt-orders-page__card-img" alt="">'
|
||||
: '<div class="aksrt-orders-page__card-art" aria-hidden="true"><i class="fa fas fa-book"></i></div>';
|
||||
var countdown = Number(order.time_left || 0) > 0
|
||||
? '<span class="aksrt-orders-page__countdown" data-aksrt-order-countdown="' + Number(order.time_left) + '"></span>'
|
||||
|
||||
@@ -288,7 +288,7 @@
|
||||
items.forEach(function (item) {
|
||||
html += '<a class="aksrt-doc-index-card" href="' + this.escHtml(item.url) + '" data-cat-id="' + (item.cat_id || 0) + '">';
|
||||
if (item.thumbnail) {
|
||||
html += '<img' + window.aksrtGetLazyImageAttr('lazy_other', item.thumbnail, 'aksrt-doc-index-card__thumb') + ' alt="">';
|
||||
html += '<img src="' + this.escHtml(item.thumbnail) + '" class="aksrt-doc-index-card__thumb" alt="">';
|
||||
}
|
||||
html += '<div class="aksrt-doc-index-card__body">';
|
||||
html += '<h3 class="aksrt-doc-index-card__title">' + this.escHtml(item.title) + '</h3>';
|
||||
|
||||
@@ -17,10 +17,14 @@
|
||||
return el;
|
||||
}
|
||||
|
||||
function lazyImage(key, src, className, size) {
|
||||
var template = document.createElement("template");
|
||||
template.innerHTML = "<img" + window.aksrtGetLazyImageAttr(key, src, className, size) + ' alt="" decoding="async">';
|
||||
return template.content.firstElementChild;
|
||||
function imageNode(src, className) {
|
||||
if (!src) return null;
|
||||
var image = document.createElement("img");
|
||||
image.className = className || "";
|
||||
image.src = text(src);
|
||||
image.alt = "";
|
||||
image.decoding = "async";
|
||||
return image;
|
||||
}
|
||||
|
||||
function append(parent, child) {
|
||||
@@ -312,7 +316,7 @@
|
||||
var levelInfo = levels[String(level)] || {};
|
||||
var levelHeader = node("div", "aksrt-vip-level-header");
|
||||
if (levelInfo.img_icon) {
|
||||
var levelIcon = lazyImage("lazy_other", text(levelInfo.img_icon), "aksrt-vip-level-icon");
|
||||
var levelIcon = imageNode(text(levelInfo.img_icon), "aksrt-vip-level-icon");
|
||||
append(levelHeader, levelIcon);
|
||||
}
|
||||
append(levelHeader, node("div", "v-name font-bold", group.name || levelInfo.name || "VIP" + level));
|
||||
|
||||
@@ -42,8 +42,10 @@
|
||||
|
||||
/* ==================== Dashboard 导航 ==================== */
|
||||
function initDashboardNavigation() {
|
||||
if (document.documentElement.dataset.aksrtUserCenterNavigationInitialized === 'true') return;
|
||||
var tabContainer = document.querySelector('.uc-mobile-tabs');
|
||||
if (!tabContainer) return;
|
||||
document.documentElement.dataset.aksrtUserCenterNavigationInitialized = 'true';
|
||||
|
||||
var tabs = tabContainer.querySelectorAll('[data-tab]');
|
||||
var sidebarBtns = document.querySelectorAll('.uc-sidebar [data-tab]');
|
||||
@@ -107,6 +109,7 @@
|
||||
if (name === 'revenue') allowedParams = ['reward_tab', 'commission_page', 'user_page'];
|
||||
if (name === 'posts') allowedParams = ['post_status', 'posts_page'];
|
||||
if (name === 'follow') allowedParams = ['follow_list', 'follow_page'];
|
||||
if (name === 'credits') allowedParams = ['asset', 'page'];
|
||||
allowedParams.forEach(function(key) {
|
||||
if (params.get(key)) url += (url.indexOf('?') === -1 ? '?' : '&') + key + '=' + encodeURIComponent(params.get(key));
|
||||
});
|
||||
@@ -166,8 +169,6 @@
|
||||
|
||||
function activate(name, updateHistory, forceLoad, queryParams) {
|
||||
if (!panels[name]) name = defaultTab;
|
||||
// VIP membership may change outside this page, so never reuse stale HTML.
|
||||
if (name === 'vip' && !forceLoad) forceLoad = true;
|
||||
return loadPanel(name, forceLoad, queryParams).then(function() {
|
||||
switchTo(name);
|
||||
if (updateHistory) updateUrl(name);
|
||||
@@ -187,11 +188,11 @@
|
||||
return tabAliases[name] || name;
|
||||
}
|
||||
|
||||
function updateUrl(name, sourceUrl) {
|
||||
if (!window.history.replaceState) return;
|
||||
function updateUrl(name, sourceUrl) {
|
||||
if (!window.history.pushState) return;
|
||||
var pathTab = name === 'credits' ? 'balance' : name;
|
||||
var u = new URL('/user/' + pathTab + '/', window.location.origin);
|
||||
if (sourceUrl && name !== 'revenue' && name !== 'orders') {
|
||||
if (sourceUrl && name !== 'revenue' && name !== 'orders' && name !== 'credits') {
|
||||
var source = new URL(sourceUrl, window.location.href);
|
||||
source.searchParams.forEach(function(value, key) { u.searchParams.set(key, value); });
|
||||
}
|
||||
@@ -249,8 +250,8 @@
|
||||
name = tabAliases[name] || name;
|
||||
if (!name || !panels[name]) return;
|
||||
e.preventDefault();
|
||||
var hasQuery = url.search !== '';
|
||||
activate(name, false, hasQuery, url.searchParams).then(function() { updateUrl(name, url.href); });
|
||||
var hasQuery = url.search !== '' && name !== 'credits';
|
||||
activate(name, false, hasQuery, name === 'credits' ? null : url.searchParams).then(function() { updateUrl(name, name === 'credits' ? '' : url.href); });
|
||||
}, true);
|
||||
var creatorPanel = panels.creator ? panels.creator.panel : null;
|
||||
if (creatorPanel) {
|
||||
@@ -269,11 +270,21 @@
|
||||
});
|
||||
}
|
||||
window.addEventListener('popstate', function() {
|
||||
activate(tabFromUrl(), false, window.location.search !== '', new URLSearchParams(window.location.search));
|
||||
var current = new URL(window.location.href);
|
||||
['wallet_page', 'credits_page', 'asset', 'page'].forEach(function (key) { current.searchParams.delete(key); });
|
||||
if (current.href !== window.location.href && window.history.replaceState) {
|
||||
window.history.replaceState({}, '', current.pathname + current.search + current.hash);
|
||||
}
|
||||
activate(tabFromUrl(), false, false, null);
|
||||
});
|
||||
if (drawerTrigger) drawerTrigger.addEventListener('click', openDrawer);
|
||||
if (drawerOverlay) drawerOverlay.addEventListener('click', closeDrawer);
|
||||
var initialTab = tabFromUrl();
|
||||
if (initialTab === 'credits' && window.history && window.history.replaceState) {
|
||||
var cleanUrl = new URL(window.location.href);
|
||||
['wallet_page', 'credits_page', 'asset', 'page'].forEach(function (key) { cleanUrl.searchParams.delete(key); });
|
||||
window.history.replaceState({}, '', cleanUrl.pathname + cleanUrl.search + cleanUrl.hash);
|
||||
}
|
||||
if (initialTab === 'orders' && window.location.search && window.history.replaceState) {
|
||||
window.history.replaceState({}, '', window.location.pathname + window.location.hash);
|
||||
}
|
||||
|
||||
@@ -2258,21 +2258,6 @@ _win.bd.on('click', '[data-toggle="RefreshModal"]', function (e) {
|
||||
return false;
|
||||
});
|
||||
|
||||
_win.bd.on('click', '.show-order-modal', function (e) {
|
||||
e.preventDefault();
|
||||
var _this = jQuery(this);
|
||||
var order_id = _this.attr('data-order-id');
|
||||
var is_new = _this.attr('new-modal');
|
||||
refresh_modal({
|
||||
class: 'full-sm body-bg',
|
||||
height: 420,
|
||||
mobile_from_bottom: true,
|
||||
touch_close: true,
|
||||
new: is_new,
|
||||
remote: _win.ajax_url + '?action=order_details_modal&order_id=' + order_id,
|
||||
});
|
||||
});
|
||||
|
||||
/**
|
||||
* 刷新模态框
|
||||
* @param {object} _config
|
||||
|
||||
Vendored
+1
-1
@@ -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('<div class="notyn"></div>'),type=type||"success",type==="error"&&(type="danger"),time=time||5e3,time=time<100?time*1e3:time;var idAttribute=id?' id="'+id+'"':"",$notification=jQuery('<div class="noty1"'+idAttribute+'><div class="notyf '+type+'">'+message+"</div></div>"),shouldClose=!id;id&&jQuery("#"+id).length?(jQuery("#"+id).find(".notyf").removeClass().addClass("notyf "+type).html(message),$notification=jQuery("#"+id),shouldClose=!0):jQuery(".notyn").append($notification),shouldClose&&window2.setTimeout(function(){closeNotyf($notification)},time)}jQuery(document2.body).on("click",".noty1",function(){closeNotyf(jQuery(this))}),window2.notyf=notyf2})(jQuery,window,document),(function(window2){"use strict";var allowedKinds={identity:!0,badges:!0,orders:!0,vip:!0},allowedEvents={click:!0,shell:!0,"first-content":!0,ready:!0,"action-start":!0,"action-end":!0,unauthorized:!0,error:!0},sessions=Object.create(null),sequence=0,maxSessions=100;function normalize(value,fallback){var normalized=String(value||fallback||"").toLowerCase().replace(/[^a-z0-9-]/g,"");return normalized||fallback}function now(){return window2.performance&&typeof window2.performance.now=="function"?window2.performance.now():0}function markName(session,event){return"aksrt-modal-"+session.kind+"-"+session.id+"-"+event}function emit(session,event){if(!(!window2.performance||typeof window2.performance.mark!="function")){var name=markName(session,event);if(window2.performance.mark(name),session.marks[event]=name,typeof window2.performance.measure=="function"&&session.marks.click&&event!=="click")try{window2.performance.measure("aksrt-modal-"+session.kind+"-"+session.id+"-click-to-"+event,session.marks.click,name)}catch{}}}function start(kind){var safeKind=normalize(kind,"unknown");allowedKinds[safeKind]||(safeKind="unknown"),sequence+=1;var id=String(sequence),session={id,kind:safeKind,startedAt:now(),marks:Object.create(null)};sessions[id]=session,emit(session,"click");for(var ids=Object.keys(sessions);ids.length>maxSessions;)delete sessions[ids.shift()];return id}function mark(id,event){var session=sessions[String(id||"")],safeEvent=normalize(event,"error");!session||!allowedEvents[safeEvent]||emit(session,safeEvent)}function finish(id){mark(id,"ready")}function fail(id){mark(id,"error")}window2.AksrtModalTelemetry={start,mark,finish,error:fail}})(window),(function(window2){"use strict";function data(){return window2.aksrtData||window2.aksrt||{}}function createIdempotencyKey(){if(window2.crypto&&typeof window2.crypto.randomUUID=="function")return window2.crypto.randomUUID();if(!window2.crypto||typeof window2.crypto.getRandomValues!="function")throw new Error("当前浏览器无法生成安全的操作标识");var bytes=new Uint8Array(16);window2.crypto.getRandomValues(bytes),bytes[6]=bytes[6]&15|64,bytes[8]=bytes[8]&63|128;var hex=Array.prototype.map.call(bytes,function(value){return value.toString(16).padStart(2,"0")}).join("");return hex.slice(0,8)+"-"+hex.slice(8,12)+"-"+hex.slice(12,16)+"-"+hex.slice(16,20)+"-"+hex.slice(20)}function restBase(){var config=data(),raw=config.restUrl||config.apiUrl||config.rest_url||"",siteUrl=config.siteUrl||config.homeUrl||window2.location.origin+"/";return window2.location.protocol==="https:"&&siteUrl.substring(0,5)==="http:"&&(siteUrl="https:"+siteUrl.substring(5)),raw?String(raw).replace(/\/$/,""):String(siteUrl).replace(/\/$/,"")+"/index.php?rest_route=/aksrt/v1"}function appendQuery(url2,query){if(!query)return url2;var parts=[];return typeof query=="string"?parts=query.replace(/^\?/,"").split("&").filter(Boolean):typeof query=="object"&&Object.keys(query).forEach(function(key){query[key]===void 0||query[key]===null||parts.push(encodeURIComponent(key)+"="+encodeURIComponent(String(query[key])))}),parts.length?url2+(url2.indexOf("?")>=0?"&":"?")+parts.join("&"):url2}function url(path,query){path=String(path||"");var inlineQuery="",queryIndex=path.indexOf("?");if(queryIndex>=0&&(inlineQuery=path.slice(queryIndex+1),path=path.slice(0,queryIndex)),/^https?:\/\//i.test(path))return appendQuery(path,query||inlineQuery);path.charAt(0)!=="/"&&(path="/"+path);var base=restBase(),result=(base.indexOf("rest_route=")>=0,base+path);return appendQuery(result,query||inlineQuery)}function headers(options){var config=data(),source=options&&options.headers||{},result={},nonce=config.restNonce||config.nonce||"";return Object.keys(source).forEach(function(key){result[key]=source[key]}),result.Accept||(result.Accept="application/json, text/html;q=0.9, */*;q=0.8"),nonce&&!result["X-WP-Nonce"]&&(result["X-WP-Nonce"]=nonce),options&&options.body!==void 0&&options.body!==null&&!(window2.FormData&&options.body instanceof window2.FormData)&&!result["Content-Type"]&Line truncated
|
||||
(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('<div class="notyn"></div>'),type=type||"success",type==="error"&&(type="danger"),time=time||5e3,time=time<100?time*1e3:time;var idAttribute=id?' id="'+id+'"':"",$notification=jQuery('<div class="noty1"'+idAttribute+'><div class="notyf '+type+'">'+message+"</div></div>"),shouldClose=!id;id&&jQuery("#"+id).length?(jQuery("#"+id).find(".notyf").removeClass().addClass("notyf "+type).html(message),$notification=jQuery("#"+id),shouldClose=!0):jQuery(".notyn").append($notification),shouldClose&&window2.setTimeout(function(){closeNotyf($notification)},time)}jQuery(document2.body).on("click",".noty1",function(){closeNotyf(jQuery(this))}),window2.notyf=notyf2})(jQuery,window,document),(function(window2){"use strict";var allowedKinds={identity:!0,badges:!0,orders:!0,vip:!0},allowedEvents={click:!0,shell:!0,"first-content":!0,ready:!0,"action-start":!0,"action-end":!0,unauthorized:!0,error:!0},sessions=Object.create(null),sequence=0,maxSessions=100;function normalize(value,fallback){var normalized=String(value||fallback||"").toLowerCase().replace(/[^a-z0-9-]/g,"");return normalized||fallback}function now(){return window2.performance&&typeof window2.performance.now=="function"?window2.performance.now():0}function markName(session,event){return"aksrt-modal-"+session.kind+"-"+session.id+"-"+event}function emit(session,event){if(!(!window2.performance||typeof window2.performance.mark!="function")){var name=markName(session,event);if(window2.performance.mark(name),session.marks[event]=name,typeof window2.performance.measure=="function"&&session.marks.click&&event!=="click")try{window2.performance.measure("aksrt-modal-"+session.kind+"-"+session.id+"-click-to-"+event,session.marks.click,name)}catch{}}}function start(kind){var safeKind=normalize(kind,"unknown");allowedKinds[safeKind]||(safeKind="unknown"),sequence+=1;var id=String(sequence),session={id,kind:safeKind,startedAt:now(),marks:Object.create(null)};sessions[id]=session,emit(session,"click");for(var ids=Object.keys(sessions);ids.length>maxSessions;)delete sessions[ids.shift()];return id}function mark(id,event){var session=sessions[String(id||"")],safeEvent=normalize(event,"error");!session||!allowedEvents[safeEvent]||emit(session,safeEvent)}function finish(id){mark(id,"ready")}function fail(id){mark(id,"error")}window2.AksrtModalTelemetry={start,mark,finish,error:fail}})(window),(function(window2){"use strict";function data(){return window2.aksrtData||window2.aksrt||{}}function createIdempotencyKey(){if(window2.crypto&&typeof window2.crypto.randomUUID=="function")return window2.crypto.randomUUID();if(!window2.crypto||typeof window2.crypto.getRandomValues!="function")throw new Error("当前浏览器无法生成安全的操作标识");var bytes=new Uint8Array(16);window2.crypto.getRandomValues(bytes),bytes[6]=bytes[6]&15|64,bytes[8]=bytes[8]&63|128;var hex=Array.prototype.map.call(bytes,function(value){return value.toString(16).padStart(2,"0")}).join("");return hex.slice(0,8)+"-"+hex.slice(8,12)+"-"+hex.slice(12,16)+"-"+hex.slice(16,20)+"-"+hex.slice(20)}function restBase(){var config=data(),raw=config.restUrl||config.apiUrl||config.rest_url||"",siteUrl=config.siteUrl||config.homeUrl||window2.location.origin+"/";return window2.location.protocol==="https:"&&siteUrl.substring(0,5)==="http:"&&(siteUrl="https:"+siteUrl.substring(5)),raw?String(raw).replace(/\/$/,""):String(siteUrl).replace(/\/$/,"")+"/index.php?rest_route=/aksrt/v1"}function appendQuery(url2,query){if(!query)return url2;var parts=[];return typeof query=="string"?parts=query.replace(/^\?/,"").split("&").filter(Boolean):typeof query=="object"&&Object.keys(query).forEach(function(key){query[key]===void 0||query[key]===null||parts.push(encodeURIComponent(key)+"="+encodeURIComponent(String(query[key])))}),parts.length?url2+(url2.indexOf("?")>=0?"&":"?")+parts.join("&"):url2}function url(path,query){path=String(path||"");var inlineQuery="",queryIndex=path.indexOf("?");if(queryIndex>=0&&(inlineQuery=path.slice(queryIndex+1),path=path.slice(0,queryIndex)),/^https?:\/\//i.test(path))return appendQuery(path,query||inlineQuery);path.charAt(0)!=="/"&&(path="/"+path);var base=restBase(),result=(base.indexOf("rest_route=")>=0,base+path);return appendQuery(result,query||inlineQuery)}function headers(options){var config=data(),source=options&&options.headers||{},result={},nonce=config.restNonce||config.nonce||"";return Object.keys(source).forEach(function(key){result[key]=source[key]}),result.Accept||(result.Accept="application/json, text/html;q=0.9, */*;q=0.8"),nonce&&!result["X-WP-Nonce"]&&(result["X-WP-Nonce"]=nonce),options&&options.body!==void 0&&options.body!==null&&!(window2.FormData&&options.body instanceof window2.FormData)&&!result["Content-Type"]&Line truncated
|
||||
Reference in new issue
Block a user