LINUX:MediaWiki - SMW - Amélioration: Livres
But
On améliore ensuite cet embryon de gestion de livres présente à l'article sur le Prototype: Livres.
Livre
Modèle
Voici le script:
<includeonly> {| class="wikitable" ! Type de document | {{#arraymap:{{{Typedocument|}}}|,|xx1|[[Typedocument::xx1]]}} |- ! Catégorie de document | {{#arraymap:{{{Categoriedocument|}}}|,|xx2|[[Categoriedocument::xx2]]}} |- ! Titre | [[Titre::{{{Titre|}}}]] |- ! Auteur | {{#arraymap:{{{Auteur|}}}|,|xx3|[[Auteur::xx3]]}} |- ! Editeur | [[Editeur::{{{Editeur|}}}]] |- ! Collection | {{#if:{{{Collectionlivre|}}}| {{#formredlink:target=BIBLIO:{{{Collectionlivre}}}| form=Collection| existing page link text={{{Collectionlivre}}}| link text={{{Collectionlivre}}} }} {{#set:Collectionlivre=BIBLIO:{{{Collectionlivre}}} }}| Vide}} |- ! Numéro | [[Numero::{{{Numero|}}}]] |- ! ISBN | [[ISBN::{{{ISBN|}}}]] |- ! Image de garde | {{#ifexist:File:BIBLIO:{{{Imagegarde}}}.jpg| [[Imagegarde::File:BIBLIO:{{{Imagegarde|}}}.jpg|200px]]| A charger==>{{fullurl:special:upload|wpDestFile=BIBLIO:{{urlencode:{{{Imagegarde}}}|WIKI}}.jpg&wpUploadDescription={{urlencode:[[Category:BIBLIO:Page-de-garde]]|WIKI}} }} }} |- ! Sujet | [[Sujet::{{{Sujet|}}}]] |} [[Catégorie:BIBLIO:Biblio]] </includeonly>
! Collection | {{#if:{{{Collectionlivre|}}}| {{#formredlink:target=BIBLIO:{{{Collectionlivre}}}| form=Collection| existing page link text={{{Collectionlivre}}}| link text={{{Collectionlivre}}} }} {{#set:Collectionlivre=BIBLIO:{{{Collectionlivre}}} }}| Vide }}
! Image de garde | {{#ifexist:File:BIBLIO:{{{Imagegarde}}}.jpg| [[Imagegarde::File:BIBLIO:{{{Imagegarde|}}}.jpg|200px]]| A charger==> {{fullurl:special:upload| wpDestFile=BIBLIO:{{urlencode:{{{Imagegarde}}}|WIKI}}.jpg&wpUploadDescription={{urlencode:[[Category:BIBLIO:Page-de-garde]]|WIKI}} }} }}
Formulaire
Voici le script:
<includeonly> <div id="wikiPreview" style="display: none; padding-bottom: 25px; margin-bottom: 25px; border-bottom: 1px solid #AAAAAA;"></div> {{{for template|Biblio|label=Fiche du livre}}} {| class="formtable" ! Type de document: | {{{field|Typedocument|input type=checkboxes}}} |- ! Catégorie de document: | {{{field|Categoriedocument|input type=checkboxes}}} |- ! Titre: | {{{field|Titre|mandatory|input type=text}}} |- ! Auteur: | {{{field|Auteur|input type=tokens}}} |- ! 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}}} '''Remarques:''' {{{standard input|free text|rows=10}}} </includeonly>
On y fait quelques modifications mineures:
- On ajoute un titre au tableau avec le paramètre "label=Fiche du livre".
- On impose que le titre soit nécessaire ("mandatory")
- On représente les auteurs sous forme de blocs ("input type=tokens")
- On remplace le texte "Texte libre" par "Remarques".
Catégorie
On ajoute un titre pour séparer l'appel existant à la création d'une nouvelle page de la liste des pages.
On remplace cet appel à la création d'une nouvelle page "{{#default_form:Biblio}}", par la fonction "#forminput" qui nous permet de présélectionner l'espace de nom "BIBLIO".
Voici le code:
__NOEDITSECTION__ =Création d'un nouveau livre= {{#forminput:form=Biblio|size=65|namespace selector=BIBLIO}} {{#default_form:Biblio}}
Et voici l'aspect:
Collection
Modèle
Voici le script:
<includeonly> * '''Pages de garde''' {{#ask: [[category:BIBLIO:Biblio]] [[Collectionlivre::{{FULLPAGENAME}}]] | ?Imagegarde | ?Titre |imageproperty=Imagegarde |captionproperty=Titre |format=gallery |sort=Numero |redirects=- }} * '''Liste des livres''' {{#ask:[[category:BIBLIO:Biblio]] [[Collectionlivre::{{FULLPAGENAME}}]] |?Typedocument=Type de document |?Categoriedocument=Catégorie de document |?Titre=Titre |?Auteur=Auteur |?Editeur=Editeur |?Numero=Numéro |?ISBN=ISBN |mainlabel=Page |sort=Numero |format=table}} [[Catégorie:BIBLIO:Collection]] </includeonly>
Le tableau étant vide, inutile on l'élimine. On ne garde que les deux balises externes "<includeonly>" et "</includeonly>" et la référence à la catégorie "Collection".
Par contre, on ajoute deux requêtes. La première présente une gallerie des images de pages de garde de la collection concernée. On utilise le format "gallery" qui vient avec l'extension "Semantic-Result-Formats". Le titre du livre est repris en dessous et en cliquant sur l'image, on va au descriptif du livre. Le petit carré au dessus à gauche de l'image nous renvoie vers l'image téléchargée.
Le second tableau est plus classique. Il liste les différents livres de la série.
Et voici l'aspect:
Formulaire
Voici le script:
<includeonly> '''Descriptif:''' {{{standard input|free text|rows=20}}} {{{for template|Collection}}} </includeonly>
Dans le script du formulaire d'origine, on supprime le tableau. Ensuite on ramène au dessus la zone du "Texte libre" que l'on renomme "Description". De cette façon, ce texte apparaitra au dessus du contenu du modèle "Collection". Ce modèle reprend la gallerie d'images et le tableau.
Et voici l'aspect:
Catégorie
On ajoute un titre pour séparer l'appel existant à la création d'une nouvelle page de la liste des pages.
On remplace cet appel à la création d'une nouvelle page "{{#default_form:Collection}}", par la fonction "#forminput" qui nous permet de présélectionner l'espace de nom "BIBLIO".
Voici le code:
__NOEDITSECTION__ =Création d'une nouvelle collection= {{#forminput:form=Collection|size=65|namespace selector=BIBLIO}} {{#default_form:Collection}}
Et voici l'aspect: