LINUX:MediaWiki - SMW - Prototype: Livres
But
Cet exemple concernera un embryon de gestion de livres. On crée un prototype à partir des outils fournis.
Cette application est composée de deux parties:
- les livres
- les collections regroupant des livres
Nous mettrons ces pages dans l'espace de noms "BIBLIO".
Procédure
Pour chacune de ces deux parties, on va créer les éléments suivants dans l'ordre:
- les propriétés
- le modèle
- le formulaire
- la catégorie
- l'encodage d'une page
Comme la description détaillée a été faite dans un article précédent sur les Adresses, on se concentrera sur l'essentiel.
Livres
Voici les différents noms qui seront utilisés:
- "Biblio" pour le modèle et le formulaire
- "BIBLIO:Biblio" pour la catégorie
- "BIBLIO:La vallée des cobras" pour l'exemple de page qui va utiliser les éléments précédents, la page de garde ayant été chargée
La création des objets est similaire à celle des adresses; nous ne reprenons que les écrans spécifiques aux livres.
Propriétés
On a besoin des propriétés suivantes à créer:
- le type de document que l'on nomme "Typedocument" de type "Texte" qui a quelques valeurs prédéfinies (livre, DVD, CD, revue et périodique)
- la catégorie de document que l'on nomme "Categoriedocument" de type "Texte" qui a quelques valeurs prédéfinies (BD, roman, science et jeux)
- le titre du livre que l'on nomme "Titre" de type "Texte"
- l'auteur du livre que l'on nomme "Auteur" de type "Texte"
- l'éditeur du livre que l'on nomme "Editeur" de type "Texte"
- la collection que l'on nomme "Collectionlivre" de type "Page"
- le n° de série dans la collection que l'on nomme "Numero" de type "Nombre"
- la référence ISBN que l'on nomme "ISBN" de type "Texte"
- l'image de la page de garde que l'on nomme "Imagegarde" de type "Page"
Modèle
On crée un modèle selon les données de l'écran ci-dessous. La partie "Agrégation" ne nous intéresse pas. Remarquons que trois propriétés peuvent avoir plusieurs valeurs (type de document, catégorie de document et auteur).
Formulaire
On crée un formulaire selon les données de l'écran ci-dessous.
Catégorie
On fait de même pour la création de la catégorie.
Premier encodage
On peut créer la première page que l'on a nommée "BIBLIO:La vallée des cobras". Notons que l'on va prendre comme convention que le nom de la page sera le même que le titre du livre. De même le nom de l'image de la page de garde portera le nom de la collection suivi du titre du livre séparés par un tiret; on rangera cette image dans l'espace de nom "Fichier:BIBLIO".
Voici la page d'encodage par le formulaire.
Et voici le résultat.
Note: Entre temps on a créé l'image de la page de garde.
Script du modèle
Voici le contenu du script généré pour le modèle.
<includeonly> {| class="wikitable" ! Type de document | {{#arraymap:{{{Typedocument|}}}|,|x|[[Typedocument::x]]}} |- ! Catégorie de document | {{#arraymap:{{{Categoriedocument|}}}|,|x|[[Categoriedocument::x]]}} |- ! Titre | [[Titre::{{{Titre|}}}]] |- ! Auteur | {{#arraymap:{{{Auteur|}}}|,|x|[[Auteur::x]]}} |- ! Editeur | [[Editeur::{{{Editeur|}}}]] |- ! Collection | [[Collectionlivre::{{{Collectionlivre|}}}]] |- ! Numéro | [[Numero::{{{Numero|}}}]] |- ! ISBN | [[ISBN::{{{ISBN|}}}]] |- ! Image de garde | [[Imagegarde::{{{Imagegarde|}}}]] |- ! Sujet | [[Sujet::{{{Sujet|}}}]] |- ! | {{#ask:[[Adresselien::{{SUBJECTPAGENAME}}]]|format=list}} |} [[Catégorie:BIBLIO:Biblio]] </includeonly>
Il n'y a pas de nouveau concept. Par contre la ligne qui appelle la fonction ""#ask:" s'y retrouve par défaut mais est inutile et non avenue.
Script du formulaire
Voici le contenu du script généré pour le formulaire.
<includeonly> <div id="wikiPreview" style="display: none; padding-bottom: 25px; margin-bottom: 25px; border-bottom: 1px solid #AAAAAA;"></div> {{{for template|Biblio}}} {| class="formtable" ! Type de document: | {{{field|Typedocument|input type=checkboxes}}} |- ! Catégorie de document: | {{{field|Categoriedocument|input type=checkboxes}}} |- ! Titre: | {{{field|Titre|input type=text}}} |- ! Auteur: | {{{field|Auteur|input type=text}}} |- ! Editeur: | {{{field|Editeur|input type=text}}} |- ! Collection: | {{{field|Collectionlivre|input type=text}}} |- ! Numéro: | {{{field|Numero|input type=text}}} |- ! ISBN: | {{{field|ISBN|input type=text}}} |- ! Image de garde: | {{{field|Imagegarde|input type=text}}} |- ! Sujet: | {{{field|Sujet|input type=text}}} |} {{{end template}}} '''Texte libre:''' {{{standard input|free text|rows=10}}} </includeonly>
On rencontre un nouveau "input type": "checkboxes"
Collection
Voici les différents noms qui seront utilisés:
- "Collection" pour le modèle et le formulaire
- "BIBLIO:Collection" pour la catégorie
- "BIBLIO:Jo et Zette" pour l'exemple de page.
La création des objets est similaire à celle des adresses; nous ne reprenons que les écrans spécifiques aux collections. C'est un ensemble plutôt vide.
Propriétés
Nous n'avons pas besoin de propriétés.
Modèle
On crée un modèle selon les données de l'écran ci-dessous. Les parties propriétés et "Agrégation" ne nous intéressent pas.
Formulaire
On crée un formulaire selon les données de l'écran ci-dessous.
Catégorie
On fait de même pour la création de la catégorie.
Premier encodage
On peut créer la première page que l'on a nommée "BIBLIO:Jo et Zette". Notons que l'on va prendre comme convention que le nom de la page sera le même que la collection. On a introduit une description de la collection dans la zone "Texte libre".
Script du modèle
Voici le contenu du script généré pour le modèle.
<includeonly> {| class="wikitable" |- ! |{{#ask:[[Collectionlivre::{{SUBJECTPAGENAME}}]]|format=list}} |} [[Catégorie:BIBLIO:Collection]] </includeonly>
Comme on peut le remarquer, le tableau est inutile. Seul la référence à la catégorie est nécessaire.
Script du formulaire
Voici le contenu du script généré pour le formulaire.
<includeonly> <div id="wikiPreview" style="display: none; padding-bottom: 25px; margin-bottom: 25px; border-bottom: 1px solid #AAAAAA;"></div> {{{for template|Collection}}} {| class="formtable" |} {{{end template}}} '''Texte libre:''' {{{standard input|free text|rows=10}}} </includeonly>
Ici aussi le tableau est inutile.