#110 Ticket #4291 : faire fonctionner la balise #INFO_INTRODUCTION de la même façon que #INTRODUCTION.

Open
tcharlss wants to merge 1 commits from dev/issue_4291_introduction into master
tcharlss commented 2 weeks ago
Owner

(Reprise de la PR !5 qui est en rade)

Objectif

Faire fonctionner la balise #INFO_INTRODUCTION de la même façon que #INTRODUCTION

Actuellement, cette balise ne renvoie rien, à part si l'objet possède un champ « introduction ». Il serait préférable d'avoir la vraie introduction calculée par SPIP en fonction des autres champs.

Fonctionnement actuel

La balise #INFO_xxx renvoie tout simplement le champ « xxx » de l'objet, s'il existe.
Les cas particuliers sont gérés de 2 façons :

Solution

Ce PR ajoute donc une fonction generer_introduction_entite pour prendre en charge les introductions.
Cette fonction est mutualisée entre la balise normale #INTRODUCTION et #INFO_INTRODUCTION.
En conséquent, une partie des choses qui étaient faites dans #INTRODUCTION est déportée dans cette fonction.

Pour résumer, voici l'ordre d'appel et le rôle des balises et fonctions :

  1. #INTRODUCTION / #INFO_INTRODUCTION : récupère les données brutes (champs textes, paramètres longueur et suite)
  2. generer_introduction_entite() : normalise les données (tri dans les champs de texte, normalisation des paramètres longueur et suite)
  3. filtre_introduction_dist() : construit l'introduction

Limites

  1. On ne peut pour l'instant pas passer de paramètre supplémentaires à #INFO_xxx, donc pas de longueur et de suite.
  2. propre est déjà fait dans le calcul du fitre introduction, donc l'étoile n'a aucun effet (cf. commentaire).
  3. On ne connaît pas le $connect avec #INFO_xxx, cf. commentaire

Tests

Testé les cas suivants, tout fonctionne :

  • #INFO_INTRODUCTION{article,#ID_ARTICLE}
  • #INTRODUCTION
  • #INTRODUCTION{100, ...}
  • #INTRODUCTION{...}
