Voici une documentation pour le plugin spip_ajax. Ce plugin permet de faire de l'ajax dans l'admin de spip de manière extrêmement simple et rapide. Il permet en outre de d'utiliser la méthode recuperer_fond de manière dynamique. Il gérera également dans la prochaine version de petits formulaires.
Il a été également développer pour pouvoir transformer les requêtes envoyer en fonction. Concrètement les méthodes , classes ou fonds appelés seront traités sans que ces fonctions n'utilisent de variable $_POST. Cela est réalisé grâce à l'API de réflexion de PHP. C'est à dire que les fonctions que nous allons utiliser seront utilisables via l'ajax mais également via d'autres fonctions. Si cela vous semble confus, pas de souci les exemples ci dessus vous éclaireront.
Avertissement : Cette technique permet d'appeler des fonctions présentes dans les répertoires 'inc'. Il faut par conséquent être assez prudent en l'utilisant. La prochaine version permettra de mieux gérer cette question
Voici quelques exemples qui vont vous faire découvrir , et je l'espère apprécier, spip_ajax
Ouvrir/Fermer Récupérer un fond avec spip_ajax
Le code correspond aux code javascript utilisant spip_ajax.
PS : vous pouvez voir le fond : liste_article dans ce plugin dans le répertoire fonds
function liste_artcile(){
spip_ajax.req = {
id_rubrique : $("#rub option:selected").val(),
nbre : $("#taille option:selected").val(),
recup_fond :"liste_article" ,
args_fond : "id_rubrique,nbre",
refresh : "#resultat_liste_artcile"
}
spip_ajax.ajax();
}
La démo du code : Sélectionnez n articles dans la rubrique de votre choix, et cliquez sur Valider
Ouvrir/Fermer Appelez la fonction bien connu de spip 'couper'. Vous pouvez bien entendu créer vos propres fichiers inc et les appeler. Vous pouvez également appeler une classe et une de ses méthode
function couper(){
spip_ajax.req = {
val : $("#texte_couper").val(),
taille : 60,
fin : ' coucou <br> ',
inc :"texte" ,
fct : "couper",
args_fct : "val,taille,fin",
append : "#resultat_couper",
}
spip_ajax.ajax();
}
Explication du code
Dans cet exemple nous allons voir comment utiliser une fonction. Pour que l'exemple soit plus parlant j'ai choisi la fonction couperLa démo du code : copier coller un texte cliquer sur Valider. Le texte va passer dans la moulinette de la fonction "couper" en gardant les 60 premiers caractères et en terminant par 'coucou <br>'
Ouvrir/Fermer Dans ce plugin de démo, j'ai rajouté une fonctionnalité
dans la page d'édition de rubrique. Vous allez avoir dans un petit bloc 'Récupérer la liste des auteurs ayant participé ....'.
En cliquant vous allez pouvoir récupérer la liste des auteurs ayant participé à la rubrique, et en cliquant sur 'et ses articles '
suivant leur nom vous allez récupérer la liste des articles écrit par cet auteur dans cette rubrique. Pour cela nous allons
utiliser spip_ajax.
PS : les 2 fonds utilisés sont liste_auteur_rubrique.html et liste_article_auteur.html
function liste_auteur_rubrique(){
spip_ajax.req = {
id_rubrique : spip_ajax.get("id_rubrique"),
recup_fond :"liste_auteur_rubrique" ,
args_fond : "id_rubrique",
refresh : "#liste_auteur_rubrique",
}
spip_ajax.ajax();
}
Explication du code
Ici nous retrouvons des éléments vu précédements, la seule nouveauté - spip_ajax.get(nom)Ouvrir/Fermer Retrouver ici la liste des différentes fonctions ,méthodes
et variable utilisé par spip_ajax.
Les fonctions,objets et tableau de spip_ajax
- function spip_ajax(){}; Fonction qui sert simplement a créer un espace de nomage.Les variables de spip_ajax
- spip_ajax.retour = ""; Variable qui contient la réponse envoyé par le serveur.Cela permet notamment de faire un traitement dans une fonction de callback.Les paramètres des requêtes de spip_ajax.req
Les fonctions SPIP
- spip_ajax.req.inc : 'texte' permet l'inclusion du fichier 'inc/texte'Les fonctions et objets PHP
- spip_ajax.req.fct : 'couper' appel a la fonction php : "couper"Les méthodes javascript/html/dom
- spip_ajax.req.refresh : '#ma_div' rafraichi l'élément html ayant le id 'ma_div' avec le retour de la requete ajaxLe fichier exec/_spip_ajax.php dans le plugin spip_ajax
Dans ce fichier il y a une classe spip_ajax qui va etre appelée par la fonction 'exec__spip_ajax_dist'. Si la personne essaye d'y accéder par l'admin un traitement renvoie sur la page d'accueil de l'admin. Sinon vous avez toutes les méthodes permettant de traiter l'inclusion de fichier , l'appel à des fonctions , à des objets , ou la méthode pour récupérer un fond.
Explication du code
Dans ce premier exemple nous allons voir les comment créer une requête ajax. La fonction javascript spip_ajax dispose de plusieurs méthodes , objets , tableaux et variables. Dans cet exemple nous récupérons les n derniers articles de la rubrique sélectionnée- spip_ajax.req est l'objet de type POST qui va être envoyer aux serveur. Dans notre cas nous allons d'abord récupérer d'abord l'id_rubrique dans le premier menu déroulant, puis le nombre d'articles de cette rubrique que nous souhaitons récupérer.
- spip_ajax.req.recup_fond - recup_fond recup_fond signifie que nous souhaitons récuperer le fond liste_article.
- spip_ajax.req.fond_args - fond_args sa syntaxe est très précise , elle est également optionnel. Dans notre cas précis le squelette que nous appelons à 2 arguments. IMPORTANT : la notation des variables, en l'occurrence id_rubrique et nbre correspond aux variables d'environnements utilisées dans le squelette. Dans fond_args on reprend ces arguments en les séparant par une virgule.
- spip_ajax.req.refresh - refresh la méthode refresh indique qu'une fois la réponse récupérée , nous souhaitons rafraichir l'élément dom dont l'id est 'resultat_liste_artcile';
- spip_ajax.ajax() est la méthode qui va envoyer la méthode ajax est qui gère les éventuelles traitement une fois la réponse récupérer