
When a user clicks on the link of an alternate page in the version or language switcher, we now check if the page referenced by the target URL exists or not. If not, we generate a series of fallback URLs from the target URL and check whether the targeted resource exists or not, until we read the root of the documentation. As soon as we find a valid URL, we redirect the user to it. This is inspired by the behaviour of docs.python.org's version and language switchers. task-2534669 closes odoo/documentation#1588 Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com> Co-authored-by: Antoine Vandevenne (anv) <anv@odoo.com>
28 lines
1.0 KiB
JavaScript
28 lines
1.0 KiB
JavaScript
(function ($) {
|
|
|
|
document.addEventListener('DOMContentLoaded', () => {
|
|
// Enable fallback URLs for broken redirects from the version or language switchers.
|
|
_prepareSwitchersFallbacks();
|
|
});
|
|
|
|
/**
|
|
* Add event listeners on links in the version and language switchers.
|
|
*
|
|
* If a link is clicked, the user is redirected to the closest fallback URL (including the
|
|
* original target URL) that is available.
|
|
*/
|
|
const _prepareSwitchersFallbacks = () => {
|
|
document.querySelectorAll('a[class="dropdown-item"]').forEach(element => {
|
|
element.addEventListener('click', async event => {
|
|
if (element.hasAttribute('href')) {
|
|
event.preventDefault();
|
|
const fallbackUrls = await _generateFallbackUrls(element.getAttribute('href'));
|
|
const fallbackUrl = await _getFirstValidUrl(fallbackUrls);
|
|
window.location.href = fallbackUrl;
|
|
}
|
|
});
|
|
});
|
|
};
|
|
|
|
})();
|