Changeset 92608 in spip-zone


Ignore:
Timestamp:
Nov 2, 2015, 11:32:04 AM (4 years ago)
Author:
marcimat@…
Message:

Changements dans l'implémentation du bouton de suppression d'un objet introduit récemment :

  • on ne fournit pas de fichier «générique» (ce serait à SPIP core en tant qu'echafaudage de le faire je suppose)
  • le code du bouton est inclus directement dans le squelette prive/objet/info/{type}.html comme le font les plugins habituellement.
  • le code est inclus automatiquement lorsque l'objet éditorial ne demande pas à avoir de statuts
  • le bouton affiche l'icone (si les variantes d'icones sont activées) est est mieux présenté dans l'espace privé
  • l'action de suppression propose des exemples de code (si les exemples sont activés)
  • on peut forcer la création de l'action de suppression (qui est créée autrement seulement si l'objet n'a pas de statut)
  • le formulaire de création d'objet est réorganisé avec un onglet "Fichiers supplémentaires" à la place de "Fichiers échafaudés", qui liste tous les fichiers supplémentaires (échafaudages, saisies, et ce nouveau fichier d'action) pouvant être demandés.
  • ces fichiers supplémentaires demandés sont enregistrés maintenant dans la clé "fichiers/echafaudages" ou "fichiers/{type}" à la place de "echafaudages".
  • Migration des données lors d'une importation pour tenir compte du point précédent.
