LINUX:MediaWiki - SMW - Amélioration: Livres

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

retour à Sémantic MediaWiki


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>


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:

LINUX:Mws.categorie.biblio.4.png


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:

LINUX:Mws.encodage.collection.6.png


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:

LINUX:Mws.formulaire.collection.4.png


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:

LINUX:Mws.categorie.collection.4.png



retour à Sémantic MediaWiki