Changeset 105430 in spip-zone


Ignore:
Timestamp:
Jul 23, 2017, 3:04:08 PM (3 years ago)
Author:
eric@…
Message:

Refactoring des fonctions d'ajout et de déplacement des noisettes d'un bloc.
Suppression de la validation du choix.
Nettoyage des css associés.
Début de refactoring de la liste des noisettes disponibles avec des onglets (pas fini)

Location:
_plugins_/noizetier/trunk
Files:
3 added
3 deleted
8 edited
1 moved

Legend:

Unmodified
Added
Removed
  • _plugins_/noizetier/trunk/formulaires/ajouter_noisette.html

    r105244 r105430  
    1313                <input type="hidden" name="bloc" value="#ENV{bloc}" />
    1414                <h3 class="titrem"><:noizetier:noisettes_disponibles:></h3>
    15                 <INCLURE{fond=formulaires/inc-liste_noisettes_disponibles,
     15                <INCLURE{fond=formulaires/inclure/inc-noisettes_disponibles,
    1616                        page,
    1717                        objet,
    1818                        id_objet,
    19                         form=oui} />
     19                        input_radio=on} />
    2020
    2121                [(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
  • _plugins_/noizetier/trunk/formulaires/editer_page.html

    r104671 r105430  
    7373                                        maj_apercu_icone = function(){
    7474                                                i = jQuery('input#icon').val();
    75                                                 jQuery.get('#URL_PAGE{apercu-icone}&icone='+i, function(data) {
     75                                                jQuery.get('#URL_PAGE{icone-preview}&icone='+i, function(data) {
    7676                                                        jQuery('span#apercu_icone').html(data);
    7777                                                });
  • _plugins_/noizetier/trunk/formulaires/lister_noisettes_page.html

    r105347 r105430  
    2323                                <div>
    2424                                        <div class="resume">
    25                                                 [(#NOM)]
     25                                                [(#NOM|_T_ou_typo)]
    2626                                                [<br />(#NOIZETIER_NOISETTE_PREVIEW)]
    2727                                                [(#REM) Logo de la noisette ]
     
    5353                        </li>
    5454                </BOUCLE_noisettes>
     55                        <input type="hidden" name="nb_noisettes" value="#TOTAL_BOUCLE" />
     56                </B_noisettes>
    5557                        <li class="editer item">#BOITE_OUVRIR{'','notice'}<:noizetier:bloc_sans_noisette:>#BOITE_FERMER</li>
     58                        <input type="hidden" name="nb_noisettes" value="0" />
    5659                <//B_noisettes>
    5760                </ul>
  • _plugins_/noizetier/trunk/formulaires/lister_noisettes_page.php

    r105339 r105430  
    2525
    2626        $ordre = _request('ordre');
     27        $nb_noisettes = intval(_request('nb_noisettes'));
     28
    2729        include_spip('noizetier_fonctions');
    28         if (noizetier_noisette_ranger($ordre, $page, $bloc)) {
    29                 $retour['message_ok'] = _T('info_modification_enregistree');
     30        if (count($ordre) > $nb_noisettes) {
     31                // On vient d'ajouter par glisser-déposer une nouvelle noisette, on la rajoute d'abord en fin
     32                // de liste avant d'appeler la fonction de rangement pour les noisettes qui suivent.
     33                // -- Identifier la noisette qui vient d'être glissée dans le bloc et retenir son rang : c'est la seule
     34                //    valeur de type chaine qui n'est pas un id de noisette.
     35                $index = array_search(0, array_map('intval', $ordre));
     36                $noisette = $ordre[$index];
     37                $rang = $index + 1;
     38                if ($id_noisette = noizetier_noisette_ajouter($noisette, $page, $bloc, $rang)) {
     39                        // On met à jour le tableau donnant l'ordre des noisettes avec l'id de la noisette
     40                        // et on demande le rangement des noisettes qui suivent la noisette ajoutée.
     41                        $ordre[$index] = "${id_noisette}";
     42                        if (noizetier_noisette_ranger($ordre, $index + 1)) {
     43                                $retour['message_ok'] = _T('info_modification_enregistree');
     44                        } else {
     45                                $retour['message_erreur'] = _T('noizetier:erreur_mise_a_jour');
     46                        }
     47                } else {
     48                        $retour['message_erreur'] = _T('noizetier:erreur_mise_a_jour');
     49                }
    3050        } else {
    31                 $retour['message_erreur'] = _T('noizetier:erreur_mise_a_jour');
     51                // On vient juste de changer l'ordre des noisettes, on réordonne toute la liste.
     52                if (noizetier_noisette_ranger($ordre)) {
     53                        $retour['message_ok'] = _T('info_modification_enregistree');
     54                } else {
     55                        $retour['message_erreur'] = _T('noizetier:erreur_mise_a_jour');
     56                }
    3257        }
    3358
  • _plugins_/noizetier/trunk/noizetier_fonctions.php

    r105339 r105430  
    226226
    227227/**
    228  * Ajoute, en dernier rang, une noisette à un bloc d'une page ou d'un contenu.
     228 * Ajoute, à un rang donné ou en dernier rang, une noisette à un bloc d'une page ou d'un contenu.
    229229 *
    230230 * @param string       $noisette
     
    235235 * @param string       $bloc
    236236 *              Nom du bloc où ajouter la noisette.
     237 * @param int          $rang
     238 *              Rang où insérer la noisette. Si l'argument n'est pas fourni ou est égal à 0 on insère la
     239 *      noisette en fin de bloc.
    237240 *
    238241 * @return int
    239242 *              Retourne l'identifiant de la nouvelle instance de noisette créée ou 0 en cas d'erreur.
    240243 **/
    241 function noizetier_noisette_ajouter($noisette, $page, $bloc) {
     244function noizetier_noisette_ajouter($noisette, $page, $bloc, $rang = 0) {
    242245
    243246        // Initialisation de la valeur de sortie.
     
    256259                        'id_objet'    => 0,
    257260                        'bloc'        => $bloc,
     261                        'rang'        => $rang,
    258262                        'noisette'    => $noisette,
    259263                        'parametres'  => serialize($parametres)
     
    276280                }
    277281
    278                 // La noisette est ajoutée en fin de liste : on cherche donc le dernier rang utilisé et on se
     282                // La noisette est ajoutée soit à un rang donné par l'argument fourni si celui-ci est > 0,
     283                // soit en fin de liste : dans ce cas, on cherche donc le dernier rang utilisé et on se
    279284                // positionne au rang suivant et on finalise la description de la noisette
    280                 $rang = intval(sql_getfetsel('max(rang)', 'spip_noisettes', $where)) + 1;
    281                 $description['rang'] = $rang;
     285                // Le rang d'une noisette commence à 1.
     286                if (!$description['rang']) {
     287                        $description['rang'] = intval(sql_getfetsel('max(rang)', 'spip_noisettes', $where)) + 1;
     288                }
    282289
    283290                if ($id_noisette = sql_insertq('spip_noisettes', $description)) {
     
    294301
    295302/**
    296  * Réordonne les noisettes d'un bloc d'une page ou d'un objet.
     303 * Réordonne les noisettes d'un bloc d'une page ou d'un objet à partir d'un index donné du tableau.
    297304 * L'ordre est renvoyé pour l'ensemble des noisettes du bloc.
    298  *
    299  * @param array         $ordre
     305 * Si l'index à partir duquel les noisettes sont réordonnées n'est pas fourni ou est égal à 0
     306 * la fonction réordonne toutes les noisettes.
     307 *
     308 * @param array $ordre
     309 * @param int   $index_initial
    300310 *
    301311 * @return bool
    302312 */
    303 function noizetier_noisette_ranger($ordre) {
    304 
    305         if (sql_preferer_transaction()) {
    306                 sql_demarrer_transaction();
    307         }
    308 
    309         // On modifie le rang de chaque noisette en suivant l'ordre du tableau.
    310         foreach ($ordre as $_cle => $_id_noisette) {
    311                 $modification = array('rang' => $_cle + 1);
    312                 $where = array('id_noisette=' . intval($_id_noisette));
    313                 sql_updateq('spip_noisettes', $modification, $where);
    314         }
    315 
    316         if (sql_preferer_transaction()) {
    317                 sql_terminer_transaction();
     313function noizetier_noisette_ranger($ordre, $index_initial = 0) {
     314
     315        if ($index_initial < count($ordre)) {
     316                if (sql_preferer_transaction()) {
     317                        sql_demarrer_transaction();
     318                }
     319
     320                // On modifie le rang de chaque noisette en suivant l'ordre du tableau à partir de l'index
     321                // initial.
     322                foreach ($ordre as $_cle => $_id_noisette) {
     323                        if ($_cle >= $index_initial) {
     324                                $modification = array('rang' => $_cle + 1);
     325                                $where = array('id_noisette=' . intval($_id_noisette));
     326                                sql_updateq('spip_noisettes', $modification, $where);
     327                        }
     328                }
     329
     330                if (sql_preferer_transaction()) {
     331                        sql_terminer_transaction();
     332                }
    318333        }
    319334
     
    348363                $ordre = array_map('intval', array_column($ordre, 'id_noisette'));
    349364
    350                 // Si il y a plus d'une noisette ans le bloc et que la noisette appartient bien au bloc.
     365                // Si il y a plus d'une noisette dans le bloc et que la noisette appartient bien au bloc.
    351366                if (count($ordre) > 1) {
    352367                        // Mise à jour de l'ordre en fonction de la demande.
  • _plugins_/noizetier/trunk/prive/squelettes/contenu/noizetier_page.html

    r105339 r105430  
    3737
    3838        [(#REM) <!-- Liste des noisettes disponibles --> ]
    39         #SET{titre,#VAL{noizetier:noisettes_disponibles}|_T}
    40         #BOITE_OUVRIR{#GET{titre},'info noisettes_disponibles none'}
     39        <h3><:noizetier:noisettes_disponibles:></h3>
    4140        <p><:noizetier:explication_glisser_deposer:></p>
    42         <INCLURE{fond=formulaires/inc-liste_noisettes_disponibles,
     41        <INCLURE{fond=formulaires/inclure/inc-noisettes_disponibles,
    4342                page,
    4443                objet,
    4544                id_objet,
    46                 ordre=oui} />
    47         #BOITE_FERMER
     45                input_radio=''} />
    4846        <script type="text/javascript">/*<!\[CDATA\[*/
    4947                jQuery('.noisettes_disponibles').show();
    5048                jQuery('ul.liste-noisettes-disponibles li.noisette').draggable({
    51                         connectToSortable: "ul.bloc",
    52                         helper: "clone",
    53                         revert: "invalid",
    54                         cursor: 'move'
     49                        connectToSortable: 'ul.liste-noisettes-bloc',
     50                        helper: 'clone',
     51                        revert: 'invalid',
     52                        cursor: 'move',
     53                        opacity: 0.5
    5554                });
    5655        /*\]\]>*/</script>
  • _plugins_/noizetier/trunk/prive/squelettes/navigation/noisette_edit.html

    r105231 r105430  
    11<BOUCLE_navigation_noisette(NOISETTES noizetier_noisettes){id_noisette}>
    2 [(#REM) <!-- Boite d'info de la noisette --> ]
     2[(#REM) <!-- Boite d'info de la noisette
     3        Il est nécessaire d'appliquer _T_ou_typo sur le champ description car les traitements typo configurés
     4        par défaut ne sont pas appliqués lors d'une jointure --> ]
    35#SET{explication, #DESCRIPTION|_T_ou_typo}
    46<INCLURE{fond=prive/squelettes/inclure/inc-infos_noisette,
  • _plugins_/noizetier/trunk/prive/style_prive_plugin_noizetier.html

    r105347 r105430  
    1616#HTTP_HEADER{Vary: Accept-Encoding}
    1717
    18 .formulaire_editer_noisette li.fieldset {margin-left:10px; margin-right:10px; border-left: solid 1px #CCC; border-right: solid 1px #CCC; border-bottom: solid 1px #CCC;}
    19 ul.liste-noisettes li.noisette {padding-left: 30px; background-repeat: no-repeat; background-position: left 9px; min-height: 24px;}
    20 ul.bloc li.noisette {min-height:36px;}
    21 ul.liste-noisettes .icone {width:36px; height:36px; padding:0; margin-left: 10px;}
    22 ul.liste-noisettes .icone a {width:36px; height:36px; padding:0;}
    23 ul.liste-noisettes .icone b {display:none;}
    24 .icones_texte ul.liste-noisettes .icone b {display: block;}
    25 .icones_texte ul.liste-noisettes .icone {width:60px;}
    26 .icones_texte ul.liste-noisettes .icone a {width:60px;}
    27 ul.liste-noisettes .noisette-up-24, ul.liste-noisettes .noisette-down-24, ul.liste-noisettes .noisette-del-24 {display:none;}
    28 ul.liste-noisettes li:hover .icone {display:block;}
    29 .liste-noisettes .editer.noisette label { float:none; margin-left:0; }
    30 .valider_rang input.link{background:none;border:0;cursor:pointer;padding:0 0 1px;color:#444}
    31 .valider_rang input.link:hover{border-bottom:1px solid;padding:0}
    32 .formulaire_ajouter_noisette ul.liste-noisettes-disponibles {margin: 10px;}
    33 
    34 /* Pour la noisette code Spip libre */
    35 .formulaire_editer_noisette li.editer_description_code, .formulaire_editer_noisette li.editer_code {padding-left:10px;}
    36 .formulaire_editer_noisette li.editer_description_code label, .formulaire_editer_noisette li.editer_code label {width:100%; margin-left:0; float:none;}
    3718
    3819/* Styles de la liste des pages liées ou non à un objet et des objets configurés (noizetier_pages, noizetier_objets) */
     
    6748.infos p.explication {margin-top: 0.5em;}
    6849
     50/* -- Liste des noisettes disponibles */
     51ul.liste-noisettes-disponibles li.noisette {padding-left: 30px; position:relative; min-height: 28px;}
     52ul.liste-noisettes-disponibles li.noisette .icone {
     53        position: absolute;
     54        margin: 0;
     55        top: .6925em;
     56        left: 0;
     57        width: 24px;
     58        height: 24px;
     59        overflow: hidden;}
     60
    6961/* -- Liste des noisettes incluses dans un bloc */
    7062ul.liste-noisettes-bloc li.noisette {padding-left: 30px; padding-right: 120px; position:relative; min-height: 36px;}
     
    8577ul.liste-noisettes-bloc li.noisette .edition a:not(.visible) {display: none;}
    8678
    87 
    8879/* Styles du formulaire d'édition d'une page (editer_page) */
    8980/* -- choix et aperçu de l'icone */
     
    10091        line-height:12px;
    10192        cursor:pointer;}
     93
     94/* Styles des formulaires editer_noisette et ajouter_noisette */
     95.formulaire_editer_noisette li.fieldset {margin-left:10px; margin-right:10px; border-left: solid 1px #CCC; border-right: solid 1px #CCC; border-bottom: solid 1px #CCC;}
     96.formulaire_editer_noisette li.editer_description_code, .formulaire_editer_noisette li.editer_code {padding-left:10px;}
     97.formulaire_editer_noisette li.editer_description_code label, .formulaire_editer_noisette li.editer_code label {width:100%; margin-left:0; float:none;}
     98.formulaire_ajouter_noisette ul.liste-noisettes-disponibles {margin: 10px;}
Note: See TracChangeset for help on using the changeset viewer.