[FIX] odoo_theme: correctly consider baseurl
urlBase was only containing the domain name, not the /documentation/ closes odoo/documentation#2062 Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
This commit is contained in:
parent
a81e0623b0
commit
3901e3b241
@ -91,24 +91,32 @@ const _prepareAccordion = (tocElement) => {
|
|||||||
const _generateFallbackUrls = async (targetUrl) => {
|
const _generateFallbackUrls = async (targetUrl) => {
|
||||||
|
|
||||||
const _deconstructUrl = (urlObject) => {
|
const _deconstructUrl = (urlObject) => {
|
||||||
|
let urlBase = urlObject.origin;
|
||||||
let version = '';
|
let version = '';
|
||||||
let language = '';
|
let language = '';
|
||||||
const originalPathParts = [];
|
const originalPathParts = [];
|
||||||
for (let fragment of urlObject.pathname.split('/').reverse()) {
|
for (let fragment of urlObject.pathname.split('/').reverse()) {
|
||||||
|
if (fragment.length > 0) {
|
||||||
if (fragment.match(/^(?:saas-)?\d{2}\.\d$|^master$/)) {
|
if (fragment.match(/^(?:saas-)?\d{2}\.\d$|^master$/)) {
|
||||||
|
// Try to match the version before considering the fragment part of the path.
|
||||||
version = fragment;
|
version = fragment;
|
||||||
} else if (fragment.match(/^[a-z]{2}(?:_[A-Z]{2})?$/)) {
|
} else if (fragment.match(/^[a-z]{2}(?:_[A-Z]{2})?$/)) {
|
||||||
|
// Try to match the language before considering the fragment part of the path.
|
||||||
language = fragment;
|
language = fragment;
|
||||||
} else if (fragment.length > 0) {
|
} else if (version || language) {
|
||||||
|
// The fragment is part of the base URL but cannot be part of the part anymore.
|
||||||
|
urlBase += `/${fragment}`;
|
||||||
|
} else {
|
||||||
|
// The fragment is part of the original path.
|
||||||
originalPathParts.unshift(fragment);
|
originalPathParts.unshift(fragment);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return [version, language, originalPathParts];
|
}
|
||||||
|
return [urlBase, version, language, originalPathParts];
|
||||||
};
|
};
|
||||||
|
|
||||||
const targetUrlObject = new URL(targetUrl);
|
const targetUrlObject = new URL(targetUrl);
|
||||||
const [version, language, originalPathParts] = _deconstructUrl(targetUrlObject);
|
const [urlBase, version, language, originalPathParts] = _deconstructUrl(targetUrlObject);
|
||||||
const urlBase = targetUrlObject.origin;
|
|
||||||
|
|
||||||
// Generate the fallback URLs.
|
// Generate the fallback URLs.
|
||||||
const fallbackUrls = [];
|
const fallbackUrls = [];
|
||||||
@ -124,21 +132,23 @@ const _generateFallbackUrls = async (targetUrl) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Build the fallback URL from the version, language and path parts, if any.
|
// Build the fallback URL from the version, language and path parts, if any.
|
||||||
if (version && language)
|
if (version && language) {
|
||||||
fallbackUrls.push(
|
fallbackUrls.push(
|
||||||
`${urlBase}/${version}/${language}/${fallbackPathParts.join('/')}`,
|
`${urlBase}/${version}/${language}/${fallbackPathParts.join('/')}`,
|
||||||
`${urlBase}/${version}/${fallbackPathParts.join('/')}`,
|
`${urlBase}/${version}/${fallbackPathParts.join('/')}`,
|
||||||
);
|
);
|
||||||
else if (version && !language)
|
} else if (version && !language) {
|
||||||
fallbackUrls.push(`${urlBase}/${version}/${fallbackPathParts.join('/')}`);
|
fallbackUrls.push(`${urlBase}/${version}/${fallbackPathParts.join('/')}`);
|
||||||
else if (!version && language)
|
} else if (!version && language) {
|
||||||
fallbackUrls.push(
|
fallbackUrls.push(
|
||||||
`${urlBase}/${language}/${fallbackPathParts.join('/')}`,
|
`${urlBase}/${language}/${fallbackPathParts.join('/')}`,
|
||||||
`${urlBase}/${fallbackPathParts.join('/')}`,
|
`${urlBase}/${fallbackPathParts.join('/')}`,
|
||||||
);
|
);
|
||||||
else if (!version && !language)
|
} else if (!version && !language) {
|
||||||
fallbackUrls.push(`${urlBase}/${fallbackPathParts.join('/')}`);
|
fallbackUrls.push(`${urlBase}/${fallbackPathParts.join('/')}`);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
fallbackUrls.push(`${urlBase}/`);
|
||||||
return fallbackUrls;
|
return fallbackUrls;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user