Jiji, your new Joomla! 4 Console friend
Jiji, your new Joomla! 4 Console friend

About 24mn to read

Système - Jiji

Jiji est

...
Lire la suite :

Système - Jiji

Jiji est un Plugin Système qui utilise les Services Web Joomla! 4 en ajoutant des actions personnalisées à l'application console du noyau de Joomla! 4 sans “hacks”. En utilisant le conteneur d'injections de dépendances et autres capacités avancées de Joomla! 4.
Modif: Après avoir cherché plus tard sur le net, j'ai découvert que Chris Davenport avait déjà fait quelque chose de similaire je crois pour Joomla 3 à l'époque. Joomla 4 n'existait pas encore.

 Télécharger Plugin Jiji

POURQUOI ?

J'ai commencé à coder Jiji en décembre 2020 parce qu'à l'époque je voulais avoir un petit projet pour essayer la nouvelle application console de Joomla! 4 basée sur Symfony Console. Si vous connaissez déjà  Symfony Console, vous n'aurez aucun problème à prendre en main Joomla 4 Console.

QUOI ?

Le nom de l'extension “Jiji” vient du prénom de "fille mignonne" basé sur une version raccourcie et simplifiée de notre bien aimé "Joomla!" qui est d'ailleurs une marque déposée de Open Source Matters.

COMMENT ?

Jiji est un Plugin Système qui "ajoute" et "enregistre" de nouvelles Commandes à l'application console de Joomla  4 située: JPATH_ROOT/cli/joomla.php
J'aurais pû créer mon propre script en mode console dans ce fichier JPATH_ROOT/cli/jiji.php, mais j'ai pensé que ce serait une meilleur idée d'utiliser l'existant et de garder les conventions et les standards de joomla. Dites moi si j'ai eu tord. Je suis curieux d'entendre vos avis sur ce sujet précis.

 Télécharger Plugin Jiji

Le code de “Jiji” est dans une Bibliothèque(Library) placée dans le dossier src, dans le plugin. Ce code utilise un espace de nom tel que AE\Library\Jiji. Les espaces de noms sont disponibles depuis PHP 5.3

Le dossier des Comportements(Behavior) contient tous les Traits PHP utilisés par le Plugin. Les Traits sont disponibles depuis PHP 5.4. Les Traits en PHP, sont en gros, des comportements communs que l'on peut greffer à des classes PHP sans relations (ex: 2 classes Chien et Avion) tous les deux identifiables mais sans relations à priori. On pourrait donc créer un Trait appelé Identifiable que ces deux classes utiliserait.
En d'autres termes, si vous vous retrouver à faire beaucoup de copier/coller de fonctionnalités entre plusieurs classes, à priori c'est un bon candidat pour créer un ou plusieurs Traits à partir de ces fonctionnalités.

Le coeur de ce plugin c'est l'espace de nom AE\Library\Jiji\Console. Dans le dossier correspondant, vous y trouverez ma première "Commande" dans la Console Joomla, appelée HelloSuperJoomlerCommand.php qui affiche juste le texte “Hello Super Joomler”. Mais un dossier intéressant  c'est celui qui contient toutes les "Commandes" liées aux Articles Joomla qui appelent les Web Services / Api Joomla 4 directement à partir de la Console Joomla.

  • GET tous les articles Lister(Browse)
  • GET  un article par id Lire(Read)
  • PATCH un article par id Modifier(Edit)
  • POST un article par id Créer(Add)
  • DELETE un article par id Supprimer(Delete)

Afin de pouvoir effectuer l'action DELETE(Supprimer) vous devez d'abord faire une action PATCH(Modifier) avec au minimum l'id de la catégorie, le titre et l'état à -2 de l'article que vous voulez DELETE (Supprimer).
Exemple de données JSON envoyée : ‘{“catid”:64, “title”:“My edited title”, “state”:-2}’
“Jiji” est capable d'utiliser un fichier JSON ou du JSON en mode texte dans vos requêtes HTTP contenant une charge utile.

INSTRUCTIONS:

