Home - La documentation de Frantext : un wiki programmable 

Page / - dernière modification par Gilles Toubiana le 2021/07/09 11:39 

La documentation de Frantext : un wiki programmable 
dernière modification par Gilles Toubiana
le 2021/07/09 11:39

Table des matières
Éditeur en ligne
Syntaxe WIKI
Présentation avancée
Programmation côté client
Programmation côté serveur
Aller plus loin
Versions

DANS CETTE PAGE
•	Éditeur en ligne
•	Syntaxe WIKI
•	Gras
•	Italiques
•	Lien
•	Tableau
•	Image
•	Titre H1-H6
•	Titre de niveau 4
•	Classe CSS
•	Présentation avancée
•	Code
•	HTML
•	TOC
•	BOOTSTRAP CSS
•	BOOTSTRAP JS
•	Programmation côté client
•	JQUERY
•	Programmation côté serveur
•	Variables
•	Script
•	Macro
•	Inclusion
•	Aller plus loin
•	Versions
La documentation de Frantext est rédigée à l'aide d'un wiki open-source baptisé Xwiki développé en Java. Au-delà des fonctionnalités classiques d'un wiki, il a l'originalité de permettre à n'importe quel rédacteur de créer des pages complexes à l'aide de langages de script tels que JavaScript et Apache Velocity, sans nécessiter de droits spécifiques d'administration ou de programmation. Ce type de wiki peut servir à valoriser un projet de recherche ou des publications scientifiques.
Par défaut, le wiki permet d'exploiter les langages suivants : XWIKIsyntax, HTML, CSS, LESS, Javascript, JQuery, Apache Velocity, Apache Groovy, etc. Le thème graphique par défaut utilise quant à lui les bibliothèques suivantes : Bootstrap, Jquery, LESS, etc.
L'ajout d'extensions peut permettre l'utilisation d'autres langages tels que Python, Ruby, PHP, mais ces derniers ne pourront être exploités que par des utilisateurs ayant des droits d'administration ou de programmation.
Éditeur en ligne
L'édition de pages se fait par défaut en mode WYSIWYG. L'éditeur CKEditor est installé par défaut. D'autres éditeurs peuvent être installés par l'administrateur.
Il permet notamment d'appliquer les enrichissements de caractères les plus courants tels que le gras et l'italique. Il permet de créer des liens, des tableaux, d'intégrer des images et même d'appliquer des styles prédéfinis tels que les niveaux de titres standards (H1-H6) ou bien des classes issues des feuilles de styles utilisées par le thème graphique.
Pour éditer une page, cliquez en haut à droite sur le bouton Modifier.
Syntaxe WIKI
Lorsque vous modifiez une page, vous pouvez utiliser la syntaxe WIKI pour appliquer les mêmes enrichissements de caractères que l'éditeur, en cliquant sur le bouton Source depuis la barre de l'éditeur.

Enrichissement	Affichage	Syntaxe WIKI	
Gras	Texte en gras	**Texte en gras**	
Italiques	Texte en italique	//Texte en italique//	
Lien	Lien	[[Lien>>doc:Main.WebHome]]	
Tableau	Col 1	Col 2	Col 3	
A	B	C	
|=Col 1|=Col 2|=Col 3
|A|B|C		
Image		[[image:Main.WebHome@grammaire.png||alt="Grammaire"]]	
Titre H1-H6	Titre de niveau 4	==== Titre de niveau 4 ====	
Classe CSS	Texte d'introduction	(% class="lead" %)
Texte d'introduction	
Présentation avancée
Il est possible d'exploiter des composants propres au thème graphique, ou d'utiliser des Macros XWiki.

