Revert site-wide translation markers; keep bib v4 pencils only.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@ -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;
|
||||
|
||||
@ -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();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user