Changeset 31972 in spip-zone


Ignore:
Timestamp:
Oct 8, 2009, 8:21:27 AM (10 years ago)
Author:
rastapopoulos@…
Message:

Et maintenant on peut aussi importer les fichiers d'export.

On peut aussi supprimer entièrement un menu, ce qui n'était bizarement pas possible avant.

Pour la peine, on hausse la version, parce que c'est une nouvelle fonctionnalité d'ajoutée.

Location:
_plugins_/menus
Files:
1 added
8 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/menus/css/menuspip.css

    r30969 r31972  
     1
     2.formulaire_editer_menu_entrees{
     3        position:relative;
     4}
     5.formulaire_editer_menu_entrees .image_loading{
     6        position:absolute;
     7        top:50%;
     8        left:50%;
     9}
    110
    211.formulaire_spip ul.menus_entrees{
     
    1928
    2029.formulaire_spip ul.menus_entrees .ligne{
    21         padding-right:50%;
     30        position:relative;
    2231}
    2332
    24 .formulaire_spip ul.menus_entrees .description{
    25         float:left;
    26         width:100%;
    27 }
    2833.formulaire_spip ul.menus_entrees .actions{
    29         float:right;
    30         width:95%;
    31         margin-right:-100%;
     34        position:absolute;
     35        right:5px;
     36        top:5px;
    3237        text-align:right;
    33         line-height:29px;
    3438}
    3539
  • _plugins_/menus/formulaires/editer_menu.html

    r31380 r31972  
    4242                                                                <input type="text" class="text" name="#GET{name}" id="#GET{name}" size="40" value="#ENV{#GET{name}}" />
    4343                                                        </li>
     44                                                       
     45                                                        [(#REM) Seulement si c'est un nouveau)]
     46                                                        [(#ENV{id_menu}|non)
     47                                                        #SET{name,import}
     48                                                        #SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
     49                                                        <li class="editer_[(#GET{name})][ (#GET{erreurs}|oui)erreur]">
     50                                                                <label for="#GET{name}"><:menus:formulaire_importer:></label>
     51                                                                <div class="explication"><:menus:formulaire_importer_explication:></div>
     52                                                                [<span class='erreur_message'>(#GET{erreurs})</span>]
     53                                                                <input type="file" class="file" name="#GET{name}" id="#GET{name}" size="20" value="#ENV{#GET{name}}" />
     54                                                        </li>
     55                                                        ]
    4456                                                </ul>
    4557
  • _plugins_/menus/formulaires/editer_menu.php

    r31380 r31972  
    4646                        $contexte['id_menu'] = $id_menu;
    4747               
    48                         // Les deux champs du menu principal
     48                        // Les champs du menu principal
    4949                        $contexte['titre'] = '';
    5050                        $contexte['identifiant'] = '';
     51                        $contexte['css'] = '';
     52                        $contexte['import'] = '';
    5153               
    5254                        // Si le menu existe on prérempli
     
    108110        $retours = array();
    109111       
    110         // On récupère les deux champs
     112        // On récupère les champs
    111113        $titre = _request('titre');
    112114        $identifiant = _request('identifiant');
     
    136138                        )
    137139                );
     140               
     141                // S'il y a un fichier on tente d'importer son contenu
     142                if ($_FILES['import']){
     143                        $fichier = $_FILES['import']['tmp_name'];
     144                        $yaml = '';
     145                        lire_fichier($fichier, $yaml);
     146                        // Si on a bien recupere une chaine on tente de la decoder
     147                        if ($yaml){
     148                                include_spip('inc/yaml');
     149                                $entrees = yaml_decode($yaml);
     150                                // Si le decodage marche on importe alors le contenu
     151                                if (is_array($entrees)){
     152                                        menus_importer($entrees, $id_menu);
     153                                }
     154                        }
     155                }
    138156        }
    139157       
     
    154172}
    155173
     174function menus_importer($entrees, $id_menu){
     175        // On lit chaque entree de premier niveau
     176        foreach ($entrees as $cle => $entree){
     177                // On ajoute cette entree
     178                $id_menus_entree = sql_insertq(
     179                        'spip_menus_entrees',
     180                        array(
     181                                'id_menu' => $id_menu,
     182                                'rang' => ($cle+1),     // les entrees sont dans l'ordre des rangs
     183                                'type_entree' => $entree['type_entree'],
     184                                'parametres' => serialize($entree['parametres'])
     185                        )
     186                );
     187               
     188                // S'il existe un sous-menu pour cette entree on le cree
     189                if (is_array($entree['sous_menu'])){
     190                        $id_sous_menu = sql_insertq(
     191                                'spip_menus',
     192                                array(
     193                                        'id_menus_entree' => $id_menus_entree
     194                                )
     195                        );
     196                        // Puis dedans on importe les entrees correspondantes
     197                        menus_importer($entree['sous_menu'], $id_sous_menu);
     198                }
     199        }
     200}
     201
    156202?>
  • _plugins_/menus/formulaires/editer_menu_entrees.php

    r31950 r31972  
    247247        }
    248248       
    249         // Si on veut supprimer un sous-menu ---------------------------------------
    250        
    251         if ($id_menu = intval(_request('supprimer_sous_menu'))){
     249        // Si on veut supprimer un menu --------------------------------------------
     250       
     251        if ($id_menu = intval(_request('supprimer_menu'))){
     252                // Est-ce un menu ou un sous-menu ?
     253                $sous_menu = intval(sql_getfetsel(
     254                        'id_menus_entree',
     255                        'spip_menus',
     256                        'id_menu = '.$id_menu
     257                ));
    252258                $ok = menus_supprimer_menu($id_menu);
    253259                if (!$ok) $retours['message_erreur'] = _T('menus:erreur_mise_a_jour');
     260                if ($ok and !$sous_menu) $retours['redirect'] = generer_url_ecrire('menus_tous');
    254261        }
    255262       
  • _plugins_/menus/formulaires/inc-menus_entrees.html

    r31962 r31972  
    3838                #INCLURE{fond=formulaires/inc-nouvelle_entree-2, env, id_menus_entree=#ID_MENUS_ENTREE}
    3939                <//B_test_modifier>
     40               
    4041                [(#REM) Est-ce qu'il y a un sous-menu ?)]
    4142                <BOUCLE_sous_menu(MENUS){id_menus_entree}>
     
    4950                #SET{type_entree, (#ENV{erreurs}|table_valeur{type_entree})}
    5051
    51                 [(#GET{id_menu_nouvelle_entree}|=={#ENV{id_menu}}|non)
    52                         <span class='image_loading'></span>
     52                <BOUCLE_pas_demande_entree(CONDITION){si #GET{id_menu_nouvelle_entree}|=={#ENV{id_menu}}|non}>
     53                        [(#ENV{sous_menu}|non)<span class="image_loading"></span>]
    5354                        <button type="submit" class="submit" name="demander_nouvelle_entree" value="#ENV{id_menu}">
    5455                                [<img src="(#CHEMIN{images/menus_action_ajouter.png})" />]
    5556                                <:menus:formulaire_ajouter_entree:>
    5657                        </button>
    57                         [(#ENV{sous_menu}|oui)
    58                         <button type="submit" class="submit" name="supprimer_sous_menu" value="#ENV{id_menu}">
     58                        <button type="submit" class="submit" name="supprimer_menu" value="#ENV{id_menu}">
    5959                                [<img src="(#CHEMIN{images/menus_action_supprimer.png})" />]
    60                                 <:menus:formulaire_supprimer_sous_menu:>
     60                                [(#ENV{sous_menu}|?{<:menus:formulaire_supprimer_sous_menu:>,<:menus:formulaire_supprimer_menu:>})]
    6161                        </button>
    62                         ]
    63                 ]
    64                 [(#GET{id_menu_nouvelle_entree}|=={#ENV{id_menu}}|oui)
     62                </BOUCLE_pas_demande_entree>
    6563                        [(#GET{type_entree}|non)
    6664                                #INCLURE{fond=formulaires/inc-nouvelle_entree-1, env, id_menu_nouvelle_entree=#GET{id_menu_nouvelle_entree}}
     
    6967                                #INCLURE{fond=formulaires/inc-nouvelle_entree-2, env, id_menu_nouvelle_entree=#GET{id_menu_nouvelle_entree}, rang_suivant=#GET{rang_suivant}}
    7068                        ]
    71                 ]
     69                <//B_pas_demande_entree>
    7270        </li>
    7371</ul>
  • _plugins_/menus/lang/menus_en.php

    r31963 r31972  
    1010'editer_menus_editer' => 'Edit this menu',
    1111'editer_menus_exporter' => 'Export this menu',
    12 'editer_menus_importer' => 'Import menu',
    1312
    1413'erreur_autorisation' => 'You are not allowed to modify menus.',
     
    2827'formulaire_css' => 'CSS classes',
    2928'formulaire_css_explication' => 'You can add to your menu additional CSS classes.',
     29'formulaire_importer' => 'Import menu',
     30'formulaire_importer_explication' => 'If you exported a menu in a file, you can import now.',
    3031'formulaire_ajouter_entree' => 'Add a menu item',
    3132'formulaire_modifier_entree' => 'Modify this menu item',
    3233'formulaire_supprimer_entree' => 'Delete this menu item',
     34'formulaire_supprimer_menu' => 'Delete the menu',
    3335'formulaire_supprimer_sous_menu' => 'Delete this sub-menu',
    3436'formulaire_deplacer_haut' => 'Move up',
  • _plugins_/menus/lang/menus_fr.php

    r31963 r31972  
    1010'editer_menus_editer' => '&Eacute;diter ce menu',
    1111'editer_menus_exporter' => 'Exporter ce menu',
    12 'editer_menus_importer' => 'Importer un menu',
    1312
    1413'erreur_autorisation' => 'Vous n\'&ecirc;tes pas autoris&eacute; &agrave; modifier les menus.',
     
    2827'formulaire_css' => 'Classes CSS',
    2928'formulaire_css_explication' => 'Vous pouvez ajouter au menu d\'&eacute;ventuelles classes CSS suppl&eacute;mentaires.',
     29'formulaire_importer' => 'Importer un menu',
     30'formulaire_importer_explication' => 'Si vous avez export&eacute; un menu dans un fichier, vous pouvez l\'importer maintenant.',
    3031'formulaire_ajouter_entree' => 'Ajouter une entr&eacute;e',
    3132'formulaire_modifier_entree' => 'Modifier cette entr&eacute;e',
    3233'formulaire_supprimer_entree' => 'Supprimer cette entr&eacute;e',
     34'formulaire_supprimer_menu' => 'Supprimer le menu',
    3335'formulaire_supprimer_sous_menu' => 'Supprimer ce sous-menu',
    3436'formulaire_deplacer_haut' => 'D&eacute;placer vers le haut',
  • _plugins_/menus/plugin.xml

    r31963 r31972  
    33        <auteur>RastaPopoulos</auteur>
    44        <licence>GPL v3</licence>
    5         <version>0.6</version>
     5        <version>0.7</version>
    66        <version_base>0.5</version_base>
    77        <etat>test</etat>
Note: See TracChangeset for help on using the changeset viewer.