用户中心减层:收敛本人入口与 panel 契约

This commit is contained in:
2026-07-10 20:43:49 +08:00
parent 31c95c3bc6
commit dec33ea15a
33 changed files with 1585 additions and 1488 deletions
+14 -6
View File
@@ -18,6 +18,8 @@
var settingsNonce = cfg.settingsNonce || '';
var userId = cfg.userId || 0;
var i18n = cfg.i18n || {};
var tabAliases = cfg.tabAliases || {};
var tabUrls = cfg.tabUrls || {};
/* ==================== Dashboard 导航 ==================== */
function initDashboardNavigation() {
@@ -54,6 +56,10 @@
function switchTo(name) {
if (!panels[name]) name = defaultTab;
if (panels[name].panel.dataset.panelLoaded === 'false') {
window.location.assign(tabUrls[name] || panels[name].panel.dataset.tabUrl || ('?tab=' + encodeURIComponent(name)));
return;
}
Object.keys(panels).forEach(function(key) {
var active = key === name;
@@ -72,10 +78,8 @@
function tabFromUrl() {
var m = window.location.search.match(/[?&]tab=([^&]+)/);
var name = m ? decodeURIComponent(m[1]) : defaultTab;
if (name === 'signin') return 'credits';
if (name === 'invite') return 'settings';
return name;
var name = m ? decodeURIComponent(m[1]) : (cfg.activeTab || defaultTab);
return tabAliases[name] || name;
}
function updateUrl(name) {
@@ -90,16 +94,20 @@
}
tabs.forEach(function(tab) {
tab.addEventListener('click', function() {
tab.addEventListener('click', function(e) {
var name = this.getAttribute('data-tab');
if (!panels[name] || panels[name].panel.dataset.panelLoaded === 'false') return;
e.preventDefault();
switchTo(name);
updateUrl(name);
});
});
sidebarBtns.forEach(function(btn) {
btn.addEventListener('click', function() {
btn.addEventListener('click', function(e) {
var name = this.getAttribute('data-tab');
if (!panels[name] || panels[name].panel.dataset.panelLoaded === 'false') return;
e.preventDefault();
switchTo(name);
updateUrl(name);
});