[spip-dev] Faire évoluer le mode des documents

Aujourd'hui le champs mode des documents peut prendre trois valeurs : document, image et vignette.

La distinction entre mode=document et mode=image se traduit dans l'interface privé par déposer dans le portfolio (mode=document) ou retirer du portfolio (mode=image). Cette distinction a été notamment utilisé dans les squelettes les images que l'on souhaitait incruster dans un article et celle que l'on affichait à la fin du document.
Cependant, on dispose aujourd'hui du critère {vu} qui permet d'identifier les documents incrustés dans l'article.

Par ailleurs, le critère {vu} est renseigné dans la table spip_documents_liens. Il est donc calculé séparément pour chaque objet, ce qui est un plus puisqu'avec la médiathèque les documents peuvent très facilement être associés à plusieurs objets.

Or, dans un contexte où les documents peuvent être associés à plusieurs objets, la distinction entre mode=image et mode=document au niveau du document a peu de sens. Cela est utilisé dans les squelettes pour modifier l'affichage au niveau d'un objet. On devrait donc pouvoir spécifier, pour chaque objet avec lequel une image est associée, si elle est dans le portfolio.

Dès lors, pourrait-on ajouter un champs portfolio à la table spip_documents_liens pouvant prendre deux valeurs (oui ou non) et précisant simplement si, pour cet objet, on a placé l'image dans le portfolio ou non. Le champs mode de la table spip_documents ne prendrait dans ce contexte que deux valeurs : document ou vignette.

Pour les modèles fournis par SPIP, on peut maintenir la compatibilité ascendante par une petite mise à jour de ces derniers.
Pour les squelettes, cela induit la nécessité d'une petite mise à jour, mais pas plus importante que les changements de syntaxe introduit en SPIP 2.1 par exemple.

