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();

}

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

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 couper
- Les variables ici nous récupérons le texte qui a été déposé dans le textarea, nous définissons par défaut la longueur du texte a 60 (taille), et nous décidons de finir le message couper par 'coucou' suivi d'un retour à la ligne(fin).Ici vous pouvez nommer vos arguments comme vous voulez. Le seul point, indispensable , à respecter est dans args_fct de bien reprendre les noms des variables séparé par une virgule. Et de bien les mettre dans l'ordre dans lesquels la fonction les utilise.
- spip_ajax.req.inc- inc Ici l'utilisation de inc implique que vous souhaitez utiliser une fonction ou une classe qui se situe dans le fichier inc dont le nom suit. Dans notre cas la fonction "couper" est présente dans "inc/texte" du répertoire "ecrire"
- spip_ajax.req.fct - fct il s'agit du nom de la fonction que vous souhaitez appeler. Ici , il s'agit de la fonction "couper"
- spip_ajax.req.args_fct - args_fct Présenté tout à l'heure dans Les variables ce paramètre liste les arguments nécessaires à la fonction ;

La 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)
- spip_ajax.get(nom) Cette fonction est semblable a $_GET utilisé en php. Elle renvoie la valeur d'un paramètre de l'url. Dans notre exemple si vous êtes dans l'édition d'une rubrique et que l'url est : "exec=naviguer&id_rubrique=3" spip_ajax.get("id_rubrique") va renvoyer la valeur 3.

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.
- spip_ajax.req = {}; Objet qui va contenir les paramètres envoyé au serveur.
- spip_ajax.getter = new Array(); Tableau contenant les paramètres de l'url.
- spip_ajax.set_get(); Fonction parsant l'url pour construire le tableau 'spip_ajax.getter'.
- spip_ajax.get(nom); Renvoi la valeur du paramètre de l'url 'nom'.
- spip_ajax.ajax(); Fonction centralisant les appels en ajax et leur traitement.

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'
- spip_ajax.req.recup_fond : 'mon_fond' récupère le fond 'mon_fond'
- spip_ajax.req.args_fond : 'id_article, id_rubrique' passe les arguments id_article et id_rubrique au fond précédemment appelé

Les fonctions et objets PHP

- spip_ajax.req.fct : 'couper' appel a la fonction php : "couper"
- spip_ajax.req.args_fct : 'liste,test' passe les arguments liste et test a la fonction php appelé, dans ce cas il faut également envoyer les argument spip_ajax.req.liste et spip_ajax.req.test
- spip_ajax.req.class : 'voiture' appel a la classe php: "voiture"
- spip_ajax.req.args_class : 'marque, an' passe les arguments marque et an au constructeur de la classe
- spip_ajax.req.method : 'pays' appel a la méthode php 'pays' php d'un objet déclaré
- spip_ajax.req.args_method : 'continent,taxe' passe les arguments continent et taxe a la methode appelée

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 ajax
- spip_ajax.req.append : 'mon_p' rajoute aux l'élément ayant la classe 'mon_p' le retour de la requête ajax
- spip_ajax.req.alert ='vos infos' envoi un message d'alert une fois le traitement effectué avec "vos infos" suivi du retour de la requete ajax
- spip_ajax.req.callback ='ma_fonction_javascript()' une fois le retour de la fonction ajax récupéré on appelle la fonction javascript :'ma_fonction_javascript'. Pour exploiter dans cette fonction le retour de la fonction ajax utilisé la variable spip_ajax.retour

Le 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.