Changeset 113491 in spip-zone


Ignore:
Timestamp:
Jan 18, 2019, 2:21:05 PM (4 weeks ago)
Author:
root
Message:

Eviter d'exclure des blocs qui ne sont pas vides.
Quand on copie des noisettes lors de la création d'une composition virtuelle il ne faut pas copier celles appartenant à un bloc exclu par la composition virtuelle.

Location:
_plugins_/noizetier/trunk
Files:
3 edited

Legend:

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

    r113340 r113491  
    9595                                datas=#ENV{_blocs},
    9696                                defaut=#ENV{_blocs_defaut},
     97                                disable=#ENV{_blocs_disable}
    9798                        })]
    9899
  • _plugins_/noizetier/trunk/formulaires/editer_page.php

    r113481 r113491  
    4444                '_blocs' => array(),
    4545                '_blocs_defaut' => array(),
     46                '_blocs_disable' => array(),
    4647        );
    4748
     
    6263                                $valeurs['icon'] = $description_page['icon'];
    6364                        }
     65
     66                        // On considère que les blocs contenant des noisettes ne peuvent pas être exclus.
     67                        // Il est nécessaire de les vider au préalable, ce qui a pour intérêt de conserver une cohérence : les
     68                        // blocs exclus ne possèdent pas de noisettes "invisibles".
     69                        $blocs_non_vides = noizetier_page_compter_noisettes($page);
     70                        $valeurs['_blocs_disable'] = array_keys($blocs_non_vides);
    6471
    6572                } elseif ($edition == 'dupliquer') {
     
    249256        }
    250257
    251         // On termine en sérialisant les tableaux des blocs exclus, necessite et branche.
     258        // On termine en sérialisant les tableaux des blocs exclus, necessite et branche. On réserve la liste des blocs
     259        // exclus pour la copie des noisettes.
    252260        $description['blocs_exclus'] = serialize($description['blocs_exclus']);
    253261        if ($est_virtuelle == 'oui') {
     
    293301                                        $parametrage = array('parametres', 'encapsulation', 'css');
    294302                                        foreach ($noisettes_source as $_noisette) {
    295                                                 // On calcule le nouveau conteneur sachant que l'identifiant de la page est déjà connu
    296                                                 // que le bloc doit être le même que celui de la noisette source et que le conteneur est forcément
    297                                                 // un squelette (pas un objet).
    298                                                 $conteneur_destination['squelette'] = $_noisette['bloc'] . '/' . $identifiant;
    299                                                 // On duplique la noisette source dans le conteneur de la composition virtuelle : le
    300                                                 // rang de la noisette source est conservé et le paramétrage entièrement copié
    301                                                 noisette_dupliquer(
    302                                                         'noizetier',
    303                                                         $_noisette['id_noisette'],
    304                                                         $conteneur_destination,
    305                                                         $_noisette['rang_noisette'],
    306                                                         $parametrage
    307                                                 );
     303                                                // On ne copie pas les noisettes source incluses dans un bloc non autorisé par la
     304                                                // composition virtuelle créée.
     305                                                if ($blocs_exclus and in_array($_noisette['bloc'], $blocs_exclus)) {
     306                                                        // On calcule le nouveau conteneur sachant que l'identifiant de la page est déjà connu
     307                                                        // que le bloc doit être le même que celui de la noisette source et que le conteneur est forcément
     308                                                        // un squelette (pas un objet).
     309                                                        $conteneur_destination['squelette'] = $_noisette['bloc'] . '/' . $identifiant;
     310                                                        // On duplique la noisette source dans le conteneur de la composition virtuelle : le
     311                                                        // rang de la noisette source est conservé et le paramétrage entièrement copié
     312                                                        noisette_dupliquer(
     313                                                                'noizetier',
     314                                                                $_noisette['id_noisette'],
     315                                                                $conteneur_destination,
     316                                                                $_noisette['rang_noisette'],
     317                                                                $parametrage
     318                                                        );
     319                                                }
    308320                                        }
    309321                                }
     
    319331                $retour['message_nok'] = _T('noizetier:formulaire_composition_erreur');
    320332        } else {
    321                 $retour['message_ok'] = _T('noizetier:formulaire_composition_mise_a_jour');
    322333                if (in_array($edition, array('creer', 'dupliquer'))) {
    323334                        // On redirige vers la page de la composition virtuelle venant d'être créée.
  • _plugins_/noizetier/trunk/lang/noizetier_fr.php

    r113423 r113491  
    9494        'formulaire_deplacer_haut' => 'Déplacer vers le haut',
    9595        'formulaire_description' => 'Description',
    96         'formulaire_description_blocs_exclus' => 'Vous pouvez choisir d’exclure certains blocs de la configuration de noisettes.',
     96        'formulaire_description_blocs_exclus' => 'Vous pouvez choisir d’exclure certains blocs de la configuration de noisettes. Les blocs contenant des noisettes ne peuvent pas être exclus, il est nécessaire de les vider au préalable.',
    9797        'formulaire_description_explication' => 'Vous pouvez utilisez les raccourcis SPIP usuels, notamment la balise <multi>.',
    9898        'formulaire_description_peuplement' => 'Vous pouvez peupler automatiquement la nouvelle composition virtuelle avec les noisettes de la page source.',
Note: See TracChangeset for help on using the changeset viewer.