Enfin, ce sont avant tout les squelettes qui déterminent le traitement qui est fait aux images selon leur présence ou non dans le portfolio. Peut-on envisager une option paramétrable via un fichier d'options permettant de spécifier si, en matière d'interface, les images qui ne sont pas présentent dans le portfolio doivent être présentées séparément des autres documents (comme actuellement) ou non (pour les squelettes qui traitent les images non présentent dans le portfolio comme un document comme un autre et pour lesquels la notion d'illustration a peu de sens.) ?

Cordialement

Joseph

(mail du 28 septembre qui visiblement n'est jamais parti.)

Deux remarques liées à cette nouvelle formulation :

1. Si on évolue vers une notion plus riche de portfolio, Romy
proposait de faire *des* portfolios, pas forcément liés à un article,
ou encore permettre de lier plusieurs portfolios à un même article.
Tant qu'à faire de refondre, autant voir grand :slight_smile:

2. tu écris : "Le champs mode de la table spip_documents ne prendrait
dans ce contexte que deux valeurs : document ou vignette."
=> je conçois qu'on abandonne la valeur "image" pour les nouveaux
documents (si tant est qu'on arrive à une interface qui permet autant
de choses), mais alors :
-- que deviendraient les images d'illustration d'un site existant ?
elles prendraient la valeur "vignette" ? pourquoi dès lors ne pas leur
conserver la valeur "image" et traiter cette valeur comme équivalente
?
-- comment fait-on concrètement (interface) pour mettre une image
d'illustration dans un article, sans qu'il apparaisse (par exemple) en
pièce jointe dans les flux rss ?
-- si tu te bases sur les spip_liens_documents pour savoir si un doc
est dans le portfolio, comment élimines-tu les images d'illustration
de la "liste de toutes les photos" ? en te basant sur la taille du
fichier ?...

Tu sembles dire que la difficulté est celle de la structure des
données. Mais en fait c'est surtout un problème d'interface.

Or là j'ai l'impression qu'on retombe sur l'interface actuelle
("déposer dans le portfolio"), qui est critiquée parce que pas claire.

Est-ce qu'on peut par ailleurs imaginer une interface bien plus smart
à base de drag/drop dans la zone de texte ? Là clairement si je drop
une petite image elle peut apparaître plein pot (mais que se
passe-t-il si je drop une photo de 2000px de large ? oups ? on la
retaille automatiquement ? on stocke l'original ?)

-- Fil

(mail du 28 septembre qui visiblement n'est jamais parti.)

Deux remarques liées à cette nouvelle formulation :

1. Si on évolue vers une notion plus riche de portfolio, Romy
proposait de faire *des* portfolios, pas forcément liés à un article,
ou encore permettre de lier plusieurs portfolios à un même article.
Tant qu'à faire de refondre, autant voir grand :slight_smile:

De mémoire, dans la proposition de Romy, elle avait utilisée le terme d'album, un album étant un groupement d'objet. Elle proposait un modèle associé <album12>. Je ne me souviens pas si elle évoquait la possibilité de joindre un album à objet (un article par exemple).

2. tu écris : "Le champs mode de la table spip_documents ne prendrait
dans ce contexte que deux valeurs : document ou vignette."
=> je conçois qu'on abandonne la valeur "image" pour les nouveaux
documents (si tant est qu'on arrive à une interface qui permet autant
de choses), mais alors :
-- que deviendraient les images d'illustration d'un site existant ?
elles prendraient la valeur "vignette" ? pourquoi dès lors ne pas leur
conserver la valeur "image" et traiter cette valeur comme équivalente
?
-- comment fait-on concrètement (interface) pour mettre une image
d'illustration dans un article, sans qu'il apparaisse (par exemple) en
pièce jointe dans les flux rss ?
-- si tu te bases sur les spip_liens_documents pour savoir si un doc
est dans le portfolio, comment élimines-tu les images d'illustration
de la "liste de toutes les photos" ? en te basant sur la taille du
fichier ?...

Qu'appelles-tu les images d'illustration ? S'il s'agit des images qui sont incrustées dans l'article, il y a le critère vu qui permet de connaître les images (et tout autre doc) appelées dans l'article.

A titre personnel, j'ai souvent été perturbé par le fait que les images étaient soient des illustrations, soient dans un portfolio, mais jamais considérées comme un simple document attaché à un article (au même titre qu'un PDF).

Je ne connais pas assez bien l'historique de SPIP, mais, si j'ai bien lu La boucle DOCUMENTS - SPIP, le mode image a été mis en place sous la 1.4 pour distinguer initialement les images que l'on souhaitait incruster dans l'article (illustration) des images que l'on souhaite joindre à l'article (considérées alors dans le portfolio).

La logique du squelette dist reprend cela :
Les images illustrations ne sont pas jointes à l'article.
Les autres images sont affichées dans un portfolio à la fin de l'article, séparément des autres documents.

Ceci dit, cela n'empêche pas qu'une image puisse être placées dans les illustrations sans être appelée dans l'article (elle sera alors affichée nulle part) ou bien qu'une image soit dans le portfolio mais aussi incrsutée dans l'article (elle sera alors affichée deux fois, dans l'article et dans le portfolio).

Entre temps, il y a le critère {vu} qui a fait son apparition ({vu} - SPIP) mais je ne sais pas à partir de quelle version de SPIP, critère dont il n'est d'ailleurs pas fait mention sur la page de la boucle DOCUMENTS.

Ce critère repère les documents qui sont appelés dans l'article (ou la brève, ou la rubrique...) via un des trois modèles <doc>, <img> ou <emb> (à ce propos il faudrait un pipeline pour ce critère voir autre mail).

Dès lors, il serait possible de se passer de la distinction illustration/portfolio pour les images, et d'exclure simplement, à la fin de l'article les images qui ont été incrustées dans l'article.

Le squelette Zpip-dist utilise ce critère {vu}. Tout document qui est incrusté (<img> ou <emb>) ou affiché (<doc>) dans l'article est exclu de la liste du portfolio et des documents joints à la fin. Par contre, le mode de l'image influe puisque les images en mode=image (illustration) sont également exclues de la liste des documents joints.

Au passage, on remarquera que ces deux squelettes utilise {extension IN png,jpg,gif} pour sélectionner les images, ne tenant du coup pas compte des fichiers BMP et TIF qui, d'après la table spip_types_documents, peuvent également appartenir au portfolio.

D'autres squelettes peuvent très bien avoir implémenter les choses différemment.

Dans certains, on peut vouloir considérer une image comme un simple document joint, au même titre qu'un PDF par exemple, et de souhaiter l'afficher de la même manière (donc en dehors du portfolio mais dans la liste des documents).

Dans un autre squelette (dont j'ai oublié le nom), le fonctionnement était :

- Une image est inclue dans l'article (identifiée avec vu=oui et considérée alors comme une illustration) => on ne l'affiche pas à la fin de l'article
- Une image n'est pas inclue dans l'article et déposée dans le portfolio => elle est affichée à la fin de l'article dans une présentation de type portfolio
- Une image n'est pas inclue dans l'article et n'est pas déposée dans le portfolio => elle est affichée parmi la liste des autres documents joints

Ce squelette ne retenait du mode de l'image que la notion de portfolio (dedans ou dehors). La notion d'illustration dépendant pour sa part du critère {vu}.

Si on se base sur ce critère, c'est très facile concrètement d'exclure dans un flux RSS (pour reprendre ton exemple) les images directement incrustées dans le texte.

Tu sembles dire que la difficulté est celle de la structure des
données. Mais en fait c'est surtout un problème d'interface.

Pas seulement. Avec l'arrivée de la médiathèque (mais c'était déjà possible avec certains plugins), un document devient indépendant de l'objet auquel il est lié et surtout, il peut être lié à plusieurs objets.

Autrement dit, une image n'a pas forcément le même rôle dans l'article 2 et l'article 4. Elle peut être incrustée dans le premier et simplement jointe au second.

Le critère {vu} est calculé objet par objet et cette information est stockée à juste titre dans spip_documents_liens.

Le mode d'un document est stocké dans spip_documents. Ce champs permet notamment de distinguer les vignettes (et il bien sa place dans spip_documents). Il est aussi utilisé pour distinguer les images dans le portfolio ou non. Or cette information ne dépend pas à mon avis du document proprement dit mais de son usage dans un article.

Par ailleurs, une image est soit dans le portfolio soit considérée comme une illustration. Or, il me semble pas que les deux concepts soit complémentaires. Une image est incrustée ou non dans un document (donc utilisée ou non comme image d'illustration, calculé automatiquement). Si ce n'est pas le cas, souhaite t on la présenter dans un portfolio ou comme un simple document joint (choix de présentation du rédacteur).

Or là j'ai l'impression qu'on retombe sur l'interface actuelle
("déposer dans le portfolio"), qui est critiquée parce que pas claire.

L'interface n'est pas claire car les concepts, et du coup les traitements faits par les squelettes, ne le sont pas pour le rédacteur de base.

Est-ce qu'on peut par ailleurs imaginer une interface bien plus smart
à base de drag/drop dans la zone de texte ? Là clairement si je drop
une petite image elle peut apparaître plein pot (mais que se
passe-t-il si je drop une photo de 2000px de large ? oups ? on la
retaille automatiquement ? on stocke l'original ?)

-- Fil

Pourquoi faudrait-il retailler l'image ? Je ne vois pas où est le soucis. Si tu veux parler des images qui sont incrustées dans un article, c'est en général le squelette qui prévoit sont redimensionnement en utilisant |image_reduire.

Tous les squelettes ne gèrent pas les documents de la même façon et plusieurs manières de les présenter peuvent exister selon le squelette.
Ma question serait plutôt de savoir comment faire pour que l'interface puisse être cohérente entre l'espace privé et l'espace publique.

Je sais bien que la question de la compatibilité ascendante est complexe. Cela étant dit, je ne sais pas non plus quels sont les usages des rédacteurs de SPIP. A titre personnel, je n'ai jamais eu de comportement de rédaction unifié avec la question du mode des images car je ne l'ai jamais vraiment compris jusqu'à ce que, dans le cadre de la réflexion sur les modèles de documents, je me plonge dedans.
D'autant plus que le comportement des images et documents joints change parfois d'un squelette à un autre (cf. exemples plus haut).

Je ne dis pas avoir la solution miracle. Mais il me semble qu'une réflexion partagée sur le sujet serait la bienvenue.

Cordialement

Joseph

C'est un besoin différent et supplémentaire. Le truc par défaut est qu'on joint des documents à des objets (articles, rubriques, etc). Après un autre plugin peut créer la notion d'album, pour faire des groupes indépendants d'images, qu'on peut ensuite afficher (avec un modèle) et/ou lier à d'autres objets.

(mail du 28 septembre qui visiblement n'est jamais parti.)

Deux remarques liées à cette nouvelle formulation :

1. Si on évolue vers une notion plus riche de portfolio, Romy
proposait de faire *des* portfolios, pas forcément liés à un article,
ou encore permettre de lier plusieurs portfolios à un même article.
Tant qu'à faire de refondre, autant voir grand :slight_smile:

De mémoire, dans la proposition de Romy, elle avait utilisée le terme d'album, un album étant un groupement d'objet. Elle proposait un modèle associé <album12>. Je ne me souviens pas si elle évoquait la possibilité de joindre un album à objet (un article par exemple).

Si si ! C'est l'idée : pourvoir « constituer des albums indépendants, de façon à pouvoir insérer plusieurs albums différents dans le texte d’un même article » (cf. : http://romy.tetue.net/mais-ou-est-passee-la-mediatheque-de-spip )

J'avais volontairement employé un terme nouveau pour marquer la différence d'avec le portfolio de SPIP, qui est une chose plus intermédiaire (que je n'ai jamais très bien comprise).

2. tu écris : "Le champs mode de la table spip_documents ne prendrait
dans ce contexte que deux valeurs : document ou vignette."
=> je conçois qu'on abandonne la valeur "image" pour les nouveaux
documents (si tant est qu'on arrive à une interface qui permet autant
de choses), mais alors :
-- que deviendraient les images d'illustration d'un site existant ?
elles prendraient la valeur "vignette" ? pourquoi dès lors ne pas leur
conserver la valeur "image" et traiter cette valeur comme équivalente
?
-- comment fait-on concrètement (interface) pour mettre une image
d'illustration dans un article, sans qu'il apparaisse (par exemple) en
pièce jointe dans les flux rss ?

Je ne suis pas certaine de comprendre...
Actuellement, on va dans le fichier backend et on programme ce qu'on veut (perso, sauf cas particulier, je vire tout envoi de doc en dehors du #TEXTE de l'article). Tu voudrais que cela soit paramétrable directement depuis l'espace privé ?

Tu sembles dire que la difficulté est celle de la structure des
données. Mais en fait c'est surtout un problème d'interface.

Or là j'ai l'impression qu'on retombe sur l'interface actuelle
("déposer dans le portfolio"), qui est critiquée parce que pas claire.

De mon point de vue, le stockage en base du mode d'affichage (image/document) est une erreur. C'est cela qui est difficile à comprendre : pourquoi un fichier X ne peut-il pas être une image d'illustration ici ET faire partie du portfolio là-bas ? Je vois mal quelle interface pourrait palier ce problème !

Ceci dit, je ne suis pas pour la suppression des modes (image/document), afin que ceux qui s'en servent ne voient pas leur site leur péter dans les mains sur ce point. Mais je pense qu'il faut ignorer les modes (image/document) dans les évolutions en faisant reposer le choix du mode d'affichage sur autre chose (des paramètres du code d'insertion, par exemple), sinon on n'en sortira jamais.

-- Romy

2010/11/13 romy@rezo.net <romy@rezo.net>

De mon point de vue, le stockage en base du mode d’affichage (image/document) est une erreur. C’est cela qui est difficile à comprendre : pourquoi un fichier X ne peut-il pas être une image d’illustration ici ET faire partie du portfolio là-bas ?

J’ai ce même soucis très régulièrement, encore plus depuis que le choix est arbitraire en fonction d’une taille d’image.

Les rédacteurs ne comprennent pas ces décisions « magiques » prises à leur insu.

Je vois mal quelle interface pourrait palier ce problème !

Ceci dit, je ne suis pas pour la suppression des modes (image/document), afin que ceux qui s’en servent ne voient pas leur site leur péter dans les mains sur ce point. Mais je pense qu’il faut ignorer les modes (image/document) dans les évolutions en faisant reposer le choix du mode d’affichage sur autre chose (des paramètres du code d’insertion, par exemple), sinon on n’en sortira jamais.

Je pense que les modèles sont le meilleur moyen effectivement.

-Nicolas

J'ai ce même soucis très régulièrement, encore plus depuis que le choix
est arbitraire en fonction d'une taille d'image.

Les rédacteurs ne comprennent pas ces décisions "magiques" prises à leur
insu.

Tout à fait d'accord

Je pense que les modèles sont le meilleur moyen effectivement.

-Nicolas

Pour ma part, c'est la notion d'illustration qui, dans mes usages, me pose problème. Une image est soit incrustée via un modèle dans un article (ou autre) soit elle ne l'est pas. Et il y a le critère {vu} qui permet de détecter cela. Et idéalement, le modèle d'incrustation ne tient pas compte du mode du document.

Ensuite, il y a tous les documents que j'attache à un article et qui n'ont pas été appelés dans le texte de l'article. Pour les images dans ce cas là, personnellement je souhaite distinguer celle que je souhaite afficher dans un portfolio (avec des petites miniatures) et celles que je souhaite simplement lister comme un document joint au même titre que les autres.

Dans ce cas, la notion de portfolio est indépendante de celle d'illustration (càd inclu dans le doc) mais correspond juste à une modalité alternative de présentation à la fin de mon doc. Je ne souhaite pas que mes images soient automatiquement mis ou non dans le portfolio. A moi de choisir si je dépose ou non dans le portfolio.
Et mon choix pour l'article 5 doit être indépendant de mon choix pour l'article 8.

Personnellement, c'est le fonctionnement qui me conviendrait le mieux.
Mais tout le monde ne fonctionne pas de la même manière.

La question est donc de savoir s'il faut faire évoluer le fonctionnement de SPIP dans un seul sens, ou s'il est possible de faire évoluer la gestion des images par SPIP avec plusieurs options de configuration permettant à chacun de faire comme il le souhaite. (plus précisément, il me semble que les options permettraient surtout de mettre l'interface en adéquation avec le fonctionnement du squelette utilisé, puisque c'est au niveau des squelettes qu'on peut avoir plusieurs fonctionnements différents).

Cordialement

Joseph

ça a été retiré ça il me semble, justement (ou desactivé dans la médiathèque alors, je ne me souviens plus où je l’ai fait)

Cédric

ça a été retiré ça il me semble, justement (ou desactivé dans la médiathèque
alors, je ne me souviens plus où je l'ai fait)

Tu l'as retiré partout, ça ne peut donc perturber personne.

-- Fil

2010/11/15 Fil <fil@rezo.net>

ça a été retiré ça il me semble, justement (ou desactivé dans la médiathèque
alors, je ne me souviens plus où je l’ai fait)

Ah OK, cool.

Tu l’as retiré partout, ça ne peut donc perturber personne.

Ça perturbe toujours les gens qui n’ont pas mis à jour.

J’essaierai de retrouver un site où j’ai toujours ça pour voir la version.

-Nicolas

Tu l'as retiré partout, ça ne peut donc perturber personne.

Ça perturbe toujours les gens qui n'ont pas mis à jour.

Bah personnellement c'est son absence qui me perturbe.

-- Fil

2010/11/15 Fil <fil@rezo.net>

Tu l’as retiré partout, ça ne peut donc perturber personne.
Ça perturbe toujours les gens qui n’ont pas mis à jour.

Bah personnellement c’est son absence qui me perturbe.

Arf… :wink:

Mais tu es un utilisateur avancé, qui connait les mécanismes internes de SPIP.

A la limite, il faudrait que SPIP (ou Bibliothèque) dise à l’utilisateur ceci : « tiens, ton fichier a l’air plutôt volumineux, veux-tu le redimensionner, ou en faire un document ? ».

C’est la décision arbitraire et relativement masquée qui déroute.

-Nicolas

* Fil tapuscrivait, le 15/11/2010 17:59:

Tu l'as retiré partout, ça ne peut donc perturber personne.

Ça perturbe toujours les gens qui n'ont pas mis à jour.

Bah personnellement c'est son absence qui me perturbe.

Avec médiathèque, ça peut être remis via :
define('_LARGEUR_MODE_IMAGE', 799); // Voir http://permalink.gmane.org/gmane.comp.web.spip.zone/16461

Et un autre bien pratique :
define('_TITRER_DOCUMENTS', true); // Le titre des documents joints est automatiquement pris à partir du nom du fichier (avec mediatheque) ; Voir Connexion · GitLab

-- RealET

Ca serait cool d'avoir quelque part la liste complète des constantes de personnalisation de médiathèqe, voir même (on peut rêver) un petit formulaire de config.

Joseph

J'oubliais une autre piste : il est toujours possible de faire un plugin surchargeant mediathèque pour modifier son comportement à la marge.

Ainsi, on conserve le fonctionnement actuel tout en permettant, pour ceux qui le souhaite, un comportement alternatif, à utiliser en connaissance de cause.

Cordialement

Joseph