Changeset 113431 in spip-zone


Ignore:
Timestamp:
Jan 15, 2019, 9:07:08 PM (5 weeks ago)
Author:
eric@…
Message:

On utilise la fonction noisette_dupliquer pour enfin mettre au point la copie des noisettes lors de la création d'une composition virtuelle (ça n'a jamais vraiment marché).
Utilisation de #CHAMP_SQL pour éviter de mélanger les compositions dans la liste des pages.

Location:
_plugins_/noizetier/trunk
Files:
3 edited

Legend:

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

    r113340 r113431  
    178178 * @param string $page
    179179 *              L'identifiant de la page ou de la composition :
    180  *              - `modifier`: la composition virtuelle en cours d'édition
    181  *              - `créer`: la page source
    182  *              - `dupliquer`: la composition source
    183180 * @param string $redirect
    184181 *              URL de redirection. La valeur dépend du type d'édition.
     
    274271                // -- on préremplit avec les noisettes de la page source, systématiquement en cas de duplication
    275272                //    ou si demandé, en cas de création.
    276                 if ($retour_sql) {
     273                if ($retour_sql !== false) {
    277274                        if (($type_page != 'page')
    278275                        and (($edition == 'dupliquer') or (($edition == 'creer') and _request('peupler')))) {
    279                                 // Récupération des noisettes de la page source
    280                                 $select = array('plugin', 'rang_noisette', 'type', 'composition', 'bloc', 'type_noisette', 'parametres');
     276                                // Récupération des noisettes de la page source de profondeur 0, classées par bloc puis par rang.
     277                                // En effet, la fonction de duplication gérera la récursivité (profondeur > 0) si besoin.
     278                                include_spip('inc/noizetier_page');
     279                                $select = array('id_noisette', 'rang_noisette', 'bloc');
    281280                                $from = 'spip_noisettes';
    282281                                $where = array(
    283282                                        'plugin=' . sql_quote('noizetier'),
     283                                        'profondeur=0',
    284284                                        'type=' . sql_quote($type_page),
    285285                                        'composition=' . sql_quote(noizetier_page_extraire_composition($page))
    286286                                );
    287                                 $noisettes_source = sql_allfetsel($select, $from, $where);
    288                                 // Injection des noisettes de la source dans la composition virtuelle en cours de création qui diffère
    289                                 // uniquement par l'identifiant de composition.
     287                                $order_by = array('bloc', 'rang_noisette');
     288                                $noisettes_source = sql_allfetsel($select, $from, $where, '', $order_by);
     289                                // Injection des noisettes de la source dans la composition virtuelle en cours de création.
    290290                                if ($noisettes_source) {
    291                                         foreach ($noisettes_source as $_index => $_noisette) {
    292                                                 $noisettes_source[$_index]['composition'] = $composition;
     291                                        $conteneur_destination = array();
     292                                        include_spip('inc/ncore_noisette');
     293                                        $parametrage = array('parametres', 'encapsulation', 'css');
     294                                        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                                                );
    293308                                        }
    294                                         sql_insertq_multi($from, $noisettes_source);
    295309                                }
    296310                        }
  • _plugins_/noizetier/trunk/paquet.xml

    r113423 r113431  
    22        prefix="noizetier"
    33        categorie="maintenance"
    4         version="3.0.64"
     4        version="3.0.65"
    55        etat="dev"
    66        compatibilite="[3.2.0;3.2.*]"
  • _plugins_/noizetier/trunk/prive/squelettes/contenu/noizetier_pages.html

    r110844 r113431  
    88<BOUCLE_pages(NOIZETIER_PAGES) {est_page_objet?}{par type, composition}>
    99        <li class="item page[(#EST_VIRTUELLE|=={oui}|oui) virtuelle]">
    10                 <div[(#COMPOSITION|oui) class="composition"]>
     10                <div[(#CHAMP_SQL{composition}|oui) class="composition"]>
    1111                        [(#REM) Informations de base sur la page ]
    1212                        <div class="resume">
Note: See TracChangeset for help on using the changeset viewer.