Revert site-wide translation markers; keep bib v4 pencils only.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-16 18:20:55 -04:00
parent 02bbca628f
commit e2ab4e58fe
2 changed files with 11 additions and 162 deletions

View File

@ -1223,14 +1223,7 @@ ul.ms1-menu-compte li a:hover, ul.ms1-menu-compte li a:active {
color:#fff;
}
.btn-aide-trad,
a.ms1-trad-link.btn-aide-trad{
display:inline-flex;
align-items:center;
justify-content:center;
vertical-align:middle;
text-decoration:none;
border:1px solid;
.btn-aide-trad{
border-color:#e67e22;
background:#f39c12;
color:#fff;

View File

@ -30,20 +30,20 @@ function afficheTexte($clef, $mem_echo = 1, $mem_trduction = 1, $mem_global = 0)
fxSetInfo('add', $info1, '', $mem_id);
}
$strOut = $mem_texte . fxAdminTradMarker($clef, $mem_global);
if ($mem_echo == 1) {
echo $strOut;
echo $mem_texte;
}
return $strOut;
return $mem_texte;
}
/**
* Libellé info_texte en contexte HTML (crayon via afficheTexte en mode Textes).
* Libellé info_texte en contexte HTML + crayon traduction (switch bannière).
* Ne pas utiliser dans des chaînes JavaScript — afficheTexte(..., 0) à la place.
*/
function afficheTextePage($clef, $mem_global = 0) {
afficheTexte($clef, 1, 0, $mem_global);
echo fxAdminTradButton($clef, null, $mem_global);
}
/**
@ -205,161 +205,19 @@ function fxAdminTradUrl($clef, $strInfoPrg = null, $mem_global = 0) {
));
}
/**
* Marqueur invisible (ZWSP) — sûr dans le JS ; remplacé par un lien traduction.php au chargement.
*/
function fxAdminTradMarker($clef, $mem_global = 0) {
if (!fxAdminTextEditModeActive() || trim($clef) === '') {
return '';
}
$strPayload = base64_encode(json_encode(array(
'k' => $clef,
'p' => fxAdminTradInfoPrg($clef, '', $mem_global),
'g' => (int)$mem_global,
), JSON_UNESCAPED_UNICODE));
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. */
/** Crayon édition — superadm dev/préprod + switch « Textes » ON. */
function fxAdminTradButton($clef, $strInfoPrg = null, $mem_global = 0) {
if (!fxAdminTextEditModeActive() || trim($clef) === '') {
return '';
}
return '<a href="' . fxAdminEsc(fxAdminTradUrl($clef, $strInfoPrg, $mem_global)) . '"'
. ' class="' . fxAdminTradLinkClass() . '"'
return '<button type="button" class="btn-admin-trad btn-aide-bib btn-aide-trad"'
. ' data-info-clef="' . fxAdminEsc($clef) . '"'
. ' data-trad-url="' . fxAdminEsc(fxAdminTradUrl($clef, $strInfoPrg, $mem_global)) . '"'
. ' title="Modifier textes FR/EN"'
. ' aria-label="Modifier textes">'
. '<i class="fa fa-pencil" aria-hidden="true"></i>'
. '</a>';
}
/** Remplace les marqueurs afficheTexte() par des liens crayon (mode Textes). */
function fxAdminTradMarkerScriptHtml() {
global $vDomaine, $vPage;
if (!fxAdminTextEditModeActive()) {
return '';
}
return '
<script>
(function () {
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;
while (p) {
var tag = p.nodeName;
if (tag === "SCRIPT" || tag === "STYLE") {
return true;
}
p = p.parentNode;
}
return false;
}
function buildUrl(o) {
return tradBase + "?clef=" + encodeURIComponent(o.k)
+ "&pk_prg=" + encodeURIComponent(o.p)
+ "&bd=client"
+ "&page=" + encodeURIComponent(pageDefault);
}
function replaceMarkers(textNode) {
if (skipParent(textNode)) {
return;
}
var text = textNode.nodeValue;
if (text.indexOf("\u200C") === -1) {
return;
}
re.lastIndex = 0;
if (!re.test(text)) {
return;
}
re.lastIndex = 0;
var frag = document.createDocumentFragment();
var last = 0;
var m;
while ((m = re.exec(text)) !== null) {
if (m.index > last) {
frag.appendChild(document.createTextNode(text.slice(last, m.index)));
}
try {
var o = JSON.parse(atob(m[1]));
var a = document.createElement("a");
a.href = buildUrl(o);
a.className = tradLinkClass;
a.title = "Modifier textes FR/EN";
a.setAttribute("aria-label", "Modifier textes");
a.innerHTML = \'<i class="fa fa-pencil" aria-hidden="true"></i>\';
frag.appendChild(a);
} catch (e) {}
last = m.index + m[0].length;
}
if (last < text.length) {
frag.appendChild(document.createTextNode(text.slice(last)));
}
textNode.parentNode.replaceChild(frag, textNode);
}
function scan() {
if (!document.body) {
return;
}
var walker = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT, null);
var nodes = [];
while (walker.nextNode()) {
nodes.push(walker.currentNode);
}
nodes.forEach(replaceMarkers);
}
if (document.readyState === "loading") {
document.addEventListener("DOMContentLoaded", scan);
} else {
scan();
}
})();
</script>';
. '</button>';
}
function fxAdminTextEditModeHandleRequest() {
@ -427,12 +285,10 @@ function fxRenderEnvNoticeBar() {
if ($strHtml === null || $strHtml === trim($vEnvNotice)) {
echo $vEnvNotice;
echo $strSwitch;
echo fxAdminTradMarkerScriptHtml();
return;
}
echo $strHtml;
echo fxAdminTradMarkerScriptHtml();
}
/**