Connecté en Anglais (langue principale français) pas de bouton pour ajouter les plugins sélectionnés #4187

Closed
opened 4 years ago by Jack31 · 5 comments
Jack31 commented 4 years ago

Constaté ce matin en 3.1 et en 3.2.1 [23954] si je change ma langue du site de français vers Anglais et que je cherche à ajouter un plugin, le bouton de téléchargement de plugin n'apparait pas. Testé aussi en Español, langue également configurée dans les langues du site.
Est-ce un problème de css parce que les plugins qui n'ont pas de traduction dans la langue active perdent l'affichage correct ? Voir cette copie d'écran : https://pic.infini.fr/gallery#5uWHoejO/94P3BZkq.png

Constaté ce matin en 3.1 et en 3.2.1 [23954] si je change ma langue du site de français vers Anglais et que je cherche à ajouter un plugin, le bouton de téléchargement de plugin n'apparait pas. Testé aussi en Español, langue également configurée dans les langues du site. Est-ce un problème de css parce que les plugins qui n'ont pas de traduction dans la langue active perdent l'affichage correct ? Voir cette copie d'écran : https://pic.infini.fr/gallery#5uWHoejO/94P3BZkq.png
Poster

Bon, après quelques essais :

  • en fonction des plugins sélectionnés par le critère de recherche parfois tout fonctionne correctement. Par exemple si je recherche avec le critère de recherche "media", 5 plugins sont affichés de façon correcte et si j'en sélectionne un les boutons "upload" et "upload and activate" sont bien présents.
  • si je recherche (avec comme langue l'anglais) des plugins avec comme critère "edit" ou "encore" ou "modele" ... des plugins remontent qui cassent la présentation et du coup les boutons upload ne sont pas dispos.

Le seul point commun que j'ai trouvé dans le paquet.xml de ces plugins est la présence de caractères <!-- blabla --> comme par exemple pour afficher un slogan au lieu de le mettre comme recommandé comme chaine de langue dans un fichier de langue.

Je ne m'explique pas pourquoi ce code casserait le fonctionnement en trad et pas en français...

Bon, après quelques essais : - en fonction des plugins sélectionnés par le critère de recherche parfois tout fonctionne correctement. Par exemple si je recherche avec le critère de recherche "media", 5 plugins sont affichés de façon correcte et si j'en sélectionne un les boutons "upload" et "upload and activate" sont bien présents. - si je recherche (avec comme langue l'anglais) des plugins avec comme critère "edit" ou "encore" ou "modele" ... des plugins remontent qui cassent la présentation et du coup les boutons upload ne sont pas dispos. Le seul point commun que j'ai trouvé dans le paquet.xml de ces plugins est la présence de caractères `<!-- blabla -->` comme par exemple pour afficher un slogan au lieu de le mettre comme recommandé comme chaine de langue dans un fichier de langue. Je ne m'explique pas pourquoi ce code casserait le fonctionnement en trad et pas en français...

En effet, en français, pas de problème, mais si je change ma langue perso pour "Anglais" et que je fais dans admin_plugin la recherche des plugins "Etiquettes" ou "objets_virtuels", ou "Des jeux dans vos articles" alors l'affichage est cassé car il y a un une fin de liste /ul qui s'insère au milieu de la liste (au milieu de la boucle).

