LINUX:Semantic MediaWiki - Récupération des paquets et mise en place
But
La récupération de l'extension Semantic MediaWiki et certaines extensions qui lui sont liées nécessitent un traitement particulier.
On ne récupère pas un fichier compressé comme dans l'article précédent mais on utilise le logiciel "composer" qui va effectuer toutes les tâches nécessaires.
Composer
Au préalable, il faut installer ce logiciel:
dnf install composer
Installation de la version 4
Nous utilisons la version 4 avec MediaWiki version 1.39.
Les extensions qui nous concernent sont du groupe "Semantic".
L'opération qui suit est à faire après mise en place du contenu du répertoire du logiciel MediaWiki comme décrit ci-dessus.
Dans le répertoire du logiciel ("/web/wiki.39" selon notre exemple), on y crée le fichier "composer.local.json". Nous voulons installer les deux extensions suivantes: Semantic-MediaWiki et "Semantic-Result-Formats". Sur Internet, on se renseigne du contenu à ajouter spécialement le numéro de version, auprès du guide d'installation de ces extensions.
Voici le contenu du fichier au format JSON:
{ "require": { "mediawiki/semantic-media-wiki": "~4.1", "mediawiki/semantic-result-formats": "~4.2" } }
N'oubliez pas la virgule séparant les deux extensions.
On se place dans le répertoire de MediaWiki ("/web/wiki.39) où se trouve ce fichier nouvellement créé et on exécute la commande suivante.
ce /web/wiki.39 composer update --no-dev -o
L'option "--no-dev" spécifie qu'on n'installe pas la version en cours de développement.
Installation de la version 5
Nous utilisons la version 5 avec MediaWiki version 1.43.
Les extensions qui nous concernent sont du groupe "Semantic".
L'opération qui suit est à faire après mise en place du contenu du répertoire du logiciel MediaWiki comme décrit ci-dessus.
Dans le répertoire du logiciel ("/web/wiki.43" selon notre exemple), on y crée le fichier "composer.local.json". Nous voulons installer les deux extensions suivantes: Semantic-MediaWiki et "Semantic-Result-Formats". Sur Internet, on se renseigne du contenu à ajouter spécialement le numéro de version, auprès du guide d'installation de ces extensions.
Voici le contenu du fichier au format JSON:
{ "require": { "mediawiki/semantic-media-wiki": "~5.0", "mediawiki/semantic-result-formats": "~5.0" } }
N'oubliez pas la virgule séparant les deux extensions.
On se place dans le répertoire de MediaWiki ("/web/wiki.43) où se trouve ce fichier nouvellement créé et on exécute la commande suivante.
ce /web/wiki.43 composer update --no-dev -o
L'option "--no-dev" spécifie qu'on n'installe pas la version en cours de développement.
Extension PageForms
L'extension PageForms est très utile en liaison avec Semantic MediaWiki. Elle s'installe comme la majorité des extensions en récupérant le fichier compressé en relation avec la version de MediaWiki utilisée. Mais quelques problèmes sont apparus.
Cas 1
Dans le cas de MediaWiki version 1.39 et de Semantic MediaWiki version 4, on n'a pas de problème.
Cas 2
Dans le cas de MediaWiki version 1.39 et de Semantic MediaWiki version 5, certaines modifications sont à apporter. En effet, lors de la création d'un modèle ou d'un format, l'interface se bloque dans un état d'erreur générale.
Il se fait que dans Semantic MediaWiki certains alias de classes PHP ont été supprimés. l'alias "SMWRequestOptions" en fait partie.
En conséquence, dans le fichier "extensions/PageForms/includes/PF_ValuesUtils.php", la ligne 118:
$requestoptions = new SMWRequestOptions();
doit être remplacée par la ligne:
$requestoptions = new \SMW\RequestOptions();
De même, dans le fichier "extensions/PageForms/specials/PF_CreateTemplate.php", la ligne 36:
$options = new SMWRequestOptions();
doit être remplacée par la ligne:
$options = new \SMW\RequestOptions();
Cas 3
Dans le cas de MediaWiki version 1.43 et de Semantic MediaWiki version 5, le même problème existe encore.
Pour résoudre ce problème, on récupère le fichier compressé de l'extension de PageForms lié à la version 1.44 future de MediaWiki au lieu de celle de la version 1.43. Dans ce module, le problème a été résolu mais en décalage. Pour utiliser cette version, il faut au moins utiliser la version 1.40 de MediaWiki.
Autre solution, appliquez les corrections présentées dans le cas 2.
Extension SemanticResultFormats
L'extension SemanticResultFormats permet de présenter des synthèses de requêtes des différentes propriétés stockées au travers de l'extension Semantic MediaWiki sous différents formats.
Format Gallery - option Redirect
Le format Gallery sert à présenter une galerie d'images sélectionnées. Par défaut, en cliquant sur une de ces images, on est redirigé vers le lieu de stockage de cette image et de ses caractéristiques. L'option Redirect offre un second lien par exemple, vers le formulaire d'encodage de l'objet auquel est lié cette image.
La requête a la forme, par exemple:
{{#ask: [[category:Famille]] | ?Photo | ?Nomprenom |imageproperty=Photo |captionproperty=Nomprenom |format=gallery |redirects=- }}
Cas 1
Dans le cas de MediaWiki version 1.39, on n'a pas de problème.
Cas 2
Dans le cas de MediaWiki version 1.43, l'image n'est pas trouvée et un message d'erreur s'affiche en rouge.
Le problème découle d'un changement dans MediaWiki version 1.43 du code HTML généré au niveau de ces images.
Dans la version 1.39 de Mediawiki, au niveau de la balise <a>, la classe utilisée est "image" mais dans la version 1.43 de Mediawiki, cette classe a changé de nom pour celui de "mw-file-description".
Pour corriger cette erreur, il faut modifier le fichier JavaScript "/web/wiki.43/extensions/SemanticResultFormats/formats/gallery/resources/ext.srf.gallery.redirect.js", la ligne 62:
image = $this.find( 'a.image' );
par la ligne:
image = $this.find( 'a.mw-file-description' );
qui fait appel à une fonction JQuery.
Format Gallery - option Overlay
Le format Gallery sert à présenter une galerie d'images sélectionnées. Par défaut, en cliquant sur une de ces images, on est redirigé vers le lieu de stockage de cette image et de ses caractéristiques. L'option Overlay offre un second lien permettant une vue en plein écran et une fonction carrousel parmi les différentes images de la galerie.
La requête a la forme, par exemple:
{{#ask: [[category:Famille]] | ?Photo | ?Nomprenom |imageproperty=Photo |captionproperty=Nomprenom |format=gallery |overlay=yes }}
Cas 1
Dans le cas de MediaWiki version 1.39, on n'a pas de problème dans ce premier niveau.
Cas 2
Dans le cas de MediaWiki version 1.43, l'image n'est pas trouvée et un message d'erreur s'affiche en rouge.
Le problème découle d'un changement dans MediaWiki version 1.43 du code HTML généré au niveau de ces images.
Dans la version 1.39 de Mediawiki, au niveau de la balise <a>, la classe utilisée est "image" mais dans la version 1.43 de Mediawiki, cette classe a changé de nom pour celui de "mw-file-description". De plus en dessous, lors de l'affichage du titre de l'image, la balise <p> a disparu.
Pour corriger ces erreurs, il faut modifier le fichier JavaScript "/web/wiki.43/extensions/SemanticResultFormats/formats/gallery/resources/ext.srf.gallery.overlay.js", les lignes 79 et 80:
image = $this.find( 'a.image' ); imageText = $.trim( $this.find( '.gallerytext p' ).text() );
par les lignes:
image = $this.find( 'a.mw-file-description' ); imageText = $.trim( $this.find( '.gallerytext' ).text() );
qui font appel à une fonction JQuery.
Format Gallery - option Overlay - application FancyBox
En utilisant une vue de format galerie, l'application FancyBox rentre en action Mais elle se bloque tout de suite quelque soit la version de l'extension SemanticResultFormats. Il ne nous reste qu'à revenir à l'écran précédent.
Version 1.3.4 - cas 1
Le script JavaScript concerné se trouve dans le répertoire "extensions/SemanticResultFormats/resources/jquery/fancybox" sous le répertoire racine de MediaWiki.
Le fichier "jquery.fancybox-1.3.4.pack.js" est sous un format compacté pour une question de performance.
Le problème réside dans la fonction "removeAttribute" devenue obsolète.
Il faut rechercher la chaîne:
{j.get(0).style.removeAttribute("filter");f.get(0).style.removeAttribute("filter")}
et la remplacer par:
{j.get(0).style.removeProperty("filter");f.get(0).style.removeProperty("filter")}
ou
{j.css("filter",0);f.css("filter",0)}
Version 1.3.4 - cas 2
Il est possible de retrouver la version non compactée. Via l'URL suivante, on récupère l'ensemble du paquet:
wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/fancybox/jquery.fancybox-1.3.4.zip
On le décompresse:
unzip jquery.fancybox-1.3.4.zip
et dans le sous-répertoire "jquery.fancybox-1.3.4/fancybox", on récupère le fichier "jquery.fancybox-1.3.4.js" que l'on place dans le répertoire "extensions/SemanticResultFormats/resources/jquery/fancybox".
On effectue le même genre de modification dans dans le cas précédent.
Dans ce fichier, les lignes 580 et 581:
content.get(0).style.removeAttribute('filter'); wrap.get(0).style.removeAttribute('filter');
sont à remplacer par les lignes:
content.get(0).style.removeAttribute('filter'); wrap.get(0).style.removeAttribute('filter');
ou
content.css('filter',0); wrap.css('filter',0);
Mais comme le nom du script JavaScript a changé de nom, il faut adapter sa référence. Elle se trouve dans le fichier "extensions/SemanticResultFormats/Resources.php".
La ligne 54:
'scripts' => 'resources/jquery/fancybox/jquery.fancybox-1.3.4.pack.js',
est à modifier en:
'scripts' => 'resources/jquery/fancybox/jquery.fancybox-1.3.4.js',
Version 3.5.7
On peut moderniser cette expérience en utilisant la version plus récente 3.5.7 de FancyBox. Mais cette opération demande plus de modifications. Nous ne l'appliquerons que pour MediaWiki 1.43 et la version 5 de Semantic MediaWiki.
On récupère l'ensemble du paquet:
wget https://github.com/fancyapps/fancybox/archive/refs/heads/master.zip
On le décompresse:
unzip master.zip
Dans le sous-répertoire créé "fancybox-master/dist", on récupère les fichiers "jquery.fancybox.js" et "jquery.fancybox.css". On les place dans le répertoire "/web/wiki.43/extensions/SemanticResultFormats/resources/jquery/fancybox" après l'avoir vidé de son contenu. L'ancienne version est devenue inutile.
Tant qu'on y est, on va ajouter un bloc de traduction en français en plus de ceux en anglais et en allemand dans ce script "jquery.fancybox.js".
A la ligne 187, on ajoute le bloc suivant:
fr: { CLOSE: "Fermer", NEXT: "Suivant", PREV: "Précédent", ERROR: "Le contenu demandé ne peut être chargé. <br/> SVP Veuillez essayer plus tard.", PLAY_START: "Démarrage du diaporama", PLAY_STOP: "Pause du diaporama", FULL_SCREEN: "Plein écran", THUMBS: "Vignettes", DOWNLOAD: "Télécharger", SHARE: "Partager", ZOOM: "Zoom" },
Mais comme les noms du script JavaScript et du CSS ont changés de nom, il faut adapter leurs références. Elle se trouve dans le fichier "extensions/SemanticResultFormats/Resources.php".
Les lignes 54 et 55:
'scripts' => 'resources/jquery/fancybox/jquery.fancybox-1.3.4.pack.js', 'styles' => 'resources/jquery/fancybox/jquery.fancybox-1.3.4.css',
sont à modifier en:
'scripts' => 'resources/jquery/fancybox/jquery.fancybox.js', 'styles' => 'resources/jquery/fancybox/jquery.fancybox.css',
Malheureusement le paramétrage de son utilisation a fortement changé, ce qui nécessite de nombreuses adaptations. Ce paramétrage est à faire dans le fichier "/web/wiki.43/extensions/SemanticResultFormats/formats/gallery/resources/ext.srf.gallery.overlay.js".
Nous avons mis à disposition ce fichier modifié sous format compressé. Le fichier suivant contient le fichier "ext.srf.gallery.overlay.js" modifié:
Télécharger le fichier ZIP
On doit décompresser ce fichier téléchargé:
unzip Ext.srf.gallery.overlay.zip
et remplacer la version précédente par celle-ci.
Les lignes modifiées sont précédées du commentaire:
// ADB
Les lignes originales sont mises en commentaire et les nouvelles suivent.
Test
On peut voir ces effets à l'URL: https://www.adbweb.gslb.eu/wiki/index.php?title=Cat%C3%A9gorie:Famille