[spip-dev] demande de modification

Bonsoir,

Tout d'abord, merci à toute l'équipe pour son magnifique travail
dans un esprit bien apprécié.

Je voudrais ici demander que la base spip ait un nouveau champ
dans la table spip_rubrique (et spip_article). Par exemple:
critere varchar(10)

Pourquoi?

Suivant les rubriques, je peux vouloir trier les sous-rubriques
selon un ordre précis. C'est parfois important pour de la
documentation. J'ai bien regardé tous les champs de la table
spip_rubrique sans en trouver un qui puisse répondre à ce besoin.

J'ai alors bricolé une solution en ajoutant "<!-- i -->" dans
descriptif. Descriptif car c'est le champ le moins utilisé.
Malheureusement, ceci ne passe pas car "<!--" est transformé
en "<&nbsp;!--" par spip (ceci est à mon avis un bug, voir indra).
Je suis donc forcée, chaque fois que je veux référencer "DESCRIPTIF"
(sauf pour le tri) de le remplacer par "DESCRIPTIF*".

On m'a dit que je me cassais la tête et qu'il y avait plus simple.
De rajouter "0i. " au début du titre, et de remplacer "#TITRE"
(sauf pour le titre) par "[(#TITRE|supprimer_numero)]".

Ces deux solutions ne sont belles, ni l'une ni l'autre. Ce qu'on
peut appeler un contournement d'obstacle.

Et ce contournement joue, à mon avis, en défaveur de SPIP.
En effet, une des raisons du choix de SPIP est que toutes les
données sont dans une base de donnée. Or, mettre dans une base
de donnée des informations cachées non prévues à cet effet
n'est jamais recommandable. Pire. Lors de l'extraction des
information de la base pour en faire autre chose (peu importe
quoi, y compris du XML), il faudra sans cesse traîner ce boulet
de ces gliglis qui traînent là. Un ver... difficile de s'en
débarasser.

Donc un champ supplémentaire serait la solution propre, de mon
point de vue. Si SPIP n'avait pas de base de donnée, aurait-il
la même force? Nous savons tous que les outils informatiques
changent sans cesse mais que ce qui est dans des tables survit,
se transforme, etc.

A moins que je sois mal informée, il n'est pas possible de rajouter
soi-même un champ sans se détacher du projet spip. Et il ne semble
vraiment pas y avoir de solution propre.

En lisant les questions, on voit que ce champ pourrait servir
à d'autres pour d'autres solutions. C'est dans ce sens que je
pense à un champ "critère" qui serait plus général.

Merci de me dire ce qu'en pense l'équipe. Je suis pleine d'espoir...

        Anne

P.S. Si je dis que la fait de transformer "<!--" en "<&nbsp;!--"
est un bug, c'est que spip autorise l'html directement dans les
textes. Or, <!-- ceci est un commentaire --> est du pur html.
Et je ne peux l'utiliser dans mes rubriques ou mes articles,
alors que c'est parfois bien utile. Je l'utilise moi-même bien
souvent dans de la documentations. Les commentaires sont ce qu'il
y a de plus précieux.
En plus, je ne vois pas quelle partie du code fait cette trans-
formation "!" --> " !" sinon je pourrais au moins patcher mon code
en attendant... Il faut dire que je suis toute nouvelle dans
la communauté des utilisatrices de spip...

Bonsoir,

pour trier des rubriques, il suffit de numéroter le titre

1. rubrique toto
2. rubrique tata
...

ensuite, faire une boucle pour afficher la liste des rubriques :
<BOUCLE_sousrub (RUBRIQUES) {par titre}
#TITRE
</BOUCLE_sousrub>

et pour éviter que le numéro du titre apparaisse, modifier la 2ème ligne
comme suit :
[(#TITRE|sans_numero)]

c'est-y pas plus simple que de modifier Spip ?
mmm?

Thierry

Arf, excuses-moi, j'avais pas lu jusqu'au bout, tu connais donc déjà
cette solution.

@ Anne Possoz <anne.possoz@epfl.ch> :

On m'a dit que je me cassais la tête et qu'il y avait plus simple.
De rajouter "0i. " au début du titre, et de remplacer "#TITRE"
(sauf pour le titre) par "[(#TITRE|supprimer_numero)]".

Tu peux faire la même chose avec le descriptif plutôt qu'avec le titre :
{par num descriptif} et utiliser [(#DESCRIPTIF|supprimer_numero)]

Or, mettre dans une base de donnée des informations cachées non prévues à
cet effet n'est jamais recommandable. Pire. Lors de l'extraction des
information de la base pour en faire autre chose (peu importe quoi, y
compris du XML), il faudra sans cesse traîner ce boulet de ces gliglis qui
traînent là. Un ver... difficile de s'en débarasser.

On a déjà ce problème avec le backend, où les articles numérotés
apparaissent avec leur numéro... pas joli en effet.

Donc un champ supplémentaire serait la solution propre, de mon
point de vue.

Si on te suit, spip_rubriques passe de 3 champs texte (titre, texte,
descriptif) à 4 champs. Qu'est-ce que ça a de plus propre ? Si tu utilises
un des trois champs pour l'ordre, il t'en reste deux... Donc, en bonne
logique, ce que tu souhaites c'est avoir 4 champs texte au lieu de 3. Ca
n'est pas exactement la même question que celle que tu soulèves.

En lisant les questions, on voit que ce champ pourrait servir
à d'autres pour d'autres solutions. C'est dans ce sens que je
pense à un champ "critère" qui serait plus général.

Peut-être que d'autres voudraient 5 ou 6 champs, d'autres encore 10... (ça a
été demandé pour les spip_articles). Où placer les limites ?

En plus, je ne vois pas quelle partie du code fait cette trans-
formation "!" --> " !"

la fonction propre() (ecrire/inc_texte)

% % % %

Bref, l'histoire des numéros n'est pas satisfaisante, mais l'ajout d'un
champ n'est pas vraiment la solution.

Je peux te suggérer une autre piste : créer un groupe de mots-clés nommé
"rang", de type "unique" et "obligatoire", avec les mots "1", "2", "3",
etc... à chaque rubrique, attribuer le mot correspondant à son rang, puis
trier {par titre_mot} ; seul problème, SPIP ne peut pas, actuellement, trier
{par titre_mot}... Donc, si c'est ça la bonne piste, il faudra patcher spip
pour qu'il réussisse à faire ce tri. Mais il faudra aussi réviser
l'interface des mots-clés pour ce type de "mots d'ordre" :wink:

-- Fil

Si on te suit, spip_rubriques passe de 3 champs texte (titre, texte,
descriptif) à 4 champs. Qu'est-ce que ça a de plus propre ?

Je peux te suggérer une autre piste : créer un groupe de mots-clés nommé

"rang",

je peux te suggérer une autre piste Fil :wink: , ajouter un champ rang
numérique et facultatif (valeur nulle autorisée dans la base ) et dans
l'interface graphique (possibilité de le masquée à l'aide d'une métadonnée).

Amicalement,

Yves