Le squelette en cause semble être dû à [(#VALEUR{description}|extraire_multi|propre)]` dans svp/formulaires/inc-plugins_trouves.html

On dirait que propre se prend les pieds dans les énumérations générées par « -* » qu'il y a dans ces descriptions.

Par exemple :

<div lang='fr'>Le plugin Étiquettes permet de créer facilement...
-* Une liste à cliquer (sur les mêmes principes que les cases à cocher)
-* Aucune aide
</div>```

devient :
```Le plugin Étiquettes permet... 
<ul class="spip"><li> Une liste à cliquer (sur les mêmes principes que les cases à cocher)</li><li> Aucune aide
</div></li></ul>```

Une fermeture de la dernière ligne de l'énumération se fait APRÉS la fermeture du div qui suit, alors qu'elle devrait se faire avant. 

Rencontrant cette fermeture de div, le navigateur voit qu'il a un li et une ul en cours et les ferme de force. Juste aprés il rencontre les vraies fermetures... et c'est la liste principale (plugins énumérés par la boucle)  qu'il ferme alors. Si mal que les plugins après se trouvent hors liste, et sans style.

La particularité de la situation, pour propre, c'est qu'il y a du html collé juste après une liste, et que propre considère que ça fait partie de la dernière ligne de la liste.

En effet, en français, pas de problème, mais si je change ma langue perso pour "Anglais" et que je fais dans admin_plugin la recherche des plugins "Etiquettes" ou "objets_virtuels", ou "Des jeux dans vos articles" alors l'affichage est cassé car il y a un une fin de liste /ul qui s'insère au milieu de la liste (au milieu de la boucle). Le squelette en cause semble être dû à <code class="html">[(#VALEUR{description}|extraire_multi|propre)]` dans svp/formulaires/inc-plugins_trouves.html On dirait que propre se prend les pieds dans les énumérations générées par « -* » qu'il y a dans ces descriptions. Par exemple : ``` <div lang='fr'>Le plugin Étiquettes permet de créer facilement... -* Une liste à cliquer (sur les mêmes principes que les cases à cocher) -* Aucune aide </div>``` devient : ```Le plugin Étiquettes permet... <ul class="spip"><li> Une liste à cliquer (sur les mêmes principes que les cases à cocher)</li><li> Aucune aide </div></li></ul>``` Une fermeture de la dernière ligne de l'énumération se fait APRÉS la fermeture du div qui suit, alors qu'elle devrait se faire avant. Rencontrant cette fermeture de div, le navigateur voit qu'il a un li et une ul en cours et les ferme de force. Juste aprés il rencontre les vraies fermetures... et c'est la liste principale (plugins énumérés par la boucle) qu'il ferme alors. Si mal que les plugins après se trouvent hors liste, et sans style. La particularité de la situation, pour propre, c'est qu'il y a du html collé juste après une liste, et que propre considère que ça fait partie de la dernière ligne de la liste.

Le pb se passe pas en français probablement car le

...
` n'est inclu que quand la langue de la chaine n'est pas la langue du site.

Or une ligne <li> peut légitimement contenir des divs et réellement terminer par un </div>.

Il semblerait donc qu'il faut ajouter, dans ce contexte seulement, des fins de lignes à la fin de la chaine, avant d'appliquer |propre, pour forcer la fermeture de la ligne avec </li> et faire en sorte que le </div> ne soit pas attrapé dedans.

https://zone.spip.net/trac/spip-zone/changeset/111853/spip-zone confirme, puisque le pb se pose plus ensuite pour le plugin etiquettes.

Le pb se passe pas en français probablement car le <code class="html"><div lang='fr'>...</div>` n'est inclu que quand la langue de la chaine n'est pas la langue du site. Or une ligne `<li>` peut légitimement contenir des divs et réellement terminer par un `</div>`. Il semblerait donc qu'il faut ajouter, dans ce contexte seulement, des fins de lignes à la fin de la chaine, avant d'appliquer |propre, pour forcer la fermeture de la ligne avec `</li>` et faire en sorte que le `</div>` ne soit pas attrapé dedans. https://zone.spip.net/trac/spip-zone/changeset/111853/spip-zone confirme, puisque le pb se pose plus ensuite pour le plugin etiquettes.

Je propose un patch général pour extraire_multi : #4189

Je propose un patch général pour extraire_multi : #4189
Owner

Et je ferme ici car le bug ne concerne pas SVP mais extraire_multi, et donc on traite le problème dans #4189
Statut changé à Fermé

Et je ferme ici car le bug ne concerne pas SVP mais extraire_multi, et donc on traite le problème dans #4189 **Statut changé à Fermé**
Sign in to join this conversation.
No Milestone
No project
No Assignees
3 Participants
Notifications
Due Date

No due date set.

Dependencies

This issue currently doesn't have any dependencies.

Loading…
There is no content yet.