spip/spip | 19 commits
Par Cerdic, le 20 novembre 2024 à 11h12min :
refactor: separer les 2 usages de #TRAD :
- la balise
#TRADa usage public utilise une syntaxe avec#ARRAYen second argument et 3eme argument optionnel - la balise
#TRAD_IDIOMEa usage interne uniquement supporte la syntaxe type#INCLUREpour faciliter la conversion par le compilateur
Refs: !5633
Modifié
ecrire/public/balises.php
ecrire/public/phraser_html.php
ecrire/tests/Squelettes/Idiomes/IdiomesTest.php
Détails : refactor: separer les 2 usages de `#TRAD` : (a67888c4) · Validations · spip / spip · GitLab
==============================
Par Cerdic, le 20 novembre 2024 à 11h12min :
refactor: mutualiser le calcul du placeholder unique dans une fonction phraser_placeholder_hash()
Modifié
ecrire/public/phraser_html.php
==============================
Par Cerdic, le 20 novembre 2024 à 11h12min :
refactor: 2 fonctions phraser_placeholder_memoriser() et phraser_placeholder_reinjecter() pour simplifier la lecture du code,
qui appellent la fonction interne phraser_placeholder_memoriser_ou_reinjecter() + retablir les fonctions phraser_boucle_placeholder() et public_generer_boucle_placeholder() en deprecated
Modifié
ecrire/public/phraser_html.php
==============================
Par Cerdic, le 20 novembre 2024 à 11h12min :
fix: eviter une indéfinie
Modifié
ecrire/public/phraser_html.php
Détails : fix: eviter une indéfinie (baf15e4a) · Validations · spip / spip · GitLab
==============================
Par Cerdic, le 20 novembre 2024 à 11h12min :
refactor: optimisation, quand l’idiome est simple on peut directement creer le Spip\Compilateur\Noeud\Champ plutot que de lancer un parsing compliqué
Modifié
ecrire/public/phraser_html.php
==============================
Par Cerdic, le 20 novembre 2024 à 11h12min :
fix: dans la syntaxe tableau en second argument, #TRAD peut recevoir des options au format tableau en troisième argument, qui seront passées à _T() (class, sanitize, ou force)
Modifié
ecrire/public/balises.php
==============================
Par Cerdic, le 20 novembre 2024 à 11h12min :
fix: la balise #TRAD peut prendre une syntaxe type inclure ou une syntaxe avec un tableau en second argument. La première est necessaire pour la transposition facile de la syntaxe <:...:> et la seconde est plus naturelle pour écriture directe,
par analogie avec _T()
Modifié
ecrire/public/balises.php
==============================
Par Matthieu Marcillaud, le 20 novembre 2024 à 11h12min :
docs: phpdoc balise #TRAD
Modifié
ecrire/public/balises.php
Détails : docs: phpdoc balise `#TRAD` (adedeae9) · Validations · spip / spip · GitLab
==============================
Par Cerdic, le 20 novembre 2024 à 11h12min :
fix: il ne faut pas casser la chaine des $result en appelant phraser_arg() ou phraser_args() car ils en ont besoin si ils rappellent phraser_champs_exterieurs() qui voudra réinjecter un des champs.
Le bug était a priori là depuis longtemps mais on y passait jamais, et là tout a coup avec le refactoring des idiomes on tombe dedans…
Modifié
ecrire/public/phraser_html.php
==============================
Par Cerdic, le 20 novembre 2024 à 11h12min :
chores: nettoyer les references aux objets spécifiques Idiome
Supprimé
ecrire/src/Compilateur/Noeud/Idiome.php
Modifié
ecrire/public/compiler.php
ecrire/public/interfaces.php
ecrire/public/phraser_html.php
==============================
Par Cerdic, le 20 novembre 2024 à 11h12min :
fix: quotes sur la chaine de langue quand on injecte un module par defaut
Modifié
ecrire/public/phraser_html.php
==============================
Par Cerdic, le 20 novembre 2024 à 11h12min :
fix: le remplacement de <:xxx:> par un #TRAD{xxx} génère parfois des bugs de compilation, on passe donc par des #PLACEHOLDER_IDIOME_xxxx sans arguments, qui sont la forme la plus simple des champs et ne posent pas de problème.
Le remplacement se fait ensuite a l’analyse des champs
Exemple de syntaxe qui passe avec une chaine de langue, mais pas quand la remplace par un #TRAD{xxx}, le phrasage echouant sur le <:accueil_site:> transformé en #TRAD{accueil_site}
[(#ENV{home,'non'}|=={oui}|?{
<h1 class="spip_logo_site">[(#LOGO_SITE_SPIP|image_reduire{224,96})]#NOM_SITE_SPIP</h1>
,
<strong class="h1 spip_logo_site"><a rel="start home" href="#URL_SITE_SPIP/" title="<:accueil_site:>">[(#LOGO_SITE_SPIP
|image_reduire{224,96})]#NOM_SITE_SPIP</a></strong>
})]
Modifié
ecrire/public/phraser_html.php
==============================
Par Cerdic, le 20 novembre 2024 à 11h12min :
refactor: le parsing des idiomes <:ecrire:module:> qui intervenait tard dans le parsing des squelettes et empêchait de fait des écritures riches dans les arguments ou les filtres des idiomes est remplacé par un parsing classique d’une balise #TRAD
La prise en charge de la syntaxe historique est assurée par un pré-parsing sur le squelette, avant analyse des balises, pour transformer les écritures de type <:module:chaine{arg1=texte1,arg2=[(#BALISE)]}|filtre1{texte2,#BALISE}|filtre2:> en ecriture standard de balise
[(#TRAD{module:chaine,arg1=texte1,arg2=[(#BALISE)]}|filtre1{texte2,#BALISE}|filtre2)]
ce qui permet du coup toutes les syntaxes possibles dans les arguments et filtres des chaines de langue.
On note au passage que l’on maintient le support des curieuses et peu usitées écritures de type <:module:{=#ENV{chaine}}:> voire <:{=#ENV{chaineavecmodule}}:> qui permettaient des écritures avec chaine de langue dynamique.
Au passage le strtolower sur la chaine de langue disparait, ce qui traite donc aussi #2536
Modifié
ecrire/public/balises.php
ecrire/public/phraser_html.php
==============================
Par Cerdic, le 20 novembre 2024 à 11h12min :
tests: tests unitaires pour les chaines de langue dans les squelettes, leurs variantes de syntaxe et une nouvelle balise #TRAD
Ajouté
ecrire/tests/Squelettes/Idiomes/IdiomesTest.php
==============================
Par Cerdic, le 20 novembre 2024 à 11h12min :
refactor: generaliser les fonctions de memorisation/reinjection de placeholder de type balise, en permettant d’avoir des balises simples sans argument ni crochets
Modifié
ecrire/public/phraser_html.php
==============================
Par Cerdic, le 20 novembre 2024 à 10h52min :
fix: en 2005 il est bien possible que les cookie peuplaient aussi directement les globales dans des vieilles versions de PHP, mais ce temps est révolu depuis longtemps et on ne veut récupérer que les cookies personalisés, pas peupler des globales sans rapport (ie le cookie xxx_lang peuplait le cookie spip_lang ET la globale spip_lang qui a un tout autre usage que le cookie)
Modifié
ecrire/inc/cookie.php
==============================
Par Cerdic, le 20 novembre 2024 à 10h51min :
refactor: utiliser str_starts_with() et substr() plutot que des substr() et preg_replace(), plus simple et efficace
- corriger le PHPDoc qui mentionne une valeur par défaut erronée de préfixe
Modifié
ecrire/inc/cookie.php
==============================
Par JamesRezo, le 20 novembre 2024 à 10h06min :
chore: update deps
Modifié
composer.lock
Détails : chore: update deps (aee3e736) · Validations · spip / spip · GitLab
==============================
Par JamesRezo, le 20 novembre 2024 à 09h41min :
Déplacer le contenu de plugins-dist quand on bascule de SPIP4 à SPIP5 (et inversement)
Modifié
composer.json
composer.lock