Carnet Wiki

Proposition de fonctionnement alternatif pour l’insertion des documents

Version 11 — October 2010 Joseph

Le fonctionnement des modèles pour l’insertion des documents soulève régulièrement des questions, notamment parce <doc13>, <img13> ou encore <emb13> ne produisent pas le même résultat et que ce résultat, pour les images, dépend du fait d’être dans le portfolio ou non.

Comme l’écrit Romy,

<blockquote class="spip">

Qui sait expliquer clairement la différence entre les « images » et les « documents » de SPIP ? Quand faut-il utiliser le raccourci d’insertion <img314>, celui <doc314> ou encore <emb314> ? et quelles sont précisément leurs différences ? Pourquoi est-ce si difficile à retenir ?

</blockquote>

(Source : http://romy.tetue.net/mais-ou-est-p...)

Sur la liste SPIP-Zone, Cédric expliquait :

<blockquote class="spip">

Le sujet est un serpent de mer, contraint par la compatibilté ascendante. Pour le moment on a fait le choix de ne pas la casser, ce qui a des limites.

</blockquote>

(Source : http://permalink.gmane.org/gmane.co...)

Avant de poursuivre la discussion, on pourra lire la documentation officielle à cette adresse http://www.spip.net/fr_article3715.html.

Objectif

La présente proposition vise à proposer une nouvelle série de modèles ayant un comportement unifié et indépendant du mode des images . Ces modèles seront implémentés dans un premier temps dans un plugin dédié ([ modeles_media->http://zone ([-> http://zone .spip.org/trac/spip-zone/browser/_plugins_/modeles_media]) avant d’envisager une éventuelle intégration au core.

Ce plugin fournira également une aide en ligne actualisée ainsi qu’une aide à l’insertion des modèles (au travers du plugin inserer_modeles en cours de développement).

Les modèles existants (doc, emb, img, image, audio, video, text, application) ne seront pas modifiés afin d’assurer la rétrocompatibilité.

Un unique modèle

Reprenant l’idée suggérée par Romy Têtue, un seul modèle sera à retenir avec un appel unifié de la forme :

<mediaXX|variante|alignement|parametres> où XX représente l’identifiant du document.

Volontairement, afin de distinguer le nouveau système du système actuel, on n’a pas repris <doc>.

Syntaxe générale

<img8784 >

Audio et Vidéo

Trois variantes principales

Les différentes variantes

icone, vignette et embed

texte Tableau à compléter remplir

voir plus loin pour les variantes secondaires

Paramètres pris en compte par chaque variante

| Variante | Description |
| logo | Affiche le logo du document [1] |
| icone | Affiche l’icône du document [2] |
| vignette | Affiche une vignette du document (vignette personnalisée, sinon calculée à partir de l’image) [3] |
| embed | Incrustation du document en fonction de son groupe MIME [4] |
| image | Incrustation d’une image (groupe MIME : image) |
| audio | Incrustation d’un son (groupe MIME : son) |
| video | Incrustation d’une vidéo (groupe MIME : video) |
| text | Incrustation d’un document texte du groupe MIME text |
| application | Incrustation d’un document du groupe MIME application |

Alignement

L’alignement se précise comme actuellement avec |left, |center et |right.

Exemple : <media34|icone|right>

Afficher une légende

Params : | Paramètre | logo | icone | vignette | image | audio | video | text | application |

legende, Oui Oui Oui Oui Oui Oui Oui Oui titre, Oui Oui Oui Oui Oui Oui Oui Oui descriptif, credits , type , poids . Oui Oui Oui Oui Oui Oui Oui Oui class Oui Oui Oui Oui Oui Oui Oui Oui

Texte à compléter

Ajouter un lien



Params : lien, titre_lien

texte à compléter

Rappeler syntaxe possible [<media12|icone>->rub38].

Spécifier la taille



Params : taille, hauteur, largeur

texte à compléter

Personnaliser le texte alternatif



Params : alt

texte à compléter

Récapitulatif des Les autres paramètres



Mettre à jour le table

Paramètre Description
legende - paramètre absent, la légende (titre + descriptif + crédits) n’est pas affichée.
- |legende pour afficher la légende.
titre optionnel, permet de personnaliser le titre si la légende est affichée (exemple : <media32|logo|legende|titre=Un autre titre>)
descriptif - optionnel, permet de personnaliser le descriptif
- |descriptif=non pour ne pas afficher le descriptif
lien - paramètre absent, pas de lien sur l’icône, la vignette ou l’image
- |lien pour ajouter un lien pointant sur le document
- |lien=http://monsite.net ou |lien=rub2 pour spécifier un lien particulier

| lien_class | Optionnel , permet d’ajouter une classe CSS sur le lien |
| class | Optionnel, permet d’ajouter une ou plusieurs classes CSS sur le document |
| alt | Optionnel, permet de personnaliser le texte alternatif |

lang Optionnel , permet de spécifier la langue de la légende et du texte alternatif
taille Optionnel, peut prendre quatre valeurs : icone vignette , petit, moyen et grand, correspondant à trois tailles standards (paramétrables dans l’interface privée, par défaut 52px, 100 px, 250px, 500px [5]) ou bien une taille maximum en pixels
hauteur Optionnel, une alternative au paramètre taille, permettant de définir une hauteur spécifique en pixels
largeur Optionnel, une alternative au paramètre taille, permettant de définir une largeur spécifique en pixels [6]

Tableau à compléter, notamment pour les contrôleurs audio et video

Cas du modèle appelé sans variante

Il peut arriver que le modèle soit appelé sans spécifier de variante (exemple : <code><media24></code code><media24|left></code >).

Dans cette situation indéterminée, plutôt que de ne rien afficher, le modèle retournera l’équivalent de <code><media24|vignette|legende|lien|taille=icone></code code><media24|logo|left|legende|lien >.Autrement, en l’absence de variante, on affichera le logo du document avec sa légende et un lien pointant vers le document. C’est un comportement similaire à celui de <doc24|left> [7].

Côté technique

Une variante par groupe MIME

Reprenant le fonctionnement actuel de <emb>, la variante media_embed.html sous-traitera le travail à plusieurs modèles en fonction du type MIME du document : media_image.html, media_audio.html, media_video.html, media_text.html et media_application.html.

Dès lors, il est possible d’utiliser également les variantes de la forme <mediaXX|image>, <mediaXX|audio>, <mediaXX|video>, <mediaXX|text> et <mediaXX|application>.

<mediaXX|embed> et <mediaXX|image> produiront exactement le même résultat si XX est une image. [8].

Permettre une variante par extension

Il est possible de définir une variante par extension sous la forme modeles/media_groupeMIME_extension.html. Lors de l’incrustation d’un fichier, on vérifiera l’existence d’un modèle spécifique pour cette extension (modeles/media_groupeMIME_extension.html), sinon on utilisera le modèle générique du groupe MIME modeles/media_groupeMIME.html.

Pour les images, on pourrait ainsi avoir un modèle générique modeles/media_image.html et un modèle spécifique pour le SVG : modeles/media_image_svg.html.

Ainsi, avec le lecteur multimedia, pour la prise en charge des mp3, le plugin pourrait proposer un modèle media_audio_mp3.html qui appelle le player fourni par le plugin. Dans mon article, je mets juste <media123|embed> qui saura tout seul trouver le bon modèle. Maintenant, je désactive le lecteur multimedia, <media123|embed> sera toujours pris en charge par le modèle générique modeles/media_audio.html qui incrustera le MP3 dans une balise <object>. Ce qui est mieux qu’une simple icone dans le cas présent. [9].

Classes ajoutées systématiquement

Quelque soit la variante utilisée, on ajoutera, en plus des classes usuelles spip_documents, spip_document_#ID_DOCUMENT et spip_documents_#ENV{align}, les classes suivantes : media_#ENV{variante} et media_#ENV{variante}_#EXTENSION.

Génération des vignettes

Expliquer les filtres media_generer_vignette_ext.

Faut-il faire évoluer les modèles audio et video pour prendre en compte les nouvelles balises HTML 5, éventuellement en intégrant une solution de compatibilité telle que OIplayer ?