Changeset 33678 in spip-zone


Ignore:
Timestamp:
Dec 11, 2009, 1:50:37 PM (10 years ago)
Author:
sourrisseau@…
Message:

Il s'agit d'une mise a jour du plugin spip_ajax avec une reecriture du js pour qu'il soit plus lisible. Il y a le rajout d'une ou 2 fonctions egalement , notament la possibilité de specifier le data type des requetes ajax et la possibilite de lancer une requete ajax une fois le hash env recuperer. J'ai egalement creer un sire , www.eolians.fr , et vous trouverez ce tutto , ainsi que d'autres a l'adresse suivante http://www.eolians.fr/spip.php?article1

Location:
_plugins_/spip_ajax
Files:
1 added
7 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/spip_ajax/css/spip_ajax_ui.css

    r32854 r33678  
    11body .ui-widget { font-size : 0.74em !important ;}
     2#ui-datepicker-div {z-index: 9999}
    23
  • _plugins_/spip_ajax/fonds/cfg_spip_ajax.html

    r32854 r33678  
    3030        $("#contenu").css('opacity','1');
    3131        return false;
    32        
    3332}
    3433
  • _plugins_/spip_ajax/fonds/ge_sa.html

    r32854 r33678  
    2020
    2121<div id='gen'>
     22
     23        <div class='type'>
     24                <p class='ss_type'>Data type</p>
     25                <p onclick="sa.value('datatype','datatype')">Data type<span class='green'>  + <span></p>
     26        </div>
     27
    2228        <div class='type'>
    2329                <p class='ss_type'>Fonctions</p>
     
    5258<div id='col_centre'>
    5359        <div id='champ'>
     60                <div id='datatype'>
     61               
     62                </div>
    5463                <div id='php'>
    5564               
  • _plugins_/spip_ajax/js/ge_sa.js

    r32854 r33678  
    77        aa_sa : "php,inc,class,args_class,method" , aa_aa : "php,inc,class,args_class,method,args_method" };
    88sa.liste["fond"]= { sa : "fond,recup_fond" , aa : "fond,recup_fond,args_fond"};
     9sa.liste["datatype"]= { datatype : "datatype,dataType" };
    910sa.liste["final"]= {append : "final,append" , refresh : "final,refresh" , callback : "final,callback"};
    1011
     
    5354        test = true;
    5455       
    55         chaine = "spip_ajax.req = { ";
    56         provi ="";
     56        chaine = "spip_ajax.req = ";
     57        provi ="{ ";
    5758       
    5859        /* Construction de la requete */
     
    6263                val = $(this).val();
    6364               
     65
    6466                if (x==taille-2) sep ="";
    6567               
     
    7072                                if(!spip_ajax.in_array(sa.l_args,a[i])) sa.l_args.push(a[i]);
    7173                                if ($.trim(a[i])==""){
    72                                         alert("Vous avez un arguments vide sur " + name);
     74                                        alert("Vous avez un argument vide sur " + name);
    7375                                        test = false;
    7476                                }
    7577                        }
    7678                }
    77                 /* construction de la requete */
    78                 if (x!=taille-1 && $.trim(val)!="") provi += " " + name + " : '" + val + "' " + sep;
    79        
     79               
     80
     81               
     82                /* construction de la requete si ce n'est ni une methode nio une class */
     83                if (x!=taille-1 && $.trim(val)!="" && name != 'method' && name != 'class') provi += " " + name + " : '" + val + "' " + sep;
     84               
     85                /* recuperation de la methode d'une classe */
     86                if (x!=taille-1 && $.trim(val)!="" && name == 'class') {
     87                        method = $("#champ input[name='method']").val();
     88                        val += ':'+ method;
     89                        console.log(method + " test");
     90                        provi += " " + name + " : '" + val + "' " + sep;
     91                }
     92                       
    8093        })
    8194        /* on test qu'il n'y a pas d'erreur */
     
    94107        }
    95108       
     109        provi +=' }';
     110       
    96111        /* renvoie de la requete spip ajax*/
    97         chaine += args + provi + " }; \nspip_ajax.ajax();";
     112        chaine += args + provi + "; \nspip_ajax.ajax();\n\n";
     113        chaine += 'Ou en version abrégée \n\n$sa.spip_ajax(' + provi +  ')';
    98114        $("#recup_sa").html(chaine);
    99115}
  • _plugins_/spip_ajax/js/spip_ajax.js

    r32854 r33678  
    11/* Fonctions generiques gerant des fonction ajax dans l'admin de spip */
    2 spip_ajax = {};
    32
    4 // objet javascript servant a envoyer les requetes
    5 spip_ajax.req = {};
     3var spip_ajax = {
     4               
     5                // objet javascript servant a envoyer les requetes
     6                req : {},
     7               
     8                // On va récupérer le hash_env pour traiter la validite des requetes ajax
     9                hash_env : "",
     10               
     11                set_hash_env : function(){
     12                        $sa.hash_env = $sa.retour;
     13                        for(i=0;i<$sa.array_onload.length;i++)eval($sa.array_onload[i]);
     14               
     15                },
     16               
     17                // valeur retourner par la requete ajax, cette valeur
     18                // est utilisable dans les fonctions de call-back
     19                retour : "",
     20               
     21               
     22                // tableau contenant les parametres de l'url
     23                getter : new Array(),
     24               
     25               
     26                // fonction qui recupere les parametres de l'url
     27                set_get : function(){
     28                    param = window.location.search.slice(1,window.location.search.length);
     29                    first = param.split("&");
     30                    for(i=0;i<first.length;i++){
     31                        second = first[i].split("=");
     32                        val = second[0];
     33                        $sa.getter[val] = second[1];
     34                    }
     35                },
     36               
     37               
     38                // recuperation d'un parametre particulier de l'url
     39                get : function (nom){
     40                        return $sa.getter[nom];
     41                },
     42               
     43                // liste des fonctions  a appele une fois le hash env recuperer
     44                array_onload : new Array(),
     45                onload : function(fonc){
     46                        $sa.array_onload.push(fonc+"()");
     47                        // gere le cas de IE ....
     48                        if ($sa.hash_env !="") eval(fonc+"()");
     49                },
     50       
     51               
     52                // fonction envoyant les requetes ajax
     53                // en cas de succes on peux realiser certaines actions
     54                ajax : function (obj){
     55                       
     56                        // on test si l'objet servant a la requete est present et correct
     57                        if (typeof obj=='object') $sa.req = obj;
     58                       
     59                        // on force le data type a html avant de tester si un autre type est demande
     60                        dataType = 'html';
     61                        if ($sa.req.dataType) dataType = $sa.req.dataType;
     62                                               
     63                        if ($sa.hash_env!="") $sa.req.hash_env = $sa.hash_env;
    664
    7 // On va récupérer le hash_env pour traiter la validite
    8 // de l'operation
    9 spip_ajax.hash_env="";
    10 spip_ajax.get_hash_env = function(){
    11         spip_ajax.req = {hash_env : "hash_env" , callback : 'spip_ajax.set_hash_env()'  }
    12         spip_ajax.ajax();
    13 }
     65                        $.ajax({
     66                           type: "POST",
     67                           url : "?exec=_spip_ajax",
     68                           data: $sa.req,
     69                           dataType : dataType,
     70                           success: function(x){
     71                               if ($sa.req.alert) alert($sa.req.alert + " \n" + x);
    1472
    15 spip_ajax.set_hash_env = function(){
    16         spip_ajax.hash_env = spip_ajax.retour;
    17 }
     73                               if ($sa.req.refresh) $($sa.req.refresh).html(x);
     74
     75                               if ($sa.req.append) $($sa.req.append).append(x);
    1876
    1977
    20 // valeur retourner par la requete ajax, cette valeur
    21 // est utilisable dans les fonctions de call-back
    22 spip_ajax.retour = "";
     78                               if ($sa.req.callback){
     79                                   $sa.retour = x;
     80                                 eval($sa.req.callback);
     81                               }
    2382
    24 // tableau contenant les parametres de l'url
    25 spip_ajax.getter = new Array();
     83                               // on verifie que le code n'a rien renvoye
     84                               // si c'est le cas on affiche le message
     85                               if ($sa.req.verif_succes) {
     86                                        x = $.trim(x);
     87                                        x!=1 ?  alert('Votre action n\'a pas renvoy\351e \'true\'') : alert($sa.req.verif_succes) ;
     88                               }
    2689
    27 // fonction qui recupere les parametres de l'url
    28 spip_ajax.set_get = function(){
    29     param = window.location.search.slice(1,window.location.search.length);
    30     first = param.split("&");
    31     for(i=0;i<first.length;i++){
    32         second = first[i].split("=");
    33         val = second[0];
    34         spip_ajax.getter[val] = second[1];
    35     }
    36 }
     90                           },
     91                           error : function(e){
     92                                  alert("une erreur est survenu dans votre requete ajax - Spip Ajax");
     93                           }
     94
     95                        });
     96                },
     97               
     98                in_array : function(array,val){
     99                        for(i = 0 ;  i < array.length ; i++) if(array[i] == val)return true;
     100                    return false;
     101                }
     102
     103               
     104       
     105};
     106
     107// creation d'un alias pour spip_ajax
     108var $sa= spip_ajax;
    37109
    38110// recuperation des parametres de l'url
    39 spip_ajax.set_get();
     111$sa.set_get();
    40112
    41 // recuperation d'un parametre particulier de l'url
    42 spip_ajax.get = function (nom){
    43         return spip_ajax.getter[nom];
    44 }
     113// et on appelle la fonction pour recupere le hash
     114$sa.ajax({hash_env : "hash_env" , callback : 'spip_ajax.set_hash_env()' });
    45115
    46 // fonction envoyant les requetes ajax
    47 // en cas de succes on peux realiser certaines actions
    48 spip_ajax.ajax = function (){
    49         if (spip_ajax.hash_env!="") spip_ajax.req.hash_env = spip_ajax.hash_env;
    50 
    51         $.ajax({
    52            type: "POST",
    53            url : "?exec=_spip_ajax",
    54            data: spip_ajax.req,
    55            success: function(x){
    56                if (spip_ajax.req.alert) alert(spip_ajax.req.alert + " \n" + x);
    57 
    58                if (spip_ajax.req.refresh) $(spip_ajax.req.refresh).html(x);
    59 
    60                if (spip_ajax.req.append) $(spip_ajax.req.append).append(x);
    61 
    62 
    63                if (spip_ajax.req.callback){
    64                  spip_ajax.retour = x;
    65                  eval(spip_ajax.req.callback);
    66                }
    67 
    68                // on verifie que le code n'a rien renvoye
    69                // si c'est le cas on affiche le message
    70                if (spip_ajax.req.verif_succes) {
    71                         x = $.trim(x);
    72                         x=='' ? alert(spip_ajax.req.verif_succes) : alert(x);
    73                }
    74 
    75            },
    76            error : function(){
    77                   alert("probleme");
    78            }
    79 
    80         });
    81 }
    82 
    83 // On appelle la fonction pour recupere le hash
    84 spip_ajax.get_hash_env();
    85 
    86 
    87 /* Ensemble des fonctionnalites pour spip ajax Pro*/
    88 /* Pour les equivalences php voir le site http://kevin.vanzonneveld.net/techblog/article/javascript_equivalent_for_phps_in_array/ */
    89 /*  equivalent de la fonction php in_array*/
    90 spip_ajax.in_array = function(array,val){
    91         for(i = 0 ;  i < array.length ; i++) if(array[i] == val)return true;
    92     return false;
    93 }
    94 
    95 
  • _plugins_/spip_ajax/plugin.xml

    r32854 r33678  
    22        <nom>Spip ajax</nom>
    33        <auteur>Di carmine Fabrizio</auteur>
    4         <version>1.0</version>
     4        <version>2.0</version>
    55        <etat>stable</etat>
    66        <description>
    77        {{Spip ajax permet de faire facilement de l'ajax dans l'admin de spip.
    8         La version 2 integre également jquery ui.}}
     8        La version 2 integre également jquery ui. Vous pourvez retrouver la doc ainsi que des video
     9        a l'adresse suivante : http://www.eolians.fr/spip.php?article1 }}
    910        </description>
    1011        <prefix>sa</prefix>
  • _plugins_/spip_ajax/sa_pipeline.php

    r32854 r33678  
    55        $flux .= "<script type='text/javascript' src='"._DIR_PLUGIN_SA."js/spip_ajax.js'></script>";
    66        $flux .= "<script type='text/javascript' src='"._DIR_PLUGIN_SA."js/jquery-ui-1.7.2.js'></script>";
    7         $flux .= "<script type='text/javascript' src='"._DIR_PLUGIN_SA."js/date-fr.js'></script>";
     7        $flux .= "<script type='text/javascript' src='"._DIR_PLUGIN_SA."js/datepicker-fr.js'></script>";
    88       
    9         $flux .= "<link rel='stylesheet' media='all' href='"._DIR_PLUGIN_SA."css/overcast/jquery-ui-1.7.2.custom.css' />";
     9        $flux .= "<link rel='stylesheet' media='all' href='"._DIR_PLUGIN_SA."css/sunny/jquery-ui-1.7.2.custom.css' />";
    1010        $flux .= "<link rel='stylesheet' media='all' href='"._DIR_PLUGIN_SA."css/spip_ajax_ui.css' />";
    1111        return $flux;
     
    4949}
    5050
    51 /*
    52         function autoriser($niveau = "admin"){
    53                
    54                 $droit = array(
    55                         "tous" => 0,
    56                         "visiteur" => 1,
    57                         "redacteur" => 2,
    58                         "admin_restreint" => 4,
    59                         "admin" => 8
    60                 );
    61                
    62                 $niveau =       $droit[$niveau];
    63                
    64                 $statut_auteur = $GLOBALS['connect_statut'];
    65                 $statut_type = $GLOBALS['connect_toutes_rubriques'];
    66                 $id_auteur = $GLOBALS['auteur_session']['id_auteur'];
    67                
    68                 $type = "";
    69                 if ($statut_auteur=="0minirezo") $type = "admin";
    70                 if ($statut_auteur=="0minirezo" && $statut_type=="") $type = "admin_restreint";
    71                 if ($statut_auteur=="1comite") $type = "redacteur";
    72                
    73                 $type   =       $droit[$type];
    74                
    75                 if($type >= $niveau) return true;
    76                 return false;
    77         }
    78  */
    7951
    8052
Note: See TracChangeset for help on using the changeset viewer.