diff --git a/js/pretext_add_on.js b/js/pretext_add_on.js index da1d951e7..472b9cbd5 100644 --- a/js/pretext_add_on.js +++ b/js/pretext_add_on.js @@ -113,8 +113,44 @@ window.addEventListener("DOMContentLoaded", function() { copyPermalink(link); }); }); + + if (typeof ptx_default_settings !== 'undefined' && ptx_default_settings.permalink_button) { + initPermalinkToggle(); + } }); +function setPermalinkVisibility(visible) { + document.documentElement.classList.toggle('ptx-permalinks-hidden', !visible); +} + +function initPermalinkToggle() { + const stored = localStorage.getItem('ptx_permalink_visible'); + const initiallyVisible = stored === 'true'; + + setPermalinkVisibility(initiallyVisible); + + const btn = document.getElementById('permalink-toggle-button'); + if (!btn) return; + + let permalinksVisible = initiallyVisible; + const enableLabel = btn.dataset.enableLabel; + const disableLabel = btn.dataset.disableLabel; + const initialLabel = initiallyVisible ? disableLabel : enableLabel; + btn.setAttribute('aria-label', initialLabel); + btn.title = initialLabel; + btn.querySelector('.icon').textContent = initiallyVisible ? 'link_off' : 'link'; + + btn.addEventListener('click', function() { + permalinksVisible = !permalinksVisible; + setPermalinkVisibility(permalinksVisible); + const label = permalinksVisible ? disableLabel : enableLabel; + btn.setAttribute('aria-label', label); + btn.title = label; + btn.querySelector('.icon').textContent = permalinksVisible ? 'link_off' : 'link'; + localStorage.setItem('ptx_permalink_visible', String(permalinksVisible)); + }); +} + window.addEventListener("load",function(event) { diff --git a/xsl/localizations/en-US.xml b/xsl/localizations/en-US.xml index 19bcff656..d0f7f6924 100644 --- a/xsl/localizations/en-US.xml +++ b/xsl/localizations/en-US.xml @@ -333,6 +333,9 @@ along with PreTeXt. If not, see . Copy heading and permalink for + + Enable Permalinks + Disable Permalinks diff --git a/xsl/pretext-html.xsl b/xsl/pretext-html.xsl index f0884659a..f0e8684ee 100644 --- a/xsl/pretext-html.xsl +++ b/xsl/pretext-html.xsl @@ -12102,6 +12102,36 @@ along with MathBook XML. If not, see . + + + + + + + + + + + + + +