Grâce à une méthodologie javascript assez simple et un traitement en php original vous pourrez très facilement améliorer l’utilisation de méthodes ajax dans l’admin de SPIP.
L’article de présentation se veut très court car en même temps que vous pouvez télécharger ce plugin, vous pouvez également installer le plugin spip_ajax_demo qui contient plusieurs exemple ainsi qu’un descriptif des fonctionnalités du plugin spip_ajax.
SÉCURITE : pour faire face à des problèmes de sécurité importants le plugin spip_ajax doit être configuré. Tout d’abord les fichiers du répertoire inc du noyau de spip ne sont pas accessibles. Les autres fichiers inc/mon_fichier.php
ne sont accessibles que si les droits ont été ouverts sur ce répertoire. Pour cela il faut aller dans le fichier sa_pipeline.php (à la racine du plugin) et faire renvoyer par la fonction get_droit_spip_ajax le tableau contenant les autorisations.
Voici un exemple ci dessous :
function get_droit_spip_ajax(){
return array("test"=>array("statut"=>"admin_restreint"),
"suite"=>array("statut"=>"aucun","allowed"=>"2,5"),
"essai"=>array("statut"=>"admin","allowed"=>"14,8")
);
}
Cela se comprend de la manière suivante : les fonctions de la page inc/test.php sont accessibles aux admin_restreint (et ceux qui ont plus de droits donc les admin également).
Le renseignement du statut est obligatoire , et il peut avoir comme valeur : tous, admin, admin_restreint , aucun.
La ligne suivante définit les droits sur le fichier inc/suite.php. Ici personne n’a de droits sauf pour les utilisateurs ayant les id_auteur 2 et 5 (on peux mettre autant de id que l’on souhaite en les séparant par une virgule). On peux également mixer les droits comme pour les droits du fichier ’essai’.
En installant ces 2 plugins vous devriez rapidement pouvoir maitriser spip_ajax. Le plugin de démo (ce plugin n’est pas à jour sur les questions de sécurité mais vous pouvez consulter la doc) rajoute également dans la partie édition de rubrique de l’admin de spip une petite fonctionnalité. Pour accéder à la démo voici le lien dans l’admin :
_ ?exec=spip_ajax_demo. (vous avez également un raccourci dans le menu ’Édition’).
Pour essayer de vous mettre en appétit je présenterai 2 petits exemples qui nécessitent le plugin spip_ajax. Ces exemples reprennent 2 cas présents sur le plugin de démo « spip_ajax_demo ».
- Exemple 1 : utiliser la méthode recuperer_fond de spip via l’ajax
Vous souhaitez par exemple dans la page d’accueil d’une rubrique connaître les différents auteurs ayant participé à cette rubrique. Pour que cela ne soit pas chargé d’office, un bouton va permettre d’afficher (via ajax ) la liste de ces auteurs.
- Créez votre plugin en déclarant le pipeline ’affiche_droite’ et le pipeline ’header_prive’ dans votre fichier plugin.xml.
- dans la fonction du plugin qui intercepte ’header_prive’ incluez le js qui va servir pour votre plugin, pour cet exemple le fichier js va se nommer monjs.js
- dans la fonction du plugin qui intercepte ’affiche_droite’ renvoyez la présentation qui vous convient avec sur un élément html qui possède un évènement onclick. Par exemple onclick=’liste_auteur_rubrique()’. Et un élément DOM dont l’id (pour cet exemple mais vous êtes libre de votre choix) est ’liste_auteur_rubrique’
- maintenant venons en au code javascript que vous placez dans monjs.js :
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();
}
- spip_ajax_reqest la ’requête’ qui va être envoyée côté serveur. C’est un objet javascript dont les propriétés sont dans notre cas id_rubrique, recup_fond,args_fond et refresh. id_rubrique va récupérer la valeur id_rubrique présente dans l’url. recup_fond indique que vous souhaitez récupérer le fond ’liste_auteur_rubrique’. Il s’agit ici d’un fond très simple avec 2 boucles imbriquées (présent dans le plugin de démo). args_fond indique l’(les) argument(s) que vous souhaitez passer à votre squelette, ici on souhaite passer l’id_rubrique , enfin refresh indique l’élément DOM qui va être mis à jour une fois le click effectué. Ici il s’agit de l’id ’liste_auteur_rubrique’.
- spip_ajax.ajax() : est la fonction qui va envoyer cette requête ajax et qui effectuera le(les) traitement(s) . Ici on ’refresh’ un élément html , mais d’autres possibilités s’offrent à vous.
- Exemple 2 : appeler une fonction présente dans les répertoires ’inc’
exemple de code pour appeler une fonction située dans un plugin et dans le répertoire inc/suite.php . Dans ce répertoire copier/coller la fonction couper de spip.
/* On appelle la méthode couper de spip dans le fichier inc/suite.php */
function couper_demo(){
spip_ajax.req = {
val : $("#texte_couper").val(),
taille : 60,
fin : ' coucou <br>',
inc :"suite" ,
fct : "couper",
args_fct : "val,taille,fin",
append : "#resultat_couper"
}
spip_ajax.ajax();
}
- ici on récupère le texte dans la propriéte val, la propriété taille indique que l’on souhaite avoir les 60 premiers caractères et la propriété fin indique que l’on souhaite finir le texte par coucou et un retour à la ligne,. Ces arguments sont listés dans : args_fct
- la propriété inc indique que nous avons besoin d’inclure le fichier inc/suite
- la propriété fct indique que nous allons utiliser la fonction ’couper’ avec les arguments déclarés précédemment.
- la propriété append indique qu’une fois le texte coupé récupéré on souhaite le rajouter à la fin de l’élément DOM dont l’id est ’resultat_couper’.
Conclusion
J’espère que ces 2 premiers exemples vous auront intéressé. Grâce au plugin spip_ajax_demo vous retrouverez ces 2 exemples ainsi que quelques autres. Vous avez également une documentation complète sur les fonctions de spip_ajax.
En espérant que cela vous aidera pour vos futurs développements.
En remerciant l’ensemble de la communauté spip pour l’ensemble de ses contributions.
Aucune discussion
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Suivre les commentaires : |