Enrichissement	Affichage	Syntaxe WIKI	
Code	La macro Code	{{code}}La macro Code{{/code}}	
HTML	La macro HTML	{{html}}<small>La macro HTML</small>{{/html}}	
TOC	DANS CETTE PAGE
•	Éditeur en ligne
•	Syntaxe WIKI
•	Présentation avancée
•	Programmation côté client
•	Programmation côté serveur
•	Aller plus loin
•	Versions	{{box cssClass="floatinginfobox" title="**DANS CETTE PAGE**"}}
{{toc start=2 depth=2 numbered=false scope=page /}}
{{/box}}	
BOOTSTRAP CSS	Un bouton Bootstrap 3	[[Un bouton Bootstrap 3>>https://getbootstrap.com/docs/3.3/css/#buttons-sizes||class="btn btn-primary btn-lg"]]
et ajout d'un objet XWiki.StyleSheetExtension
#xwikicontent .wikiexternallink {
   background: none;
   padding-right: 0;
}	
BOOTSTRAP JS	× Une alerte Bootstrap 3	(% role="alert" class="alert alert-danger alert-dismissible" %)
(((
{{html wiki="true"}}
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<strong>Une alerte Bootstrap 3
{{/html}}
)))	
Programmation côté client

Enrichissement	Affichage	Syntaxe WIKI	
JQUERY	3 publications HAL

{{html wiki="true"}}
<h3>3 publications HAL<span id="halnum"></span></h3>
<div id="hal"></div>
{{/html}}
et ajout d'un objet Xwiki.JavaScriptExtension :
require(['jquery'], function($) {
var halurl = "https://api.archives-ouvertes.fr/search/hal/?omitHeader=true&wt=json&indent=true&q=Frantext&sort=producedDate_tdate+desc&fq=NOT+instance_s%3Asfo&fq=NOT+instance_s%3Adumas&fq=NOT+instance_s%3Amemsic&fq=NOT+%28instance_s%3Ainria+AND+docType_s%3A%28MEM+OR+PRESCONF%29%29&fq=NOT+%28instance_s%3Aafssa+AND+docType_s%3AMEM%29&fq=NOT+%28instance_s%3Aenpc+AND+docType_s%3A%28OTHERREPORT+OR+MINUTES+OR+NOTE+OR+SYNTHESE+OR+MEM+OR+PRESCONF%29%29&fq=NOT+%28instance_s%3Auniv-mlv+AND+docType_s%3A%28OTHERREPORT+OR+MINUTES+OR+NOTE+OR+MEM+OR+PRESCONF%29%29&fq=NOT+%28instance_s%3Ademocrite+AND+docType_s%3AMEM%29&fq=NOT+%28instance_s%3Aafrique+AND+docType_s%3AMEM%29&fq=NOT+%28instance_s%3Asaga+AND+docType_s%3A%28PRESCONF+OR+BOOKREPORT%29%29&fq=NOT+%28instance_s%3Aunice+AND+docType_s%3AMEM%29&fq=NOT+%28instance_s%3Alara+AND+docType_s%3AREPACT%29&fq=NOT+%28docType_s%3A%28THESE+OR+HDR%29+AND+submitType_s%3A%28notice+OR+annex%29%29&fq=NOT+%28instance_s%3Alaas+AND+docType_s%3AMEM%29&fq=NOT+%28instance_s%3Aephe+AND+docType_s%3AMEM%29&fq=NOT+instance_s%3Ahceres&fq=NOT+status_i%3A111&fq=%7B%21tag%3Dtag0__docType_s%7DdocType_s%3A%28%22ART%22+OR+%22COMM%22+OR+%22OUV%22+OR+%22COUV%22+OR+%22DOUV%22+OR+%22REPORT%22+OR+%22OTHER%22+OR+%22THESE%22+OR+%22HDR%22+OR+%22LECTURE%22+OR+%22UNDEFINED%22%29&fq=%7B%21tag%3Dtag1__submitType_s%7DsubmitType_s%3A%28%22file%22%29&defType=edismax&rows=10";
  $.getJSON(halurl, function(data) {
    var items = [];
    var j = data.response.docs.length;
    $("#halnum").text("(sur " + data.response.numFound + ")");
    for (i = 0; i < j; i++) {
      var k = data.response.docs[i];
      items.push("<li id='" + k.docid + "'><a href='" + k.uri_s + "'>" + k.label_s + "</a></li>");
    }
    $("<ol/>", {
      "class": "hal-list",
      html: items.join("")
    }).appendTo("#hal");
  });
});		
Programmation côté serveur

Enrichissement	Affichage	Syntaxe WIKI	
Variables	Le 19 mai 2024, Frantext intégral contient 5350 ouvrages dans sa version 1.2.21.	{{velocity}}
#set ($chaine = "Frantext")
#set ($tableau = ["intégral", "démonstration", "agrégation"])
#set ($objet = {
 "version": "1.2.21",
 "oeuvres": "5350"
})
#set ($date = $datetool.get('dd MMMM yyyy'))
Le $date, $chaine $tableau[0] contient $objet["oeuvres"] dans sa version $objet.version.
{{/velocity}}	
Script	Questions fréquentes
•	Base agrégation $temp
•	Exporter un concordancier pour Excel v1.2.10
•	Base démonstration v1.2.21
•	Problèmes de connexion v1.2.13
•	Utilisation du logo v1.2.13
•	Rechercher dans des périodes temporelles v1.2.13	{{velocity}}
#set ($query = $services.query.xwql("from doc.object(XWiki.TagClass) as tag where 'faq' member of tag.tags order by doc.date desc"))
#set ($recentlyCreated = $query.addFilter('hidden').setLimit(6).execute())
#if ($recentlyCreated.size() > 0 || $showEmptyPanels)
  #panelheader('Questions fréquentes')
  #foreach ($docName in $recentlyCreated)
    #if ($xwiki.hasAccessLevel('view', $docName))
      #set ($recentDoc = $xwiki.getDocument($docName).getTranslatedDocument())
      #set ($recentTag = $xwiki.getDocument($docName).getTagList())
      #foreach ($myTag in $recentTag)
        #if ($myTag.matches('.*v\d+\.\d+\.(\d+|x).*'))
          #set ($temp = $myTag)
        #end
      #end
      ## Affichage du résultat en HTML
      * {{html}}<a href="$recentDoc.getURL()">$escapetool.xml($recentDoc.plainTitle)</a> <small class="text-muted">$temp</small>{{/html}}
    #end
  #end