1 - Le fichier zip de l'extension est dans le dossier build/ de ce dépot Github

2 - Installez le plugin Jiji plugin comme n'importe quelle extension Joomla! 4.

3 - Suivez ces instructions

JPATH_ROOT : le dossier racine de votre site Joomla 4. Changer ceci en mettant le chemin absolu du dossier racine

J4X_BASE_PATH : L'url de base de votre site  Joomla! 4 (ex: https://example.com)

J4X_API_TOKEN : Votre Jeton API Joomla! 4

Vous pouvez l'utiliser en mode non-interactif en rajoutant -n

Executer la  Commande simple Hello Super Joomler

  
php JPATH_ROOT/cli/joomla.php jiji:hello  
  

Executer la Commande Lister Articles

  
php JPATH_ROOT/cli/joomla.php -n --base-path=J4X_BASE_PATH --api-token=J4X_API_TOKEN article:browse  
  

Executer la Commande Lire Article (ex: id=1)

  
php JPATH_ROOT/cli/joomla.php -n --base-path=J4X_BASE_PATH --api-token=J4X_API_TOKEN article:read --id=1  
  

Executer la Commande Créer Article

utilisant une chaîne de caractères JSON en tant que données

  
php JPATH_ROOT/cli/joomla.php -n --base-path=J4X_BASE_PATH --api-token=J4X_API_TOKEN article:add --item-data='{"alias": "my-article","articletext": "My text","catid": 64,"language": "*","metadesc": "","metakey": "","title": "Here's an article"}'  
  

ou plus simplement un fichier JSON en tant que données

  
php JPATH_ROOT/cli/joomla.php -n --base-path=J4X_BASE_PATH --api-token=J4X_API_TOKEN article:add --item-data='path/to/add-article.json'  
  

Executer la Commande Modifier Article (ex: id=1)

utilisant une chaîne de caractères JSON en tant que données

  
php JPATH_ROOT/cli/joomla.php -n --base-path=J4X_BASE_PATH --api-token=J4X_API_TOKEN article:edit --id=1 --item-data='{"catid": 64,"title": "Here's an another article"}'  
  

ou plus simplement un fichier JSON en tant que données

  
php JPATH_ROOT/cli/joomla.php -n --base-path=J4X_BASE_PATH --api-token=J4X_API_TOKEN article:edit --id=1 --item-data='path/to/edit-article.json'  
  

Executer la Commande Supprimer Article (ex: id=1)

Cela doit être fait en deux étapes car il y a  cette nouvelle façon de faire

1 - Executer la Commande Modifier Article que vous souhaitez supprimer et changez son état à -2 Corbeille (Trash)

2 - Executer la Commande Supprimer Article sur l'article que vous souhaiter supprimer.

Step 1 for Deleting Article

utilisant une chaîne de caractères JSON en tant que données

  
php JPATH_ROOT/cli/joomla.php -n --base-path=J4X_BASE_PATH --api-token=J4X_API_TOKEN article:edit --id=1 --item-data='{"catid": 64,"title": "Here's an another article", "state": -2}'  
  

ou plus simplement un fichier JSON en tant que données

  
php JPATH_ROOT/cli/joomla.php -n --base-path=J4X_BASE_PATH --api-token=J4X_API_TOKEN article:edit --id=1  --item-data='path/to/delete-step-1-article.json'  
  

Step 2 Deleting Article

  
php JPATH_ROOT/cli/joomla.php -n --base-path=J4X_BASE_PATH --api-token=J4X_API_TOKEN article:delete --id=1  
  

CONTRIBUTEUR.TRICES

Contributors are welcomed to jump in and help improve this project. Any constructive feedback is welcomed.

  • À propos de l'auteur:

    Salut! C'est Alex,

    Développeur Joomla depuis 2009, plus précisément les Web Services à partir de 2017,

    d'abord dans Joomla! 3 avec jBackend et aussi com_api

    Plus récemment les Web Services de Joomla! 4.x.

    J'aime les livres papier, les projets innovants et la cybersécurité défensive "Blue Team".

    C'est tout pour le moment. Passez une agréable journée.