diff --git a/php/inc_fonctions_sl.php b/php/inc_fonctions_sl.php index 01f0d52..fba1e4a 100644 --- a/php/inc_fonctions_sl.php +++ b/php/inc_fonctions_sl.php @@ -222,6 +222,11 @@ function fxAdminTradMarker($clef, $mem_global = 0) { return "\xE2\x80\x8B\xE2\x80\x8C" . $strPayload . "\xE2\x80\x8C\xE2\x80\x8B"; } +/** Classes CSS crayon traduction (sans btn-admin-trad — évite le handler bib sur data-trad-url). */ +function fxAdminTradLinkClass() { + return 'btn-aide-bib btn-aide-trad ms1-trad-link'; +} + /** Lien crayon traduction.php — superadm dev/préprod + switch « Textes » ON. */ function fxAdminTradButton($clef, $strInfoPrg = null, $mem_global = 0) { if (!fxAdminTextEditModeActive() || trim($clef) === '') { @@ -229,8 +234,7 @@ function fxAdminTradButton($clef, $strInfoPrg = null, $mem_global = 0) { } return '' . '' @@ -251,6 +255,33 @@ function fxAdminTradMarkerScriptHtml() { var re = /\u200B\u200C([A-Za-z0-9+/=]+)\u200C\u200B/g; var tradBase = ' . json_encode($vDomaine . '/php/traduction.php') . '; var pageDefault = ' . json_encode(!empty($vPage) ? $vPage : 'compte.php') . '; + var tradLinkClass = ' . json_encode(fxAdminTradLinkClass()) . '; + + function openTradPopup(url) { + var w = window.open( + url, + "ms1Trad" + Date.now(), + "width=960,height=640,scrollbars=yes,resizable=yes" + ); + if (w) { + var timer = setInterval(function () { + if (w.closed) { + clearInterval(timer); + window.location.reload(); + } + }, 400); + } + } + + document.addEventListener("click", function (e) { + var link = e.target.closest("a.ms1-trad-link"); + if (!link || !link.href) { + return; + } + e.preventDefault(); + e.stopPropagation(); + openTradPopup(link.href); + }, true); function skipParent(node) { var p = node.parentNode; @@ -296,9 +327,7 @@ function fxAdminTradMarkerScriptHtml() { var o = JSON.parse(atob(m[1])); var a = document.createElement("a"); a.href = buildUrl(o); - a.target = "_blank"; - a.rel = "noopener"; - a.className = "btn-admin-trad btn-aide-bib btn-aide-trad ms1-trad-link"; + a.className = tradLinkClass; a.title = "Modifier textes FR/EN"; a.setAttribute("aria-label", "Modifier textes"); a.innerHTML = \'\';