bonjour
j’ai créé des modèles , que je partagerais des que suffisamment solide.
Il me reste un pb récurent : j’utilise insere_modele et une barre « edition » dans les textarea.
Si on inclus un | dans un modele … patatras.
cela empêche même l’enregistrement automatique du modèle si on l’a appelé par la barre edition.
Si on remplace ce | par @ avec [(#ENV*{letexte}|remplacerarobas|propre)]
dans le squelette du modèle c’est ok ( merci pour la solution dans une précédente discussion).
par exemple pour centrer une partie du texte du modèle bla bla on doit écrire
<monmodele|letexte=debut tetxe [@lbla bla@] fin texte>
sinon le modele ne fonctionne pas (idem pour <doc1300@left@largeur=300>)
il est difficile de demander aux rédacteurs de faire eux même la modif.
comme j’utilise inserer_modele, j’ai trouvée deux solutions pour rendre cette manip automatique.
solution 1- en modifiant inserer_modele …
en rajoutant juste dans inserer_modele.php ligne 109
$champ=str_replace('|','@',_request($champ));
ce qui donne
foreach ($champs as $champ) {
if ($champ != 'modele' && $champ != 'variante' && $champ != 'classe' && $champ != 'id_modele' && $champ != 'align' && _request($champ) && _request($champ) != '') {
$champ=str_replace('|','@',_request($champ));
if ($champ == _request($champ)) {
$code .= "|$champ";
} elseif (is_array(_request($champ))) {
// On transforme les tableaux en une liste
$code .= "|$champ=" . implode(',', _request($champ));
} else {
$code .= "|$champ=" . _request($champ);
}
}
solution 2- en créant pour mon plugin dans le répertoire saisie, une saisie « textarea_arobas » au lieu de « textarea » dans les fichiers yaml des modeles
textarea_arobas : devient
**[(#SET{valeur,#ENV*{valeur}|remplacerpipe|propre})]**
#SET{valeur, #ENV{valeur_forcee,#GET{valeur,#ENV{defaut}}}}
#SET{valeur, #GET{valeur}|is_array|?{(#GET{valeur}|saisies_tableau2chaine), #GET{valeur}}}
#SET{valeur,#GET{valeur}|saisies_utf8_restaurer_planes}
**<textarea onmouseout="changerPipe(this)"** name="#ENV{nom}" class="[(#ENV{class}) ][inserer_barre_(#ENV{inserer_barre}) ][(#ENV{previsualisation}|oui)inserer_previsualisation]" id="champ_[(#ENV{id,#ENV{nom}}|saisie_nom2classe)]" rows="[(#ENV{rows,20})]" [cols="(#ENV{cols})"] [ disabled="(#ENV{disable})"][ readonly="(#ENV{readonly})"][ placeholder="(#ENV{placeholder})"][(#ENV{obligatoire}|et{#ENV{obligatoire}|!={non}}|et{#HTML5}|oui) required="required"][ aria-describedby="(#ENV{describedby})"][ maxlength="(#ENV{longueur_max})"][ (#ENV*{attributs})]>
[(#GET{valeur})]
</textarea>
**<script>**
**function changerPipe(arg) {**
**let text = arg.value;**
**arg.value = text.replaceAll("|","@");**
** }**
**</script>**
Cette solution évite devoir modifier inserer_modele a chaque changement de version.
dans les deux cas il faut rajouter une fonction dans mes_fonctions.php
function remplacerarobas($texte,$separateur="@") {
$texte = str_replace($separateur,'|',$texte);
return $texte;
}
et utiliser dans le squelette du modele
[(#ENV*{letexte}|remplacerarobas|propre)]
Dommage que cela ne soit pas pris en compte dans inserer_modele
que pensez vous des solutions ?