LINUX:MediaWiki - SMW - Prototype: Livres

De WIKI sur Linux (ADB)
Aller à la navigation Aller à la recherche

retour à Sémantic MediaWiki


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).

LINUX:Mws.modele.biblio.1.png


Formulaire

On crée un formulaire selon les données de l'écran ci-dessous.

LINUX:Mws.formulaire.biblio.2.png


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.

LINUX:Mws.encodage.biblio.5.png

Et voici le résultat.

LINUX:Mws.encodage.biblio.3.png

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.

LINUX:Mws.modele.collection.1.png


Formulaire

On crée un formulaire selon les données de l'écran ci-dessous.

LINUX:Mws.formulaire.collection.2.png


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".

LINUX:Mws.encodage.collection.3.png


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.




retour à Sémantic MediaWiki