SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano | Nederlands

286 Plugins, 197 contribs sur SPIP-Zone, 387 visiteurs en ce moment

Accueil > Outils pour plugins > SPIP Ajax > SPIP Ajax, ou se faciliter la vie dans l’admin

SPIP Ajax, ou se faciliter la vie dans l’admin

3 août 2009 – par Fabrizio

16 votes

Ce plugin propose un certain nombre de méthodes très simples, en ajax, à utiliser pour pouvoir récupérer des fonds , appeler des fonctions... dans l’admin de SPIP.

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.

P.-S.

Si vous avez des commentaires ou des avis cela sera avec grand plaisir. Et n’hésitez pas à me faire part de vos avis si vous utilisez ce plugin. Merci !!!

Dernière modification de cette page le 3 août 2009

Retour en haut de la page

Répondre à cet article

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Acces Restreint 3.0

    11 décembre 2008 – 787 commentaires

    Le plugin accès restreint permet de définir et de gérer des zones de l’espace public en accès restreint. Cette version du plugin a été redévelopée et optimisée tout spécialement pour SPIP 2.0. Il en découle une amélioration des performances sur les gros (...)

  • Partageur

    29 janvier 2011 – 46 commentaires

    Permet de recopier facilement des articles d’un site SPIP partageur à l’autre. Ce plugin est encore en version beta. Les retours et critiques sont les bienvenus ... Présentation Ce plugin est né d’un besoin de partager des articles entre sites (...)

  • Tutoriel : créer une carte interactive avec GIS4

    19 octobre 2013 – 26 commentaires

    Utilisation de quelques fonctions javascript pour créer des interactions avec une carte GIS. L’objet de ce tutoriel est de produire une carte interactive comme celle-ci Effacer tous les points d’une carte d’une carte La fonction javascript (...)

  • Agenda 2.0

    3 novembre 2008 – 1067 commentaires

    Voici la version pour SPIP 2.0 du Plugin Agenda pour SPIP 1.9.2, avec une interface remaniée pour encore plus de plaisir. Pour une documentation concernant l’utilisation d’Agenda 3 pour SPIP 3, veuillez pour l’instant vous référer à SPIP 3, Agenda (...)

  • Menus

    18 août 2009 – 957 commentaires

    Créez enfin vos menus facilement !