#panelfooter()
#end
{{/velocity}}	
Macro	Fonctionnalités
•	Les expressions CQL v1.2.23
•	Recherche v1.2.22
•	Filtrer les résultats v1.2.22
•	Correspondance des versions v1.2.x
•	L'interface utilisateur v1.2.x
•	Corpus v1.3.11	{{velocity}}
#macro( listByTagName $title $tag $order $limit)
#set ($query = $services.query.xwql("from doc.object(XWiki.TagClass) as tag where '$tag' member of tag.tags order by $order"))
#set ($recentlyCreated = $query.addFilter('hidden').setLimit($limit).execute())
#if ($recentlyCreated.size() > 0 || $showEmptyPanels)
  #panelheader($title)
  #foreach ($docName in $recentlyCreated)
    #if ($xwiki.hasAccessLevel('view', $docName))
      #set ($recentDoc = $xwiki.getDocument($docName).getTranslatedDocument())
      #set ($recentTag = $xwiki.getDocument($docName).getTagList())
      #foreach ($myTag in $recentTag)
        #if ($myTag.matches('.*v\d+\.\d+\.(\d+|x).*'))
          #set ($temp = $myTag)
        #end
      #end
      ## We use HTML here because we don't have a tool to escape wiki syntax in document title.
      * {{html}}<a href="$recentDoc.getURL()">$escapetool.xml($recentDoc.plainTitle)</a> <small class="text-muted">$temp</small>{{/html}}
    #end
  #end
#panelfooter()
#end
#end

#listByTagName('Fonctionnalités','manuel','doc.date desc',6)
{{/velocity}}	
Inclusion	 searchGo 	{{include reference="xwiki:variables.WebHome"/}}{{velocity}}#recherche{{/velocity}}	
Aller plus loin
•	XWiki : https://www.xwiki.org/xwiki/bin/view/Main/WebHome
•	Syntaxe XWiki : https://www.xwiki.org/xwiki/bin/view/Documentation/UserGuide/Features/XWikiSyntax/
•	HTML / CSS / Javascript : https://developer.mozilla.org/fr/docs/Web
•	LESS : http://lesscss.org/
•	JQUERY : https://jquery.com/
•	Apache Velocity : http://velocity.apache.org/
•	Apache Groovy : http://groovy-lang.org/index.html
•	Bootstrap 3 : https://getbootstrap.com/docs/3.3/
•	Les scripts de XWiki : https://network.xwiki.com/xwiki/bin/view/DocXE44Fr/LesScriptsXWiki
Versions
•	getCoreExtension : 10.11.11
•	repository.environmentExtension : 10.11.11