Changeset 82938 in spip-zone


Ignore:
Timestamp:
Jun 10, 2014, 5:10:55 PM (7 years ago)
Author:
bmarne@…
Message:

Mise en place du déplacement des modules dans la page, en utilisant la nouvelle table spip_noisettes.

Un exemple sur la page sommaire...

attention: l'ajout de modules ne fonctionne pas du tout (il ne faut pas encore l'utiliser). le déplacement/suppression fonctionne.

Location:
_squelettes_/galaxie_melusine/melusine/trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • _squelettes_/galaxie_melusine/melusine/trunk/content/sommaire.html

    r82875 r82938  
    1313                       
    1414]
    15 [(#SET{admin_melusine,[(#SESSION{statut}
    16                                 |=={0minirezo}
    17                                 |oui)
    18                         oui]}
    19 )]
    2015        <div class="#GET{col1} ">
    21                 [(#GET{admin_melusine}|oui)
    22                        
    23                         [(#SET{casier_module,melusine_sommaire/x/})]
    24                 [(#SET{casiers_page,"'melusine_squelettes/d/,melusine_squelettes/g/,melusine_sommaire/x/,melusine_sommaire/y/'"})]
    25                         [(#SET{reserve_modules,'melusine_squelettes'})]
    26                         [(#SET{nom_bloc,'Colonne de gauche du sommaire'})]
    27                 <a href="[(#URL_PAGE{ajout_module_bloc,casier=#GET{casier_module}}|parametre_url{'casiers_page',#GET{casiers_page}}|parametre_url{'reserve',#GET{reserve_modules}}|parametre_url{'nom_bloc',#GET{nom_bloc}})]" class='mediabox boxIframe boxWidth-500px boxHeight-500px'>Ajouter un module dans ce bloc</a>
    28                 ]
    29                 <BOUCLE_test(POUR){tableau #GET{sommairegauche}}>
    30                          <BOUCLE_cond(CONDITION){si #VALEUR|=={aucun}}>
    31    
    32                         </BOUCLE_cond>
    33                                 <div class="module_melusine[(#GET{admin_melusine}|oui) admin_melusine]">
    34                                         [(#GET{admin_melusine}|oui)#FORMULAIRE_MELUSINE_DEPLACER_MODULE{#VALEUR,#CLE,#GET{casier_module},#ENV}]
    35                                         <INCLURE{fond=modules/#VALEUR}>
    36                                 </div>
    37                         <//B_cond>
    38                 </BOUCLE_test>
     16                <INCLURE{fond=inclure/inc_pile_modules,bloc=content}{type=#ENV{type-page}}>
    3917        </div>
    4018
    4119        <div class="#GET{col2}">
    42                 <BOUCLE_test2(POUR){tableau #GET{sommairedroite}}>
    43                         <BOUCLE_cond2(CONDITION){si #VALEUR|=={aucun}}>
    44    
    45                         </BOUCLE_cond2>
    46                                 <div >
    47                                         <INCLURE{fond=modules/#VALEUR}>
    48                                 </div>
    49                         <//B_cond2>
    50                 </BOUCLE_test2>
     20                <INCLURE{fond=inclure/inc_pile_modules,bloc=content-col2}{type=#ENV{type-page}}>
    5121        </div>
  • _squelettes_/galaxie_melusine/melusine/trunk/formulaires/melusine_deplacer_module.html

    r82752 r82938  
     1<BOUCLE_module(NOISETTES){id_noisette}>
    12<div class="formulaire_spip formulaire_deplacer_module">
    23        [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
     
    1617                        </li>
    1718                </ul>
    18                 <p class="nom_module">[Module &laquo;&nbsp;(#ENV{nom_module}|replace{"_"," "}|spip_ucfirst)&nbsp;&raquo;]</p>
     19                <p class="nom_module">[Module &laquo;&nbsp;(#NOOP|melusine_lister_noisettes|table_valeur_cleslash{#NOISETTE!nom}|spip_ucfirst)&nbsp;&raquo;]</p>
    1920        </div></form>
    2021</div>
     22</BOUCLE_module>
  • _squelettes_/galaxie_melusine/melusine/trunk/formulaires/melusine_deplacer_module.php

    r82860 r82938  
    1818 * @uses formulaires_editer_objet_charger()
    1919 *
    20  * @param int|string $nom_module
    21  *     nom du fichier du module
    22  * @param int|string $position_module
    23  *     position du module
    24  * @param int|string $casier
    25  *     emplacement de la description du bloc dans les metas de SPIP
    26         (ex. melusine_sommaire/x/)
    27  * @param int $env
    28  *     environnement du module
     20 * @param int|string $id_noisette
     21 *
    2922 * @return array
    3023 *     Environnement du formulaire
    3124 */
    32 function formulaires_melusine_deplacer_module_charger_dist($nom_module="aucun", $position_module=0, $casier="", $env=array()){
     25function formulaires_melusine_deplacer_module_charger_dist($id_noisette){
    3326
    3427        $valeurs = array(
    35                 "nom_module" => $nom_module,
    36                 "position_module" => $position_module,
    37                 "casier" => $casier,
    38                 "environnement" => $env
     28                "id_noisette" => $id_noisette
    3929        );
    4030
     
    4838 * @uses formulaires_editer_objet_verifier()
    4939 *
    50  * @param int|string $nom_module
    51  *     nom du fichier du module
    52  * @param int|string $position_module
    53  *     position du module
    54  * @param int|string $casier
    55  *     emplacement de la description du bloc dans les metas de SPIP
    56         (ex. melusine_sommaire/x/)
    57  * @param int $env
    58  *     environnement du module
     40 * @param int|string $id_noisette
     41 *
    5942 * @return array
    6043 *     Tableau des erreurs
    6144 */
    62 function formulaires_melusine_deplacer_module_verifier_dist($nom_module="aucun", $position_module=0, $casier="", $env=array()){
     45function formulaires_melusine_deplacer_module_verifier_dist($id_noisette){
    6346        $erreurs = array();
    64         include_spip('inc/config');
    6547
    66         if (!$casier OR !lire_config($casier))
    67                 $erreurs["message_erreur"] = "le bloc n'a pas été correctement défini";
     48        if (!$id_noisette)
     49                $erreurs["message_erreur"] = "le module n'a pas été correctement défini";
    6850
    6951        $action = _request("deplacement");
     
    8365 * @uses formulaires_editer_objet_traiter()
    8466 *
    85  * @param int|string $nom_module
    86  *     nom du fichier du module
    87  * @param int|string $position_module
    88  *     position du module
    89  * @param int|string $casier
    90  *     emplacement de la description du bloc dans les metas de SPIP
    91         (ex. melusine_sommaire/x/)
    92  * @param int $env
    93  *     environnement du module
     67 * @param int|string $id_noisette
     68 *
    9469 * @return array
    9570 *     retour des traitements
    9671 */
    97 function formulaires_melusine_deplacer_module_traiter_dist($nom_module="aucun", $position_module=0, $casier="", $env=array()){
     72function formulaires_melusine_deplacer_module_traiter_dist($id_noisette){
     73        $retour = array();
    9874
    9975        // Il vaut mieux éviter l'ajax et
     
    10480        $action=_request('deplacement');
    10581
     82        // Infos de la noisette:
     83        include_spip('base/abstract_sql');
     84        $infos_module= sql_fetsel(
     85                array(
     86                        "rang",
     87                        "type",
     88                        "bloc",
     89                        "noisette"
     90                        ),
     91                "spip_noisettes",
     92                "id_noisette=".intval($id_noisette)
     93                );
     94
    10695        // On récupère la position
    107         $var=$position_module;
     96        $rang=intval($infos_module['rang']);
    10897
    10998
    110         include_spip('inc/config');
     99        include_spip('action/editer_objet');
     100
    111101
    112102        // descendre d'une rangée
    113103        // 12 rangées maxi
    114         if($action=="descendre" && $var<11 ){
    115                 $varplus=$var+1;
    116                 $chemin=$casier.$var;
    117                 $chemin_bas=$casier.$varplus;
    118                 $pos=lire_config($chemin);
    119                 $pos_bas=lire_config($chemin_bas);
    120                 ecrire_config($chemin_bas, $pos);
    121                 ecrire_config($chemin,$pos_bas);                               
     104        if($action=="descendre" && $rang<11 ){
     105                // On regarde si on a un module en dessous
     106                $infos_module_suivant= sql_fetsel(
     107                array(
     108                        "rang",
     109                        "type",
     110                        "bloc",
     111                        "noisette",
     112                        "id_noisette"
     113                        ),
     114                "spip_noisettes",
     115                "type = '".$infos_module['type'].
     116                "' AND bloc = '".$infos_module['bloc'].
     117                "' AND rang > ".$rang
     118                );
     119                if ($infos_module_suivant) {
     120                        // si oui, on intervertit les rangs
     121                        $retour["message_erreur"] = $retour["message_erreur"].objet_modifier("noisette",$id_noisette, array("rang" => $infos_module_suivant["rang"]));
     122                        $retour["message_erreur"] = $retour["message_erreur"].objet_modifier("noisette",$infos_module_suivant["id_noisette"], array("rang" => $rang));
     123                } else {
     124                        // si non, on incrémente le rang
     125                        $retour["message_erreur"] = $retour["message_erreur"].objet_modifier("noisette",$id_noisette, array("rang" => $rang+1));
     126                }
    122127        }
    123128
    124129        // monter d'une rangée
    125         if($action=="monter" && $var>1 ){
    126                 $varmoins=$var-1;
    127                 $chemin=$casier.$var;
    128                 $chemin_haut=$casier.$varmoins;
    129                 $pos=lire_config($chemin);
    130                 $pos_haut=lire_config($chemin_haut);
    131                 ecrire_config($chemin_haut, $pos);
    132                 ecrire_config($chemin,$pos_haut);               
     130        if($action=="monter" && $rang>1 ){
     131                // On regarde si on a un module au dessus
     132                $infos_module_precedent= sql_fetsel(
     133                array(
     134                        "rang",
     135                        "type",
     136                        "bloc",
     137                        "noisette",
     138                        "id_noisette"
     139                        ),
     140                "spip_noisettes",
     141                "type = '".$infos_module['type'].
     142                "' AND bloc = '".$infos_module['bloc'].
     143                "' AND rang < ".$rang
     144                );
     145                if ($infos_module_precedent) {
     146                        // si oui, on intervertit les rangs
     147                        $retour["message_erreur"] = $retour["message_erreur"].objet_modifier("noisette",$id_noisette, array("rang" => $infos_module_precedent["rang"]));
     148                        $retour["message_erreur"] = $retour["message_erreur"].objet_modifier("noisette",$infos_module_precedent["id_noisette"], array("rang" => $rang));
     149                } else {
     150                        // si non, on décrémente le rang
     151                        $retour["message_erreur"] = $retour["message_erreur"].objet_modifier("noisette",$id_noisette, array("rang" => $rang-1));
     152                }
    133153        }
    134154
    135155        // Supprimer le contenu de la rangée
    136156        if($action=="supprimer"){
    137                 $chemin=$casier.$var;
    138                 ecrire_config($chemin,'aucun');
    139                 // On utilise que el derbier param qui définit le casier
    140                 // TODO changer l'arité de cette fonction quand
    141                 // les zones ne seront plus utilisées
    142                 melusine_rassembler($var,"","",$casier);
     157                $result = sql_delete("spip_noisettes","id_noisette =".intval($id_noisette));
     158                if ($result === false)
     159                        return $retour['message_erreur'] = "Échec lors de la suppression du module...";
    143160        }
    144161
     
    148165        suivre_invalideur(1);
    149166
     167        if (count($retour) < 1)
     168                $retour = array(
     169                        'message_ok'=>'enregistré',
     170                        'id_noisette' => $id_noisette
     171                );
    150172
    151         return array('message_ok'=>'enregistré');
     173        return $retour;
    152174       
    153175}
  • _squelettes_/galaxie_melusine/melusine/trunk/inclure/inc_pile_modules.html

    r82876 r82938  
    44        les blocs
    55
    6         L'appel du module prend des paramètres obligatoires:
    7                 casier_module (nom du casier dans lequel se trouve la liste des modules)
    8                 casiers_page (listes des casiers dans lesquels on doit vérifier la présence d'une autre module en cas d'unicité)
    9                 reserve_modules (liste des modules possibles)
     6        L'appel du module prend un paramètre obligatoire:
     7                bloc: nom du bloc dans lequel on veut gérer les modules
    108
    119        optionnel:
    12                 nom_bloc (nom du bloc)
     10                type: type de page, s'il est absent le type de page est "rubrique"
    1311
    1412
    1513
    1614
    17 ]<BOUCLE_Casier(CONDITION){si #ENV{casier_module}|oui}>
    18         [(#SET{casier_module,#ENV{casier_module}})]
    19         [(#SET{admin_melusine,[(#SESSION{statut}
    20                                 |=={0minirezo}
    21                                 |oui)
    22                         oui]}
    23         )]
    24         #SET{contenu_casiers, (#CONFIG{#GET{casier_module}}|serialize)}
    25 
    26         [(#GET{admin_melusine}|oui
    27                 <a href="[(#URL_PAGE{ajout_module_bloc,casier=#GET{casier_module}}
    28                                 |parametre_url{'casiers_page',#ENV{casiers_page}}
    29                                 |parametre_url{'reserve',#ENV{reserve_modules}}
    30                                 |parametre_url{'nom_bloc',#ENV{nom_bloc,Bloc sans nom}}
    31                         )]" class='mediabox boxIframe boxWidth-500px boxHeight-500px'>
    32                         Ajouter un module dans ce bloc
    33                 </a>
    34         ]
    35                 <BOUCLE_liste_modules(POUR){tableau #GET{contenu_casiers}}>
    36                          <BOUCLE_si_module(CONDITION){si #VALEUR|=={aucun}}>
    37    
    38                         </BOUCLE_si_module>
    39                                 <div class="module_melusine[(#GET{admin_melusine}|oui) admin_melusine]">
    40                                 [(#GET{admin_melusine}|oui)
    41                                         #FORMULAIRE_MELUSINE_DEPLACER_MODULE{#VALEUR,#CLE,#GET{casier_module},#ENV}
    42                                 ]
    43                                         <INCLURE{fond=modules/#VALEUR}>
    44                                 </div>
    45                         <//B_si_module>
    46                 </BOUCLE_liste_modules>
    47 </BOUCLE_Casier>
     15]
     16#SET{type_par_defaut,rubrique}
     17[(#SET{admin_melusine,[(#SESSION{statut}
     18                        |=={0minirezo}
     19                        |oui)
     20                oui]}
     21)]
     22[(#SET{nom_bloc,[(#BLOC|melusine_nombloc) ([(#TYPE)])]})]
     23[(#GET{admin_melusine}|oui)
     24<a href="[(#URL_PAGE{ajout_module_bloc,bloc=#BLOC}
     25                |parametre_url{'type',#TYPE}
     26                |parametre_url{'nom_bloc',#GET{nom_bloc}}
     27        )]" class='mediabox boxIframe boxWidth-500px boxHeight-500px'>
     28        Ajouter un module dans ce bloc
     29</a>]
     30<BOUCLE_modules(NOISETTES){type=#ENV{type,#GET{type_par_defaut}}}{bloc}{par rang}>
     31<div class="module_melusine[(#GET{admin_melusine}|oui) admin_melusine][ (#ENV{id_noisette}|=={#ID_NOISETTE}|oui)on]">
     32[(#GET{admin_melusine}|oui)
     33        #FORMULAIRE_MELUSINE_DEPLACER_MODULE{#ID_NOISETTE}
     34]
     35        [(#SET{fond,[(#NOISETTE|strrpos{"/"}|?{"","noisettes/"}|concat{#NOISETTE})]})]
     36        <INCLURE{fond=#GET{fond}}>
     37</div>
     38</BOUCLE_modules>
    4839#FILTRE{trim}
  • _squelettes_/galaxie_melusine/melusine/trunk/melusine_fonctions.php

    r82925 r82938  
    360360                        );
    361361        }
    362                
     362
    363363        if (count($liste)){
    364364                foreach($liste as $squelette=>$chemin) {
     365
    365366                        $noisette = preg_replace(',[.]html$,i', '', $squelette);
    366367                        $dossier = str_replace($squelette, '', $chemin);
     
    370371                        if ($sous_rep_pos === false)
    371372                                $sous_rep_pos = ""; // compat noizetier: pas de chemin dans le nom de la noisette
    372                        
    373373                        // On ne garde que les squelettes ayant un fichier YAML de config
    374374                        if (file_exists("$dossier$noisette.yaml")
     
    526526        return $noisettes;
    527527}
     528
     529/**
     530 * Fork du filtre table_valeur: pour pouvoir utiliser des clé avec des "/"
     531 * permet de recuperer la valeur d'une cle donnee
     532 * dans un tableau (ou un objet).
     533 *
     534 * @param mixed $table
     535 *              Tableau ou objet
     536 *              (ou chaine serialisee de tableau, ce qui permet d'enchainer le filtre)
     537 *             
     538 * @param string $cle
     539 *              Cle du tableau (ou parametre public de l'objet)
     540 *              Cette cle peut contenir des caracteres ! (et non /) pour selectionner
     541 *              des sous elements dans le tableau, tel que "sous.element.ici"
     542 *              pour obtenir la valeur de $tableau['sous']['element']['ici']
     543 *
     544 * @param mixed $defaut
     545 *              Valeur par defaut retournee si la cle demandee n'existe pas
     546 *
     547 * @return mixed Valeur trouvee ou valeur par defaut.
     548**/
     549function table_valeur_cleslash($table, $cle, $defaut='') {
     550        foreach (explode('!', $cle) as $k) {
     551
     552                $table = is_string($table) ? @unserialize($table) : $table;
     553
     554                if (is_object($table)) {
     555                        $table =  (($k !== "") and isset($table->$k)) ? $table->$k : $defaut;
     556                } elseif (is_array($table)) {
     557                        $table = isset($table[$k]) ? $table[$k] : $defaut;
     558                } else {
     559                        $table = $defaut;
     560                }
     561        }
     562        return $table;
     563}
     564
     565/**
     566 * Retourne le joli nom d'un bloc passé en argument
     567 *
     568 * @param text $bloc nom abrégé du bloc
     569 *
     570 * @return text joli nom du bloc
     571 *
     572**/
     573
     574function melusine_nombloc($bloc){
     575        $fin_nom_col = strrpos($bloc,"-col");
     576        if ($fin_nom_col === false)
     577                return $GLOBALS['noms_z_blocs'][$bloc];
     578        if (strripos($bloc,"3",$fin_nom_col))
     579                return $GLOBALS['noms_z_blocs'][substr($bloc,0,$fin_nom_col)]." colonne 3";
     580        if (strripos($bloc,"2",$fin_nom_col))
     581                return $GLOBALS['noms_z_blocs'][substr($bloc,0,$fin_nom_col)]." colonne 2";
     582        return "Pas de nom";
     583}
    528584?>
Note: See TracChangeset for help on using the changeset viewer.