diff --git a/docs/css/custom.css b/docs/css/custom.css index 9cd2a8839d..198fc77a76 100644 --- a/docs/css/custom.css +++ b/docs/css/custom.css @@ -627,5 +627,10 @@ div.path { color: var(--ibexa-dusk-black); } +#older-versions { + cursor: pointer; +} - +[hidden] { + display: none !important; +} diff --git a/docs/js/custom.js b/docs/js/custom.js index 902f01231a..1d6e3906ec 100644 --- a/docs/js/custom.js +++ b/docs/js/custom.js @@ -3,13 +3,21 @@ let jquery = jQuery; $(document).ready(function() { // replace edit url - var branchName = 'master', - branchNameRegexp = /\/en\/([a-z0-9-_.]*)\//g.exec(document.location.href); + let branchName = 'master'; + const branchNameRegexp = /\/en\/([a-z0-9-_.]*)\//g.exec(document.location.href); + const eolVersions = window.eol_versions ?? []; if (branchNameRegexp !== null && branchNameRegexp.hasOwnProperty(1) && branchNameRegexp[1].length) { branchName = branchNameRegexp[1]; } + // Show warning box for versions that have reached End Of Life + if (eolVersions.includes(branchName)) { + const warningBox = document.querySelector('#eol-warning-box'); + + warningBox.hidden = false; + } + $('.md-content a.md-icon').each(function() { $(this).attr( 'href', @@ -37,7 +45,7 @@ $(document).ready(function() { var update = setInterval(function() { let ready = false, version = ''; if ($('readthedocs-flyout').length) { - $('dl.versions', $('readthedocs-flyout').prop('shadowRoot')).appendTo('.version-switcher .switcher__list'); + $('dl.versions', $('readthedocs-flyout').prop('shadowRoot')).prependTo('.version-switcher .switcher__list'); $('readthedocs-flyout').remove(); version = $('.switcher__list dl.versions dd strong a').text(); ready = true; @@ -61,6 +69,27 @@ $(document).ready(function() { if ('master' !== (vl = $('.rst-other-versions.switcher__list dl.versions')).find('dd:first').text()) { vl.find('dd').each(function() {$(this).detach().prependTo(vl)}); } + + const allVersions = [...document.querySelectorAll('.switcher__list .versions dd')]; + const olderVersions = document.querySelector('#older-versions'); + + if (eolVersions.includes(branchName)) { + olderVersions.hidden = false; + } + + allVersions + .filter((versionNode) => eolVersions.includes(versionNode.textContent)) + .forEach((versionNode) => { + versionNode.hidden = true; + }); + + olderVersions.addEventListener('click', (event) => { + event.stopPropagation(); + allVersions.forEach((versionNode) => { + versionNode.hidden = false; + }); + olderVersions.hidden = true; + }); } }, 300); setTimeout(function() { diff --git a/mkdocs.yml b/mkdocs.yml index 231faf0eee..ebab47e35b 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -897,6 +897,9 @@ extra: product_name_cloud: 'Ibexa Cloud' product_name_oss: 'Ibexa OSS' product_name_engage: 'Ibexa Engage' + + eol_versions: ['2.5'] + # Global variables - latest tag versions latest_tag_2_5: '2.5.32' latest_tag_3_3: '3.3.37' diff --git a/theme/main.html b/theme/main.html index bb3616a273..eddef4b86f 100644 --- a/theme/main.html +++ b/theme/main.html @@ -11,6 +11,7 @@ {% block extrahead %} + {% endblock %} {% block site_nav %} @@ -67,6 +68,7 @@ {% endif %} {% endif %} + {% include "partials/eol_warning.html" %} {{ page.content }} {% include "partials/tags.html" %} diff --git a/theme/partials/eol_warning.html b/theme/partials/eol_warning.html new file mode 100644 index 0000000000..a5a6f2ecf0 --- /dev/null +++ b/theme/partials/eol_warning.html @@ -0,0 +1,5 @@ + diff --git a/theme/partials/version_switcher.html b/theme/partials/version_switcher.html index 46e435a7e1..7dc7eaceaf 100644 --- a/theme/partials/version_switcher.html +++ b/theme/partials/version_switcher.html @@ -5,5 +5,6 @@
+