From d7d850e0d5b08afc1ea8e8cdbac9392dbcf95054 Mon Sep 17 00:00:00 2001 From: Lukas Wagner Date: Mon, 11 May 2026 22:22:21 +0200 Subject: [PATCH 1/2] Use relative paths for docs redirect and version selector The docs are served from a subpath (/lldap-operator/), so absolute paths like /main-branch/ resolve incorrectly. Use relative paths throughout: ./LATEST/ in the root redirect, and derive the site root from the script's own URL in the version selector. --- .github/scripts/generate-redirect.sh | 4 ++-- docs/src/version-selector.js | 16 +++++++++++----- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/.github/scripts/generate-redirect.sh b/.github/scripts/generate-redirect.sh index 4b4d6c0..16f6e43 100755 --- a/.github/scripts/generate-redirect.sh +++ b/.github/scripts/generate-redirect.sh @@ -9,11 +9,11 @@ cat > "$OUTPUT" << HTMLEOF - + Redirecting to latest docs -

Redirecting to latest documentation (${LATEST})

+

Redirecting to latest documentation (${LATEST})

HTMLEOF diff --git a/docs/src/version-selector.js b/docs/src/version-selector.js index acad34c..c10a72b 100644 --- a/docs/src/version-selector.js +++ b/docs/src/version-selector.js @@ -1,11 +1,17 @@ (function () { 'use strict'; - var pathSegments = window.location.pathname.split('/'); - var currentVersion = pathSegments[1] || ''; - var currentPage = pathSegments.slice(2).join('/'); + // The script is served from //src/version-selector.js. + // Use its URL to derive the site root and current version, so paths work + // regardless of whether docs are hosted at the domain root or a subpath. + var scriptUrl = document.currentScript.src; + var versionBase = new URL('..', scriptUrl).href; + var siteRoot = new URL('..', versionBase).href; + var currentVersion = versionBase.replace(/\/$/, '').split('/').pop() || ''; + var pageUrl = window.location.href; + var currentPage = pageUrl.startsWith(versionBase) ? pageUrl.substring(versionBase.length) : ''; - fetch('/versions.json') + fetch(siteRoot + 'versions.json') .then(function (res) { if (!res.ok) throw new Error(res.status); return res.json(); @@ -34,7 +40,7 @@ if (select.options.length === 0) return; select.addEventListener('change', function () { - window.location.href = '/' + this.value + '/' + currentPage; + window.location.href = siteRoot + this.value + '/' + currentPage; }); var container = document.querySelector('.right-buttons'); From 9950631c44e1e63480946c6c5d66d6e791b16f8c Mon Sep 17 00:00:00 2001 From: Lukas Wagner Date: Mon, 11 May 2026 22:26:11 +0200 Subject: [PATCH 2/2] Use URL constructor instead of string concatenation for URLs --- docs/src/version-selector.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/src/version-selector.js b/docs/src/version-selector.js index c10a72b..3cbeafb 100644 --- a/docs/src/version-selector.js +++ b/docs/src/version-selector.js @@ -11,7 +11,7 @@ var pageUrl = window.location.href; var currentPage = pageUrl.startsWith(versionBase) ? pageUrl.substring(versionBase.length) : ''; - fetch(siteRoot + 'versions.json') + fetch(new URL('versions.json', siteRoot).href) .then(function (res) { if (!res.ok) throw new Error(res.status); return res.json(); @@ -40,7 +40,7 @@ if (select.options.length === 0) return; select.addEventListener('change', function () { - window.location.href = siteRoot + this.value + '/' + currentPage; + window.location.href = new URL(this.value + '/' + currentPage, siteRoot).href; }); var container = document.querySelector('.right-buttons');