Changeset 99491 in spip-zone


Ignore:
Timestamp:
Sep 13, 2016, 2:10:27 PM (3 years ago)
Author:
rastapopoulos@…
Message:

Que ça marche vraiment en SPIP 3, et sans CFG

Location:
_plugins_/elearning/trunk
Files:
5 added
2 deleted
5 edited
1 copied
2 moved

Legend:

Unmodified
Added
Removed
  • _plugins_/elearning/trunk/elearning_administrations.php

    r99366 r99491  
    1414
    1515// La fonction de base appelée par le gestionnaire de plugins
    16 function elearning_upgrade($nom_meta_version_base, $version_cible) {
    17         include_spip('inc/meta');
    18         include_spip('base/abstract_sql');
     16function elearning_upgrade($nom_meta_base_version, $version_cible) {
     17        $maj = array();
    1918       
    20         $current_version = 0.0;
     19        // Mise à jour de la config toute dans spip_meta pour SPIP 3
     20        $maj['1.0.0'] = array(
     21                array('elearning_maj_1_0_0'),
     22        );
    2123       
    22         if (
    23                 !isset($GLOBALS['meta'][$nom_meta_version_base])
    24                 or
    25                 (($current_version = $GLOBALS['meta'][$nom_meta_version_base]) != $version_cible)
    26         ){
    27                 if (version_compare($current_version, '0.0', '<=')){
    28                         ecrire_meta($nom_meta_version_base, $current_version=$version_cible, 'non');
    29                 }
    30         }
     24        include_spip('base/upgrade');
     25        maj_plugin($nom_meta_base_version, $version_cible, $maj);
    3126}
    3227
     
    3631        effacer_meta($nom_meta_version_base);
    3732}
     33
     34// Passage de la config dans spip_meta
     35function elearning_maj_1_0_0() {
     36        include_spip('inc/config');
     37       
     38        // On récupère la rubrique e-learning
     39        if ($id_rubrique = intval(lire_config('elearning/rubrique_elearning'))) {
     40                // On récupère tous les modules
     41                $rubriques_modules = sql_allfetsel(
     42                        'id_rubrique, extra',
     43                        'spip_rubriques',
     44                        array(
     45                                'id_parent = '.$id_rubrique
     46                        )
     47                );
     48               
     49                foreach ($rubriques_modules as $rubrique_module) {
     50                        // On cherche si la rubrique a bien une config de elearning
     51                        if (
     52                                $id_module = intval($rubrique_module['id_rubrique'])
     53                                and $rubrique_module['extra']
     54                                and $extra = unserialize($rubrique_module['extra'])
     55                                and is_array($extra)
     56                                and isset($extra['elearning'])
     57                        ) {
     58                                $config = $extra['elearning'];
     59                               
     60                                // On écrit la config dans spip_meta
     61                                ecrire_config('elearning/modules/'.$id_module, $config);
     62                               
     63                                // On supprime de spip_rubriques
     64                                unset($extra['elearning']);
     65                                if (empty($extra)) {
     66                                        $extra = '';
     67                                }
     68                                else {
     69                                        $extra = serialize($extra);
     70                                }
     71                                sql_updateq(
     72                                        'spip_rubriques',
     73                                        array('extra' => $extra),
     74                                        'id_rubrique = '.$id_module
     75                                );
     76                        }
     77                }
     78        }
     79}
  • _plugins_/elearning/trunk/formulaires/configurer_elearning.html

    r99362 r99491  
    1 <!-- descriptif=
    2 <:elearning:configuration_description:>
    3 -->
    4 <!-- titre=<:elearning:configuration_titre:>-->
    5 
    6 
    7 <form method="post" action="#SELF">
    8         <fieldset>
    9         <legend><:elearning:configuration_rubrique_titre:></legend>
    10                 [(#ENV{_cfg_}|form_hidden)]
    11                 <div class="explication">Choisissez la rubrique qui va contenir les modules de cours.</div>
    12                 [(#VAL|elearning_chercher_rubrique{#CONFIG{elearning/rubrique_elearning,0}, 'rubrique_elearning'})]
    13 
    14                 <input type="submit" name="_cfg_ok" value="<:oK:>" />
    15                 <input type="submit" name="_cfg_delete" value="<:supprimer:>" />
    16         </fieldset>
    17 </form>
    18 
    19 <br />
    20 
    21 <fieldset>
    22         <legend><:elearning:configuration_modules_titre:></legend>
    23         <BOUCLE_modules(RUBRIQUES){tous}{id_parent=#CONFIG{elearning/rubrique_elearning,10000}}{par num titre}>
    24         [<h4>(#TITRE|supprimer_numero)</h4>]
    25         <div class="ajax">#FORMULAIRE_ELEARNING_CONFIGURER_MODULE{#ID_RUBRIQUE}</div>
    26         </BOUCLE_modules>
    27         <:elearning:pas_de_modules:>
    28         <//B_modules>
    29 </fieldset>
    30 
    31 <script type="text/javascript">
    32         function elearning_champ_score(){
     1<div class="formulaire_spip formulaire_configurer formulaire_#FORM">
     2        [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
     3        [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
    334       
    34                 $('select[name="jeu"]')
    35                         .each(function(){
     5        <BOUCLE_editable(CONDITION){si #ENV{editable}}>
     6        <form method="post" action="#ENV{action}"><div>
     7                [(#REM) declarer les hidden qui declencheront le service du formulaire
     8                parametre : url d'action ]
     9                #ACTION_FORMULAIRE{#ENV{action}}
     10               
     11                <fieldset>
     12                        <legend><:elearning:configuration_rubrique_titre:></legend>
    3613                       
    37                                 if (!$(this).val() || $(this).val() == 0)
    38                                         $(this)
    39                                                 .siblings('input[name="score"]')
    40                                                         .val(0)
    41                                                         .attr('disabled', 'disabled');
    42                                 else
    43                                         $(this)
    44                                                 .siblings('input[name="score"]')
    45                                                         .removeAttr('disabled');
     14                        <div class="editer-groupe">
     15                                <div class="explication">Choisissez la rubrique qui va contenir les modules de cours.</div>
     16                                [(#VAL|elearning_chercher_rubrique{#CONFIG{elearning/rubrique_elearning,0}, 'rubrique_elearning'})]
     17                        </div>
    4618                       
    47                         })
    48                         .change(function(){
    49                        
    50                                 if (!$(this).val() || $(this).val() == 0)
    51                                         $(this)
    52                                                 .siblings('input[name="score"]')
    53                                                         .val(0)
    54                                                         .attr('disabled', 'disabled');
    55                                 else
    56                                         $(this)
    57                                                 .siblings('input[name="score"]')
    58                                                         .removeAttr('disabled');
    59                        
    60                         });
    61        
    62         }
    63        
    64        
    65         $(function(){
    66        
    67                 elearning_champ_score();
    68                 onAjaxLoad(elearning_champ_score);
    69        
    70         });
    71 </script>
     19                        [(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
     20                        <!--extra-->
     21                </fieldset>
     22                <p class='boutons'><span class='image_loading'>&nbsp;</span>
     23                        <input type='submit' class='submit' value='<:bouton_enregistrer:>' />
     24                </p>
     25        </div></form>
     26        </BOUCLE_editable>
     27</div>
  • _plugins_/elearning/trunk/formulaires/configurer_elearning_module.html

    r99490 r99491  
    1 <!-- nom=elearning -->
    2 <!-- depot=tablepack -->
    3 <!-- colonne=extra -->
    4 <!-- table=spip_rubriques -->
    5 
    6 
    71[(#REM)
    82        Ce formulaire sert à configurer les conditions d'accès à chaque module
    93        C'est-à-dire quel jeu et quel score minimum à atteindre
    104]
    11 #CACHE{0}
    12 
    13 <form method="post" action="#SELF">
    14 #ACTION_FORMULAIRE{#SELF}
    15 
    16 <B_jeux>
    17 <label><:elearning:configuration_test:></label>
    18 <select name="jeu">
    19         <option value="0"><:elearning:configuration_selectionnez_test:></option>
    20         <option value="0" [(#ENV{jeu}|=={0}|?{'selected="selected"'})]><:elearning:configuration_test_aucun:></option>
    21         <BOUCLE_jeux(JEUX){tout}>
    22         <option value="#ID_JEU" [(#ENV{jeu}|=={#ID_JEU}|?{'selected="selected"'})]>#TITRE_PRIVE</option>
    23         </BOUCLE_jeux>
    24 </select>
    25 <label><:elearning:configuration_score:></label>
    26 <input type="text" name="score" value="#ENV{score,0}" maxlength="3" style="width:3em;" />
    27 </B_jeux>
    28 
    29 <input type="submit" name="_cfg_ok" value="<:oK:>" />
    30 
    31 </form>
     5<div class="formulaire_spip formulaire_configurer formulaire_#FORM">
     6<form method="post" action="#ENV{action}"><div>
     7        [(#REM) declarer les hidden qui declencheront le service du formulaire
     8        parametre : url d'action ]
     9        #ACTION_FORMULAIRE{#ENV{action}}
     10       
     11        <B_jeux>
     12        <label><:elearning:configuration_test:></label>
     13        <select name="modules[#ENV{_id_rubrique}][jeu]">
     14                <option value="0"><:elearning:configuration_selectionnez_test:></option>
     15                <option value="0" [(#ENV{modules/#ENV{_id_rubrique}/jeu}|=={0}|?{'selected="selected"'})]><:elearning:configuration_test_aucun:></option>
     16                <BOUCLE_jeux(JEUX){tout}>
     17                <option value="#ID_JEU" [(#ENV{modules/#ENV{_id_rubrique}/jeu}|=={#ID_JEU}|?{'selected="selected"'})]>#TITRE_PRIVE</option>
     18                </BOUCLE_jeux>
     19        </select>
     20        <label><:elearning:configuration_score:></label>
     21        <input type="text" name="modules[#ENV{_id_rubrique}][score]" value="#ENV{modules/#ENV{_id_rubrique}/score, 0}" maxlength="3" style="width:3em;" />
     22        </B_jeux>
     23       
     24        <input type="submit" value="<:oK:>" />
     25</div></form>
     26</div>
  • _plugins_/elearning/trunk/inc/elearning_zones.php

    r99379 r99491  
    1313}
    1414
     15include_spip('base/abstract_sql');
    1516include_spip('inc/config');
    16 include_spip('inc/cfg_config');
    17 
    18 // Met à jour les accès restreint lorsque l'on modifie la configuration CFG du plugin E-Learning
     17include_spip('action/editer_liens');
     18
     19// Met à jour les accès restreints lorsque l'on modifie la configuration du plugin E-Learning
    1920function elearning_mettre_a_jour_les_zones($id_nouvelle_rubrique){
    2021        $id_nouvelle_rubrique = intval($id_nouvelle_rubrique);
     
    2324        // Si la nouvelle rubrique n'était pas dans la zone
    2425        // ou si la nouvelle rubrique est différente de celle de la config
    25         // alors il faut nettoyer
    2626        if (
    2727                !elearning_verifier_le_lien($id_nouvelle_rubrique, $id_zone)
    2828                or $id_nouvelle_rubrique != intval(lire_config('elearning/rubrique_elearning'))
    2929        ) {
     30                // On nettoie les anciennes zones
    3031                elearning_nettoyer_les_zones_modules();
    31         }
    32        
    33         // On peut maintenant définir la nouvelle rubrique comme celle du e-learning
    34         $ok = elearning_definir_la_rubrique_elearning($id_nouvelle_rubrique);
     32               
     33                // On peut maintenant définir la nouvelle rubrique comme celle du e-learning
     34                $ok = elearning_definir_la_rubrique_elearning($id_nouvelle_rubrique);
     35        }
    3536       
    3637        return _T('elearning:configuration_ok');
     
    4142// Retourne l'id_zone
    4243function elearning_verifier_la_zone() {
    43         find_in_path('abstract_sql.php', 'base/', true);
    44        
    4544        // On vérifie s'il y a une zone déjà enregistrée
    4645        $id_zone = intval(lire_config('elearning/zone_elearning'));
     
    5655       
    5756        // Si elle n'existe pas, on la crée
    58         if (!$id_zone){
     57        if (!$id_zone) {
    5958                $id_zone = sql_insertq(
    6059                        'spip_zones',
     
    6665                        )
    6766                );
    68                 ecrire_config('elearning/zone_elearning',$id_zone);
     67                ecrire_config('elearning/zone_elearning', $id_zone);
    6968        }
    7069       
     
    7776// Retourne si vrai ou pas
    7877function elearning_verifier_le_lien($id_nouvelle_rubrique, $id_zone) {
    79         find_in_path('abstract_sql.php', 'base/', true);
    80        
    8178        // On vérifie si la rubrique choisie est déjà dans la bonne zone
    8279        $id_rubrique_test = intval(sql_getfetsel(
    83                 'id_rubrique',
    84                 'spip_zones_rubriques',
     80                'id_objet',
     81                'spip_zones_liens',
    8582                array(
    86                         'id_zone = '.$id_zone
     83                        'objet = "rubrique"',
     84                        'id_zone = '.intval($id_zone)
    8785                )
    8886        ));
     
    9593        }
    9694}
    97 
    9895
    9996// Définit une rubrique comme étant celle du e-learning :
     
    10299// - lie chaque module à sa zone
    103100function elearning_definir_la_rubrique_elearning($id_rubrique) {
     101        include_spip('inc/filtres');
     102       
    104103        // On vérifie le paramètre
     104        $id_rubrique = intval($id_rubrique);
    105105        if (!$id_rubrique or $id_rubrique <= 0) {
    106106                return false;
    107107        }
    108108       
    109         find_in_path('abstract_sql.php', 'base/', true);
    110        
    111109        // On récupère la zone e-learning
    112110        $id_zone = intval(lire_config('elearning/zone_elearning'));
    113111       
    114112        // On lie la rubrique à sa zone
    115         sql_insertq(
    116                 'spip_zones_rubriques',
    117                 array(
    118                         'id_zone' => $id_zone,
    119                         'id_rubrique' => $id_rubrique
    120                 )
    121         );
     113        objet_associer(array('zone'=>$id_zone), array('rubrique'=>$id_rubrique));
    122114       
    123115        // On récupère les rubriques de modules
     
    143135       
    144136                // Création du lien si ça a marché
    145                 if ($id_zone_module)
    146                         sql_insertq(
    147                                 'spip_zones_rubriques',
    148                                 array(
    149                                         'id_zone' => $id_zone_module,
    150                                         'id_rubrique' => intval($module['id_rubrique'])
    151                                 )
    152                         );
     137                if ($id_zone_module) {
     138                        objet_associer(array('zone'=>$id_zone_module), array('rubrique'=>intval($module['id_rubrique'])));
     139                }
    153140               
    154141                // Enregistrement de la zone dans la config de la rubrique, pour accès rapide
    155                 ecrire_config('tablepack::rubrique@extra:'.intval($module['id_rubrique']).'/elearning/zone',$id_zone_module);
     142                ecrire_config('elearning/modules/'.intval($module['id_rubrique']).'/zone', $id_zone_module);
    156143        }
    157144       
     
    162149// Nettoie les zones de modules créées automatiquement par le plugin, ainsi que tous les liens qui vont avec
    163150function elearning_nettoyer_les_zones_modules() {
    164         find_in_path('abstract_sql.php', 'base/', true);
    165        
    166151        // On récupère la zone contenant le e-learning
    167152        $id_zone = intval(lire_config('elearning/zone_elearning'));
     
    171156       
    172157        // On supprime le lien entre les deux
    173         sql_delete(
    174                 'spip_zones_rubriques',
    175                 'id_zone = '.$id_zone.' AND id_rubrique = '.$id_rubrique
    176         );
     158        objet_dissocier(array('zone'=>$id_zone), array('rubrique'=>$id_rubrique));
    177159       
    178160        // On récupère les anciennes rubriques de modules
     
    191173                $zones_modules = sql_allfetsel(
    192174                        'distinct id_zone',
    193                         'spip_zones_rubriques',
    194                         'id_rubrique IN ('.join(', ', $modules).')'
     175                        'spip_zones_liens',
     176                        array(
     177                                'objet = "rubrique"',
     178                                sql_in('id_objet', $modules),
     179                        )
    195180                );
    196181                $zones_modules = array_map('reset', $zones_modules);
     
    204189                        );
    205190       
    206                         // On supprime les liens de ces zones avec des rubriques
    207                         sql_delete(
    208                                 'spip_zones_rubriques',
    209                                 'id_zone IN ('.join(', ', $zones_modules).')'
    210                         );
    211        
    212                         /*// On supprime les liens de ces zones avec des auteurs
    213                         sql_delete(
    214                                 'spip_zones_auteurs',
    215                                 'id_zone IN ('.join(', ', $zones_modules).')'
    216                         );*/
     191                        // On supprime les liens de ces zones
     192                        objet_dissocier(array('zone'=>$zones_modules), array('*'=>'*'));
    217193                }
    218194        }
     
    242218// Renvoie un tableau listant les zones de module autorisées pour un auteur
    243219function elearning_liste_zones_autorisees_auteur($id_auteur=null) {
     220        include_spip('base/abstract_sql');
     221       
    244222        // On va remplir petit à petit ce tableau
    245223        $zones_modules = array();
    246224       
    247         find_in_path('abstract_sql.php', 'base/', true);
    248        
    249225        // On récupère la rubrique e-learning
    250226        $id_rubrique = intval(lire_config('elearning/rubrique_elearning'));
    251227       
    252228        // On récupère tous les modules
    253         $modules = sql_allfetsel(
     229        $ids_modules = sql_allfetsel(
    254230                'id_rubrique',
    255231                'spip_rubriques',
     
    258234                )
    259235        );
    260         $modules = array_map('reset', $modules);
     236        $ids_modules = array_map('reset', $ids_modules);
    261237       
    262238        // Si $id_auteur est nul, l'auteur est celui de la session, sinon on récupère dans la base
     
    275251        if ($auteur['statut'] <= '1comite'){
    276252                // On récupère les zones de chaque modules
    277                 foreach ($modules as $module){
    278                         $module = intval($module);
    279                         $zones_modules[] = intval(lire_config('tablepack::rubrique@extra:'.$module.'/elearning/zone'));
     253                foreach ($ids_modules as $id_module){
     254                        $id_module = intval($id_module);
     255                        $zones_modules[] = intval(lire_config('elearning/modules/'.$id_module.'/zone'));
    280256                }
    281257        }
    282258        // Sinon on teste les résultats des jeux associés aux rubriques
    283259        else{
    284                 foreach ($modules as $module){
    285                         $module = intval($module);
    286                         $jeu = intval(lire_config('tablepack::rubrique@extra:'.$module.'/elearning/jeu'));
    287                         $score_a_atteindre = intval(lire_config('tablepack::rubrique@extra:'.$module.'/elearning/score'));
     260                foreach ($ids_modules as $id_module){
     261                        $id_module = intval($id_module);
     262                        $id_jeu = intval(lire_config('elearning/modules/'.$id_module.'/jeu'));
     263                        $score_a_atteindre = intval(lire_config('elearning/modules/'.$id_module.'/score'));
     264                        $id_zone = intval(lire_config('elearning/modules/'.$id_module.'/zone'));
    288265                       
    289266                        // Si ya pas de jeu ou un score de 0, on ne teste rien et on autorise
    290                         if (!$jeu or !$score_a_atteindre)
    291                                 $zones_modules[] = intval(lire_config('tablepack::rubrique@extra:'.$module.'/elearning/zone'));
     267                        if (!$id_jeu or !$score_a_atteindre) {
     268                                $zones_modules[] = $id_zone;
     269                        }
    292270                        else{
    293271                                // On récupère le dernier résultat de jeu de la personne
     
    299277                                        'spip_jeux_resultats',
    300278                                        array(
    301                                                 'id_jeu = '.$jeu,
     279                                                'id_jeu = '.$id_jeu,
    302280                                                'id_auteur = '.$auteur['id_auteur']
    303281                                        ),
     
    305283                                        'date desc'
    306284                                );
    307                                 if ($resultat)
     285                                if ($resultat) {
    308286                                        $score = 100 * $resultat['resultat_court'] / $resultat['total'];
    309                                 else
     287                                }
     288                                else {
    310289                                        $score = 0;
     290                                }
    311291                               
    312292                                // Si le score est bon, on autorise
    313                                 if ($score >= $score_a_atteindre)
    314                                         $zones_modules[] = intval(lire_config('tablepack::rubrique@extra:'.$module.'/elearning/zone'));
    315                        
     293                                if ($score >= $score_a_atteindre) {
     294                                        $zones_modules[] = $id_zone;
     295                                }
    316296                        }
    317297                }
  • _plugins_/elearning/trunk/inclure/elearning_perso.html

    r23706 r99491  
    44        ($GLOBALS['visiteur_session']['statut'] and $GLOBALS['visiteur_session']['statut'] <= '1comite')
    55){?>
    6         <INCLURE{fond=fonds/elearning_perso_prive}{id_auteur}>
     6        <INCLURE{fond=inclure/elearning_perso_prive}{id_auteur}>
    77<?php } ?>
  • _plugins_/elearning/trunk/inclure/elearning_perso_prive.html

    r27845 r99491  
    22[<div class="elearning_perso">
    33        <h3 class="spip"><:bigbrother:voir_statistiques_auteur:></h3>
    4         (#INCLURE{fond=fonds/bigbrother_statistiques_auteur}{id_auteur}{pagination=5}{ajax})
     4        (#INCLURE{fond=inclure/bigbrother_statistiques_auteur}{id_auteur}{pagination=5}{ajax})
    55</div>]
    66
    77[<div class="elearning_perso">
    88        <h3 class="spip"><:elearning:resultats:></h3>
    9         (#INCLURE{fond=fonds/elearning_resultats_auteur}{id_auteur}{pagination=5}{ajax})
     9        (#INCLURE{fond=inclure/elearning_resultats_auteur}{id_auteur}{pagination=5}{ajax})
    1010</div>]
  • _plugins_/elearning/trunk/paquet.xml

    r99365 r99491  
    55        etat="dev"
    66        compatibilite="[3.0.0;3.1.*]"
    7         schema="0.1.0"
     7        schema="1.0.0"
    88        documentation="http://contrib.spip.net/Plugin-E-learning"
    99>       
Note: See TracChangeset for help on using the changeset viewer.