Location:
_plugins_/fabrique/trunk
Files:
1 deleted
9 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/fabrique/trunk/changelog.txt

    r90610 r92608  
    33-----------------------------------
    44
     5
     62.0.21 le 02 11 2015
     7--------------------
     8
     9* Permettre de supprimer un objet éditorial n'utilisant pas les statuts
    510
    611
  • _plugins_/fabrique/trunk/fabrique/action/supprimer_objet.php.html

    r92606 r92608  
    1717 *             \#URL_ACTION_AUTEUR{supprimer_#TYPE, \##MID_OBJET, \#URL_ECRIRE{#LOBJET}},
    1818 *             danger, \<:#TYPE:confirmer_supprimer_#TYPE:>})]
     19 *     ]
     20 *     ```
     21 *
     22 * @example
     23 *     ```
     24 *     [(\#AUTORISER{supprimer, #TYPE, \##MID_OBJET}|oui)
     25 *         [(\#BOUTON_ACTION{
     26 *             [(\#CHEMIN_IMAGE{#TYPE-del-24.png}|balise_img{\<:#TYPE:supprimer_#TYPE:>}|concat{' ',\#VAL{\<:#TYPE:supprimer_#TYPE:>}|wrap{<b>}}|trim)],
     27 *             \#URL_ACTION_AUTEUR{supprimer_#TYPE, \##MID_OBJET, \#URL_ECRIRE{#LOBJET}},
     28 *             icone s24 horizontale danger #TYPE-del-24, \<:#TYPE:confirmer_supprimer_#TYPE:>})]
    1929 *     ]
    2030 *     ```
  • _plugins_/fabrique/trunk/fabrique/prive/objets/infos/objet.html.html

    r92605 r92608  
    2525\<//B_publie>
    2626</BOUCLE_statut>
    27 <BOUCLE_supprimer_objet(CONDITION){si (#OBJET|option_presente{supprimer_php})}{si (#OBJET|option_presente{supprimer_html})}>
    28 \<INCLURE{fond=formulaires/inc_supprimer_objet,
    29         id=\#ENV{id},
    30         url_retour=\#URL_ECRIRE{#LOBJET},
    31         objet=#TYPE}\>
     27        [(\#AUTORISER{supprimer, #TYPE, \##MID_OBJET}|oui)
     28                [(\#BOUTON_ACTION{
     29                        [(\#CHEMIN_IMAGE{#TYPE-del-24.png}|balise_img{\<:#TYPE:supprimer_#TYPE:>}|concat{' ',\#VAL{\<:#TYPE:supprimer_#TYPE:>}|wrap{<b>}}|trim)],
     30                        \#URL_ACTION_AUTEUR{supprimer_#TYPE, \##MID_OBJET, \#URL_ECRIRE{#LOBJET}},
     31                        icone s24 horizontale danger #TYPE-del-24, \<:#TYPE:confirmer_supprimer_#TYPE:>})]
     32        ]
    3233</BOUCLE_supprimer_objet>
    3334<//B_statut>
  • _plugins_/fabrique/trunk/fabrique_options.php

    r88209 r92608  
    1212 * Version de la structure des données de sauvegarde de la fabrique
    1313 * @var int */
    14 define('FABRIQUE_VERSION', 5);
     14define('FABRIQUE_VERSION', 6);
    1515
    1616/**
  • _plugins_/fabrique/trunk/formulaires/fabriquer_plugin.php

    r92599 r92608  
    404404                        }
    405405
    406                         // fichiers echafaudes par SPIP mais demandes explicitement
    407                         if (isset($objet['echafaudages']) AND is_array($objet['echafaudages'])) {
    408                                 foreach ($objet['echafaudages'] as $fichier) {
    409                                         fabriquer_fichier($fichier, $data);
     406                        // fichiers demandés explicitement (échaffaudés normalement par SPIP ou autres spécifiques)
     407                        if (isset($objet['fichiers']) AND is_array($objet['fichiers'])) {
     408                                foreach ($objet['fichiers'] as $type => $fichiers) {
     409                                        // type : echafaudages | explicites
     410                                        if (is_array($fichiers)) {
     411                                                foreach ($fichiers as $fichier) {
     412                                                        fabriquer_fichier($fichier, $data);
     413                                                }
     414                                        }
    410415                                }
    411416                        }
     
    422427                                }
    423428                        }
    424                        
    425                         // créer le fichier d'action pour supprimer un objet //#VALEUR|option_presente{menu_edition})]
    426                         if (isset($objet['fichiers_supprimer']) and is_array($objet['fichiers_supprimer'])) {
    427                                 foreach ($objet['fichiers_supprimer'] as $option) {
    428                                         if($option=="supprimer_php"){
    429                                                 fabriquer_fichier("action/supprimer_objet.php", $data);
    430                                         }
    431                                         if($option=="supprimer_html"){
    432                                                 $exist_supprimer_html=true;
    433                                                 // être certain d'avoir le fichier
    434                                                 fabriquer_fichier("prive/objets/infos/objet.html", $data);
    435                                         }
    436                                 }
     429
     430                        // Si l'on n'a pas de statut pour cet objet, proposer un bouton de suppression et l'action correspondante.
     431                        if (!champ_present($objet, 'statut')) {
     432                                fabriquer_fichier("action/supprimer_objet.php", $data);
     433                                // être certain d'avoir ce fichier (échaffaudé)
     434                                fabriquer_fichier("prive/objets/infos/objet.html", $data);
    437435                        }
    438436
     
    441439                unset($data['objet'],  $data['id_objet'], $data['type'],  $data['table']);
    442440                unset($data['mobjet'], $data['lobjet'],   $data['mtype'], $data['mid_objet']);
    443                
    444                 //créer le fichier html à inclure pour supprimer tout objet
    445                 if($exist_supprimer_html===true){
    446                         fabriquer_fichier("formulaires/inc_supprimer_objet.html", $data);
    447                 }
     441
    448442
    449443        }
  • _plugins_/fabrique/trunk/formulaires/inc-fabriquer_plugin_objet.html

    r92599 r92608  
    393393
    394394
    395 <h3><a href="#fichiers_echafaudes"><:fabrique:legend_fichiers_echafaudes:></a></h3>
     395<h3><a href="#fichiers_supplementaires"><:fabrique:legend_fichiers_supplementaires:></a></h3>
    396396<div>
    397397        <div class='editer-groupe'>
     
    403403                |tab_cle_de_langue{[(#ARRAY{objet,#GET{objets},type,#GET{type}})]}
    404404                |tab_wrap{<strong>}
    405                 |tab_cle_traduite_ajoute_dans_valeur{echafaudage_})]})]
    406 
    407                 [(#SAISIE{checkbox, objets/#CLE/echafaudages,
    408                         label=<:fabrique:label_fichiers:>,
     405                |tab_cle_traduite_ajoute_dans_valeur{fichier_echafaudage_})]})]
     406
     407                [(#SAISIE{checkbox, objets/#CLE/fichiers/echafaudages,
     408                        label=<:fabrique:label_fichiers_echafaudes:>,
    409409                        explication=<:fabrique:explication_fichiers_echafaudes:>,
    410410                        datas=#GET{data}})]
     411
     412
     413                [(#SET{data,[(#ARRAY{
     414                        action/supprimer_objet.php,action/supprimer_objet.php,
     415                }
     416                |tab_cle_de_langue{[(#ARRAY{objet,#GET{objets},type,#GET{type}})]}
     417                |tab_wrap{<strong>}
     418                |tab_cle_traduite_ajoute_dans_valeur{fichier_explicite_})]})]
     419
     420                [(#SAISIE{checkbox, objets/#CLE/fichiers/explicites,
     421                        label=<:fabrique:label_fichiers_explicites:>,
     422                        explication=<:fabrique:explication_fichiers_explicites:>,
     423                        datas=#GET{data}})]
     424
     425
     426                [(#SAISIE{checkbox, objets/#CLE/saisies,
     427                        label=<:fabrique:label_saisies:>,
     428                        explication=<:fabrique:label_saisies_explication:>,
     429                        datas=[(#ARRAY{
     430                                objets,<:fabrique:saisies_objets{saisie=#LOBJET}:>})]})]
     431
    411432        </div>
    412433</div>
     
    471492                        outils_rapides,<:fabrique:bouton_outils_rapides:>})]})]
    472493
    473         [(#SAISIE{checkbox, objets/#CLE/saisies,
    474                 label=<:fabrique:label_saisies:>,
    475                 explication=<:fabrique:label_saisies_explication:>,
    476                 datas=[(#ARRAY{
    477                         objets,<:fabrique:saisies_objets{saisie=#LOBJET}:>})]})]
    478                        
    479494        [(#SET{defaut_suppr,[(#ENV{objets/#CLE}|non|?{#LISTE{supprimer_php,supprimer_html},#LISTE})]})]
    480495        [(#SAISIE{checkbox, objets/#CLE/fichiers_supprimer,
  • _plugins_/fabrique/trunk/formulaires/restaurer_plugin.php

    r88209 r92608  
    341341        return $data;
    342342}
     343
     344
     345/**
     346 * Migration v6
     347 *
     348 * Les fichiers indiqués spécialement à créer vont dans une entrée 'fichiers' spécifique.
     349 * - fichiers/echafaudages
     350 * - fichiers/explicites
     351 * - fichiers/...
     352 *
     353 * @param  array $data Données à migrer
     354 * @return array       Données migrées
     355**/
     356function fabrique_migration_v6($data) {
     357        if (is_array($data['objets'])) {
     358                $defaut = array(
     359                        'echafaudages' => array(),
     360                        'explicites'   => array(),
     361                );
     362                foreach ($data['objets'] as $c => $o) {
     363                        if (!isset($o['fichiers']) OR !is_array($o['fichiers'])) {
     364                                $data['objets'][$c]['fichiers'] = $defaut;
     365                        } else {
     366                                $data['objets'][$c]['fichiers'] = array_merge($defaut, $o['fichiers']);
     367                        }
     368                        if (isset($o['echafaudages'])) {
     369                                if (is_array($o['echafaudages'])) {
     370                                        $data['objets'][$c]['fichiers']['echafaudages'] = $data['objets'][$c]['echafaudages'];
     371                                }
     372                                unset($data['objets'][$c]['echafaudages']);
     373                        }
     374                        if (!empty($o['supprimer_php'])) {
     375                                $data['objets'][$c]['fichiers']['explicites'][] = 'action/supprimer_objet.php';
     376                        }
     377                        unset($data['objets'][$c]['supprimer_php']);
     378                        unset($data['objets'][$c]['supprimer_html']);
     379                }
     380        }
     381        return $data;
     382}
  • _plugins_/fabrique/trunk/lang/fabrique_fr.php

    r92603 r92608  
    131131
    132132        // E
    133         'echafaudage_prive/objets/infos/objet.html' => 'Ajoute le lien de prévisualisation',
    134         'echafaudage_prive/squelettes/contenu/objets.html' => 'Ajoute un champ de recherche',
    135133        'echappement_accolades' => '{ }',
    136134        'echappement_crochets' => '[ ]',
     
    157155                pour changer le comportement par défaut de ce que propose SPIP.
    158156                Par ailleurs, ces fichiers ont parfois des ajouts minimes de fonctionnalités, alors indiquées.',
     157        'explication_fichiers_explicites' => 'Ces fichiers n\'existent pas par défaut dans SPIP mais peuvent être générés
     158                pour votre confort si besoin.',
    159159        'explication_reinitialiser' => 'Ceci efface les informations du plugin actuellement en cours de création.
    160160                Vous repartirez donc de zéro !',
     
    179179        'fabrique_restaurer_titre' => 'Restaurer ou réinitialiser une fabrique',
    180180        'fabrique_titre' => 'La Fabrique',
     181        'fichier_echafaudage_prive/objets/infos/objet.html' => 'Ajoute le lien de prévisualisation',
     182        'fichier_echafaudage_prive/squelettes/contenu/objets.html' => 'Ajoute un champ de recherche',
     183        'fichier_explicite_action/supprimer_objet.php' => 'Action de suppression de l\'objet (ce fichier est créé automatiquement si l\'objet ne gère pas de statut).',
    181184        'fichier_importation_cree_dans' => 'Fichier d’importation créé dans le répertoire <code>@dir@</code>, fichier <code>@import@</code> avec @lignes@ lignes pour un total de @taille@',
    182185        'fichiers_importations_compresses_cree_dans' => 'Fichier d’importation créé dans le répertoire <code>@dir@</code>, fichiers <code>@import@</code> et <code>@donnees_compressees@</code>, avec @lignes@ lignes pour un total de @taille@',
     
    190193
    191194        // L
    192         'label_action_supprimer' => 'Actions',
    193         'label_action_supprimer_explication' => 'Créer les fichiers pour supprimer un objet (préférez le statut dans les champs spéciaux)',
    194         'label_action_supprimer_html' => 'Créer le fichier html  et l’inclure',
    195         'label_action_supprimer_objet' => 'Créer le fichier action/supprimer_<code>@objet@</code>',
    196195        'label_auteur' => 'Nom de l’auteur',
    197196        'label_auteur_lien' => 'URL vers l’auteur',
     
    262261        'label_fichier_sauvegarde_ordinateur' => 'Sur votre ordinateur',
    263262        'label_fichier_sauvegarde_serveur' => 'Sur le serveur',
    264         'label_fichiers' => 'Créer des fichiers ?',
     263        'label_fichiers_echafaudes' => 'Fichiers échafaudés',
     264        'label_fichiers_explicites' => 'Fichiers spécifiques',
    265265        'label_formulaire_configuration' => 'Formulaire de configuration ?',
    266266        'label_formulaire_configuration_titre' => 'Titre de la page de configuration',
     
    341341        'legend_description' => 'Description',
    342342        'legend_fichiers' => 'Fichiers',
    343         'legend_fichiers_echafaudes' => 'Fichiers échafaudés',
     343        'legend_fichiers_supplementaires' => 'Fichiers supplémentaires',
    344344        'legend_inserer_administrations' => 'Dans <code>@prefixe@_administrations.php</code>',
    345345        'legend_inserer_base_tables' => 'Dans <code>base/@prefixe@.php</code>',
  • _plugins_/fabrique/trunk/paquet.xml

    r92599 r92608  
    22        prefix="fabrique"
    33        categorie="outil"
    4         version="2.0.21"
     4        version="2.0.22"
    55        etat="test"
    66        compatibilite="[3.1.0-dev;3.1.*]"
Note: See TracChangeset for help on using the changeset viewer.