Changeset 0.25.3 (#163)
This commit is contained in:
@@ -9,7 +9,7 @@
|
||||
|
||||
{{/* Top Bar */}}
|
||||
<div class="admin-topbar">
|
||||
<a href="{{.BasePath}}/" class="admin-topbar-back" onclick="if(history.length>1){history.back();return false;}">
|
||||
<a href="{{.BasePath}}/" class="admin-topbar-back" id="adminBackBtn">>
|
||||
<svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="19" y1="12" x2="5" y2="12"/><polyline points="12 19 5 12 12 5"/></svg>
|
||||
Back
|
||||
</a>
|
||||
@@ -220,4 +220,52 @@
|
||||
<script nonce="{{.CSPNonce}}" src="{{.BasePath}}/js/notifications.js?v={{.Version}}"></script>
|
||||
<script nonce="{{.CSPNonce}}" src="{{.BasePath}}/js/admin-scaffold.js?v={{.Version}}"></script>
|
||||
<script nonce="{{.CSPNonce}}" src="{{.BasePath}}/js/admin-surfaces.js?v={{.Version}}"></script>
|
||||
<script nonce="{{.CSPNonce}}">
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
// ── Admin navigation: don't pollute browser history ──
|
||||
// Same pattern as settings surface: stash return URL on entry,
|
||||
// tab/nav switches use location.replace(), back goes directly out.
|
||||
const RETURN_KEY = 'sb_admin_return';
|
||||
if (!sessionStorage.getItem(RETURN_KEY)) {
|
||||
const ref = document.referrer;
|
||||
const base = (window.__BASE__ || '') + '/';
|
||||
if (ref && ref.startsWith(location.origin) && !ref.includes('/admin')) {
|
||||
sessionStorage.setItem(RETURN_KEY, ref);
|
||||
} else {
|
||||
sessionStorage.setItem(RETURN_KEY, location.origin + base);
|
||||
}
|
||||
}
|
||||
|
||||
const backBtn = document.getElementById('adminBackBtn');
|
||||
if (backBtn) {
|
||||
backBtn.addEventListener('click', (e) => {
|
||||
e.preventDefault();
|
||||
const returnURL = sessionStorage.getItem(RETURN_KEY);
|
||||
sessionStorage.removeItem(RETURN_KEY);
|
||||
location.href = returnURL || (window.__BASE__ || '') + '/';
|
||||
});
|
||||
}
|
||||
|
||||
// Category tabs: replace history instead of pushing
|
||||
document.querySelectorAll('.admin-cat-btn').forEach(link => {
|
||||
link.addEventListener('click', (e) => {
|
||||
e.preventDefault();
|
||||
location.replace(link.href);
|
||||
});
|
||||
});
|
||||
|
||||
// Nav links are dynamically rebuilt by admin-scaffold.js —
|
||||
// use event delegation on the nav container
|
||||
const adminNav = document.getElementById('adminNav');
|
||||
if (adminNav) {
|
||||
adminNav.addEventListener('click', (e) => {
|
||||
const link = e.target.closest('.admin-nav-link');
|
||||
if (link && link.href) {
|
||||
e.preventDefault();
|
||||
location.replace(link.href);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
</script>
|
||||
{{end}}
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
{{/* Top Bar */}}
|
||||
<div class="settings-topbar">
|
||||
<a href="{{.BasePath}}/" class="settings-topbar-back" onclick="if(history.length>1){history.back();return false;}">
|
||||
<a href="{{.BasePath}}/" class="settings-topbar-back" id="settingsBackBtn">
|
||||
<svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="19" y1="12" x2="5" y2="12"/><polyline points="12 19 5 12 12 5"/></svg>
|
||||
Back
|
||||
</a>
|
||||
@@ -98,7 +98,7 @@
|
||||
<h3>UI Scale</h3>
|
||||
<div class="form-group">
|
||||
<div style="display:flex;align-items:center;gap:8px;">
|
||||
<input type="range" id="settingsScale" min="80" max="120" step="5" value="100" style="flex:1;">
|
||||
<input type="range" id="settingsScale" min="80" max="175" step="5" value="100" style="flex:1;">
|
||||
<span id="scaleValue" style="font-size:12px;color:var(--text-2);font-family:var(--mono);min-width:32px;">100%</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -170,6 +170,40 @@
|
||||
const section = document.getElementById('settingsSection')?.dataset.section;
|
||||
if (!section) return;
|
||||
|
||||
// ── Settings navigation: don't pollute browser history ──
|
||||
// On first settings page load, stash the URL the user came from.
|
||||
// Tab switches use location.replace() so they don't stack in history.
|
||||
// Back button navigates directly to the stored return URL.
|
||||
const RETURN_KEY = 'sb_settings_return';
|
||||
if (!sessionStorage.getItem(RETURN_KEY)) {
|
||||
// Prefer referrer if it's on the same origin and not another settings page
|
||||
const ref = document.referrer;
|
||||
const base = (window.__BASE__ || '') + '/';
|
||||
if (ref && ref.startsWith(location.origin) && !ref.includes('/settings')) {
|
||||
sessionStorage.setItem(RETURN_KEY, ref);
|
||||
} else {
|
||||
sessionStorage.setItem(RETURN_KEY, location.origin + base);
|
||||
}
|
||||
}
|
||||
|
||||
const backBtn = document.getElementById('settingsBackBtn');
|
||||
if (backBtn) {
|
||||
backBtn.addEventListener('click', (e) => {
|
||||
e.preventDefault();
|
||||
const returnURL = sessionStorage.getItem(RETURN_KEY);
|
||||
sessionStorage.removeItem(RETURN_KEY);
|
||||
location.href = returnURL || (window.__BASE__ || '') + '/';
|
||||
});
|
||||
}
|
||||
|
||||
// Tab links: replace current history entry instead of pushing
|
||||
document.querySelectorAll('.settings-nav-link').forEach(link => {
|
||||
link.addEventListener('click', (e) => {
|
||||
e.preventDefault();
|
||||
location.replace(link.href);
|
||||
});
|
||||
});
|
||||
|
||||
// Show BYOK nav if enabled
|
||||
const pageData = window.__PAGE_DATA__;
|
||||
if (pageData && pageData.BYOKEnabled) {
|
||||
|
||||
Reference in New Issue
Block a user