(Reprise de la PR !5 qui est en rade) **Objectif** Faire fonctionner la balise `#INFO_INTRODUCTION` de la même façon que `#INTRODUCTION` Actuellement, cette balise ne renvoie rien, à part si l'objet possède un champ « introduction ». Il serait préférable d'avoir la vraie introduction calculée par SPIP en fonction des autres champs. **Fonctionnement actuel** La balise `#INFO_xxx` renvoie tout simplement le champ « xxx » de l'objet, s'il existe. Les cas particuliers sont gérés de 2 façons : * Certains sont gérés en interne : la date et le titre * Les autres peuvent avoir des traitements personnalisés en créant des fonctions [generer_TRUC_TYPE](https://git.spip.net/SPIP/spip/src/branch/master/ecrire/inc/filtres.php#L4282) ou [generer_TRUC_entite](https://git.spip.net/SPIP/spip/src/branch/master/ecrire/inc/filtres.php#L4285) **Solution** Ce PR ajoute donc une fonction `generer_introduction_entite` pour prendre en charge les introductions. Cette fonction est mutualisée entre la balise normale `#INTRODUCTION` et `#INFO_INTRODUCTION`. En conséquent, une partie des choses qui étaient faites dans `#INTRODUCTION` est déportée dans cette fonction. Pour résumer, voici l'ordre d'appel et le rôle des balises et fonctions : 1. `#INTRODUCTION` / `#INFO_INTRODUCTION` : récupère les données brutes (champs textes, paramètres `longueur` et `suite`) 2. `generer_introduction_entite()` : normalise les données (tri dans les champs de texte, normalisation des paramètres `longueur` et `suite`) 3. `filtre_introduction_dist()` : construit l'introduction **Limites** 1. On ne peut pour l'instant pas passer de paramètre supplémentaires à `#INFO_xxx`, donc pas de `longueur` et de `suite`. 2. propre est déjà fait dans le calcul du fitre `introduction`, donc l'étoile n'a aucun effet (cf. [commentaire](https://git.spip.net/SPIP/spip/src/branch/master/ecrire/public/balises.php#L844)). 3. On ne connaît pas le $connect avec `#INFO_xxx`, cf. [commentaire](https://git.spip.net/SPIP/spip/src/branch/master/ecrire/inc/filtres.php#L4297) **Tests** Testé les cas suivants, tout fonctionne : * `#INFO_INTRODUCTION{article,#ID_ARTICLE}` * `#INTRODUCTION` * `#INTRODUCTION{100, ...}` * `#INTRODUCTION{...}`
tcharlss added 1 commit 2 weeks ago
07dd2965ea Ticket #4291 : faire fonctionner la balise #INFO_INTRODUCTION de la même façon que #INTRODUCTION.
cerdic commented 1 week ago
Poster
Owner

Ça me gêne un peu d'introduire une #INFO_INTRODUCTION qui ne supporte pas les paramètres longueur et suite. Je suppose qu'on peut adresser ça en définissant une balise qui collecte ces 2 arguments en plus du objet et id_objet de la balise generique #INFO_.

Enfin, il faudrait éviter que ce qu'on faisait avant à la compilation sur #INTRODUCTION soit maintenant fait à chaque calcul :

  • le trouver_table
  • la recuperation de la longueur de coupe
Ça me gêne un peu d'introduire une `#INFO_INTRODUCTION` qui ne supporte pas les paramètres longueur et suite. Je suppose qu'on peut adresser ça en définissant une balise qui collecte ces 2 arguments en plus du objet et id_objet de la balise generique `#INFO_`. Enfin, il faudrait éviter que ce qu'on faisait avant à la compilation sur #INTRODUCTION soit maintenant fait à chaque calcul : - le trouver_table - la recuperation de la longueur de coupe
Poster
Owner

Questionnement : plutôt que définir une balise dédiée en plus, est-ce qu'on ne pourrait pas dans la balise générique INFO_XXX prendre en compte les arguments supplémentaires si on en donne :

  • s'il y a des choses au-dela de objet/id_objet, on les récupère aussi
  • par défaut ça fait rien, puisque le comportement de base n'en fait rien
  • mais s'il existe une fonction implémentant telle info précise generer_XXX_entite alors on lui passe ces arguments en plus aussi, après les arguments obligatoires

Et donc là en l'occurence, generer_introduction_entite aurait generer_introduction_entite($id_objet, $objet, $select, $longueur, $suite)

Questionnement : plutôt que définir une balise dédiée en plus, est-ce qu'on ne pourrait pas dans la balise générique INFO_XXX prendre en compte les arguments supplémentaires si on en donne : - s'il y a des choses au-dela de objet/id_objet, on les récupère aussi - par défaut ça fait rien, puisque le comportement de base n'en fait rien - mais s'il existe une fonction implémentant telle info précise `generer_XXX_entite` alors on lui passe ces arguments en plus aussi, après les arguments obligatoires Et donc là en l'occurence, `generer_introduction_entite` aurait `generer_introduction_entite($id_objet, $objet, $select, $longueur, $suite)`
cerdic commented 1 week ago
Poster
Owner

Dans tous les cas la balise #INFO_xx appelle generer_info_entite() qui ensuite délègue éventuellement.

Il faut donc gérer les arguments supplémentaires eventuels via un tableau d'args je pense qu'on ajoute à generer_info_entite() et qui est ignoré par défaut et passe en splat sur les fonction de délégation si il y en a alors...

Enfin au choix l'un ou l'autre, mais je pense qu'il serait bon de traiter le problème d'emblée qu'on ait au moins un fonctionnement cohérent de l'ensemble

Dans tous les cas la balise `#INFO_xx` appelle `generer_info_entite()` qui ensuite délègue éventuellement. Il faut donc gérer les arguments supplémentaires *eventuels* via un tableau d'args je pense qu'on ajoute à `generer_info_entite()` et qui est ignoré par défaut et passe en splat sur les fonction de délégation si il y en a alors... Enfin au choix l'un ou l'autre, mais je pense qu'il serait bon de traiter le problème d'emblée qu'on ait au moins un fonctionnement cohérent de l'ensemble
Poster
Owner

bé oui, on dit pareil donc :)
ça doit être générique, dès qu'il y a des args en plus à la balise squelette, on les récupère et passe dans les fonctions suivantes

bé oui, on dit pareil donc :) ça doit être générique, dès qu'il y a des args en plus à la balise squelette, on les récupère et passe dans les fonctions suivantes
This pull request can be merged automatically.
This branch is out-of-date with the base branch
You are not authorized to merge this pull request.
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No Assignees
3 Participants
Notifications
Due Date

No due date set.

Dependencies

This pull request currently doesn't have any dependencies.

Loading…
There is no content yet.