Changeset 118730 in spip-zone


Ignore:
Timestamp:
Nov 24, 2019, 5:23:02 PM (2 weeks ago)
Author:
eric@…
Message:

Mise au point de la saisie de la raison d'archivage si la configuration l'autorise.
Néanmoins j'arrive pas à fermer la modale.
Si ça intéresse quelqu'un de corriger... moi j'en ai marre !

Location:
_plugins_/archive_objet/trunk
Files:
4 added
13 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/archive_objet/trunk/action/objet_modifier_archivage.php

    r118671 r118730  
    1616 * @return void
    1717 */
    18 function action_objet_modifier_archivage_dist(){
     18function action_objet_modifier_archivage_dist($arguments = null){
    1919
    20         // Securisation et autorisation car c'est une action auteur:
    21         $securiser_action = charger_fonction('securiser_action', 'inc');
    22         $arguments = $securiser_action();
     20        // Récupération des arguments de façon sécurisée.
     21        if (is_null($arguments)) {
     22                $securiser_action = charger_fonction('securiser_action', 'inc');
     23                $arguments = $securiser_action();
     24        }
    2325
    2426        // Extraction des arguments objet et id objet
    25         list($action, $objet, $id) = explode(':', $arguments);
     27        list($action, $objet, $id, $raison) = explode(':', $arguments);
    2628
    2729        if ($id_objet = intval($id)) {
    2830                // Verification des autorisations
    29                 if (!autoriser('objetmodifierarchivage', $objet, $id_objet, '', array('action' =>$action))) {
     31                if (!autoriser('modifierarchivage', $objet, $id_objet, '', array('action' =>$action))) {
    3032                        include_spip('inc/minipres');
    3133                        echo minipres();
     
    3436
    3537                // Déterminer les mise à jour sur l'état d'archivage de l'objet.
     38                $set = array();
    3639                if ($action == 'archiver') {
    3740                        // Demande d'archivage
    38                         $etat_archivage = 1;
    39                         $date = date('Y-m-d H:i:s');
    40                 } else {
     41                        $set = array(
     42                                'est_archive'    => 1,
     43                                'date_archive'   => date('Y-m-d H:i:s'),
     44                                'raison_archive' => ''
     45                        );
     46                } elseif ($action == 'desarchiver') {
    4147                        // Demande de désarchivage
    4248                        include_spip('inc/config');
    4349                        $consignation = lire_config('archobjet/consigner_desarchivage', 0);
    44                         $etat_archivage = 0;
    45                         $date = $consignation ? date('Y-m-d H:i:s') : '';
     50                        $set = array(
     51                                'est_archive'    => 0,
     52                                'date_archive'   => $consignation ? date('Y-m-d H:i:s') : '',
     53                                'raison_archive' => ''
     54                        );
     55                } elseif ($action == 'modifier_raison') {
     56                        // Demande de modification de la raison d'archivage
     57                        $set = array(
     58                                'raison_archive' => $raison
     59                        );
    4660                }
    4761
    48                 // Mettre en archive l'objet concerné
    49                 // -- on supprime toujours la raison ce qui permettra l'affichage de la valeur par défaut
    50                 include_spip('action/editer_objet');
    51                 objet_modifier(
    52                         $objet,
    53                         $id_objet,
    54                         array(
    55                                 'est_archive'    => $etat_archivage,
    56                                 'date_archive'   => $date,
    57                                 'raison_archive' => ''
    58                         )
    59                 );
     62                // Mettre à jour les données d'archive de l'objet concerné.
     63                if ($set) {
     64                        include_spip('action/editer_objet');
     65                        objet_modifier(
     66                                $objet,
     67                                $id_objet,
     68                                $set
     69                        );
     70                }
    6071        }
    6172}
  • _plugins_/archive_objet/trunk/archobjet_autorisations.php

    r118671 r118730  
    6565 * @return bool true s'il a le droit, false sinon
    6666**/
    67 function autoriser_objetmodifierarchivage_dist($faire, $type, $id, $qui, $options) {
     67function autoriser_modifierarchivage_dist($faire, $type, $id, $qui, $options) {
    6868        $autoriser = false;
    6969
     
    8888                                ($action == 'desarchiver')
    8989                                and $etat_archivage['est_archive']
    90                                 )
    91                         ) {
     90                        )
     91                        or ($action == 'modifier_raison')
     92                ) {
    9293                        $autoriser = true;
    9394                }
  • _plugins_/archive_objet/trunk/archobjet_fonctions.php

    r118675 r118730  
    6666        $types_archives = array();
    6767        foreach ($tables_autorisees as $_table) {
    68                 $type_objet = objet_type($_table);
    69                 $types_archives[$type_objet] = table_objet($type_objet);
     68                if ($_table) {
     69                        $type_objet = objet_type($_table);
     70                        $types_archives[$type_objet] = table_objet($type_objet);
     71                }
    7072        }
    7173
    7274        return $types_archives;
    7375}
     76
     77/**
     78 * Compile la balise `#OBJET_ETAT_ARCHIVAGE` qui renvoie la liste des types d'objet autorisés à l'archivage
     79 * Chaque type d'objet est fourni avec son titre.
     80 * La signature de la balise est : `#TYPE_OBJET_ARCHIVE`.
     81 *
     82 * @balise
     83 *
     84 * @param Champ $p
     85 *        Pile au niveau de la balise.
     86 *
     87 * @return Champ
     88 *         Pile complétée par le code à générer.
     89 **/
     90function balise_OBJET_ETAT_ARCHIVAGE_dist($p) {
     91
     92        // Récupération des arguments de la balise.
     93        // -- seul l'argument information est optionnel.
     94        $objet = interprete_argument_balise(1, $p);
     95        $objet = str_replace('\'', '"', $objet);
     96        $id_objet = interprete_argument_balise(2, $p);
     97        $id_objet = isset($id_objet) ? $id_objet : '0';
     98        $information = interprete_argument_balise(3, $p);
     99        $information = isset($information) ? str_replace('\'', '"', $information) : '""';
     100
     101        // Calcul de la balise
     102        $p->code = "calculer_etat_archivage($objet, $id_objet, $information)";
     103
     104        return $p;
     105}
     106
     107/**
     108 * @internal
     109 *
     110 * @return array
     111 */
     112function calculer_etat_archivage($objet, $id_objet, $information) {
     113
     114        // Tableau de l'archivage de l'objet
     115        include_spip('inc/archobjet_objet');
     116        $etat_archivage = objet_etat_archivage(
     117                $objet,
     118                $id_objet
     119        );
     120
     121        return $information ? $etat_archivage[$information] : $etat_archivage;
     122}
  • _plugins_/archive_objet/trunk/archobjet_pipelines.php

    r118718 r118730  
    6363                                        $etat_archivage,
    6464                                        array(
    65                                                 'etat'     => $etat_archivage['est_archive'] ? 'archive' : 'desarchive',
    6665                                                'objet'    => $objet,
    6766                                                'id_objet' => $id_objet,
     
    178177                                                and (
    179178                                                        ($_critere->param[0][0]->texte == 'est_archive')
    180                                                         or ($_critere->param[0][0]->texte == $id_table)
     179                                                        or (($_critere->param[0][0]->texte == $id_table) and ($_critere->op != 'par'))
    181180                                                )
    182181                                        )
     
    200199                                                // implique l'ajout de est_archive=0.
    201200                                                // TODO : faire évoluer le core pour calculer cette condition avec une fonction spéficique.
    202                                                 $where_est_article[0] = $_condition[0];
    203                                                 $where_est_article[1] = $_condition[1];
    204                                                 $where_est_article[2] = array("'='", "'est_archive'", 0);
    205                                                 $where_est_article[3] = $_condition[3][3];
    206                                                 $boucle->where[$_cle] = $where_est_article;
     201//                                              $where_est_article[0] = $_condition[0];
     202//                                              $where_est_article[1] = $_condition[1];
     203//                                              $where_est_article[2] = array("'='", "'est_archive'", 0);
     204//                                              $where_est_article[3] = $_condition[3][3];
     205//                                              $boucle->where[$_cle] = $where_est_article;
    207206                                                $critere_archive_explicite = true;
    208207                                                break;
  • _plugins_/archive_objet/trunk/demo/archobjet.html

    r118711 r118730  
    4646<//B_articles_non_archives>
    4747
    48 <h3>Articles publi&eacute;s, archiv&eacute;s ou pas</h3>
     48<h3>Articles publi&eacute;s, archiv&eacute;s ou pas <code>{est_archive>=0}</code></h3>
    4949
    5050<B_articles_publies>
     
    9292Aucun article publi&eacute;
    9393<//B_articles_conditionnels>
     94
     95[(#VAL{article}|objet_info{key}|table_valeur{'PRIMARY KEY'}|var_dump)]
     96[(#VAL{article}|id_table_objet|var_dump)]
  • _plugins_/archive_objet/trunk/formulaires/configurer_archobjet.html

    r118718 r118730  
    1111                        <div class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
    1212                                <label><:archobjet:configuration_objets_archivables_label:></label>[
    13                                 <span class="erreur_message">(#GET{erreurs})</span>
    14                                 ]
     13                                <span class="erreur_message">(#GET{erreurs})</span>]
    1514                                #INCLURE{fond=formulaires/inc-choisir-objets,
    1615                                        name=#GET{name},
  • _plugins_/archive_objet/trunk/inc/archobjet_objet.php

    r118671 r118730  
    4141                if (!$archivage = sql_fetsel($select, $options['table'], $where)) {
    4242                        $archivage = array();
     43                } else {
     44                        // On rajoute un identifiant littéral pour l'état d'archivage
     45                        $archivage['etat'] = $archivage['est_archive'] ? 'archive' : 'desarchive';
    4346                }
     47
     48                // Mise en cache des données d'archivage de l'objet.
    4449                $est_archive[$objet][$id_objet] = $archivage;
    4550        }
  • _plugins_/archive_objet/trunk/lang/archobjet_fr.php

    r118708 r118730  
    88$GLOBALS[$GLOBALS['idx_lang']] = array(
    99
     10        // A
     11        'archiver_action_label' => 'Archiver',
     12        'archives_page_titre' => 'Liste des archives',
     13
    1014        // C
    1115        'configuration_form_titre' => 'Configuration',
     
    1519        'configuration_desarchivage_label' => 'Consigner, pour un contenu, le retrait des archives',
    1620
     21        // D
     22        'desarchiver_action_label' => 'Retirer des archives',
     23
     24        // E
     25        'edition_raison_archive_titre' => 'Modifier la raison d\'archivage',
     26        'edition_raison_desarchive_titre' => 'Modifier la raison de désarchivage',
     27        'edition_raison_label' => 'Choisir la raison',
     28
    1729        // O
    18         'objets_archives_titre' => 'Liste des archives',
    19         'objet_archiver' => 'Archiver',
    20         'objet_desarchiver' => 'Retirer des archives ',
    21         'objet_archive_message' => 'Ce contenu a été archivé le @date@.',
    22         'objet_desarchive_message' => 'Ce contenu a été retiré des archives le @date@.',
    23         'objet_archive_raison' => 'Raison : @raison@.',
     30        'objet_message_archive' => 'Ce contenu a été archivé le @date@.',
     31        'objet_message_desarchive' => 'Ce contenu a été retiré des archives le @date@.',
     32        'objet_message_raison' => 'Raison : @raison@.',
     33        'objet_bouton_raison_definir' => 'Définir une raison',
     34        'objet_bouton_raison_modifier' => 'Modifier la raison',
     35
     36        // R
     37        'raison_archive_aucune_label' => 'aucune raison',
     38        'raison_archive_defaut_label' => 'archivage standard',
     39        'raison_desarchive_defaut_label' => 'erreur d\'archivage',
     40        'raison_desarchive_aucune_label' => 'aucune raison',
    2441);
  • _plugins_/archive_objet/trunk/paquet.xml

    r118711 r118730  
    22        prefix="archobjet"
    33        categorie="date"
    4         version="0.1.0"
     4        version="0.2.0"
    55        etat="dev"
    66        compatibilite="[3.0.0;3.2.*]"
     
    1919        <licence lien="http://www.gnu.org/licenses/gpl-3.0.html">GPL 3</licence>
    2020
     21        <pipeline nom="liste_raison_archivage" action="" />
    2122        <pipeline nom="declarer_tables_objets_sql" inclure="base/archobjet_declarations.php" />
    2223        <pipeline nom="autoriser" inclure="archobjet_pipelines.php" />
     
    2627        <pipeline nom="affiche_milieu" inclure="archobjet_pipelines.php" />
    2728
    28         <menu nom="objets_archives" titre="archobjet:objets_archives_titre" parent="menu_administration" icone="images/archiver-16.png" action="objets_archives" />
     29        <menu nom="objets_archives" titre="archobjet:archives_page_titre" parent="menu_administration" icone="images/archiver-16.png" action="objets_archives" />
    2930</paquet>
  • _plugins_/archive_objet/trunk/prive/squelettes/contenu/objets_archives.html

    r118718 r118730  
    11[(#AUTORISER{archivage}|sinon_interdire_acces)]
    22<h1 class="grostitre">
    3         <:archobjet:objets_archives_titre:>
     3        <:archobjet:archives_page_titre:>
    44</h1>
    55<B_archives>
  • _plugins_/archive_objet/trunk/prive/squelettes/inclure/inc-bouton_archivage.html

    r118671 r118730  
    11[(#URL_ACTION_AUTEUR{objet_modifier_archivage, #ACTION:#OBJET:#ID_OBJET, #SELF}
    2         |icone_horizontale{[(#VAL{archobjet:objet_}|concat{#ACTION}|_T)], #ACTION-24.png})]
     2        |icone_horizontale{[(#VAL{archobjet:}|concat{#ACTION}|concat{_action_label}|_T)], #ACTION-24.png})]
  • _plugins_/archive_objet/trunk/prive/squelettes/inclure/inc-objet_archive.html

    r118671 r118730  
    11#BOITE_OUVRIR{'', note center #ETAT}
    2 <p>[
    3         (#VAL{archobjet:objet_}
    4                 |concat{#ETAT}
    5                 |concat{_message}
    6                 |_T{#ARRAY{date,#DATE_ARCHIVE|affdate_court}})][
    7         (#CONFIG{archobjet/utiliser_raison}|et{#RAISON_ARCHIVE}|oui)
    8                 #SET{raison, #VAL{archobjet:objet_}|concat{#ETAT}|concat{_raison_}|concat{#RAISON_ARCHIVE}|_T}
     2<p class="message_archive">[
     3(#VAL{archobjet:objet_message_}
     4        |concat{#ETAT}
     5        |_T{#ARRAY{date,#DATE_ARCHIVE|affdate_court}})][
     6(#CONFIG{archobjet/utiliser_raison}|oui)[
     7        (#RAISON_ARCHIVE|oui)
     8                #SET{raison, #VAL{archobjet:raison_}|concat{#RAISON_ARCHIVE}|concat{_label}|_T}
    99                <br />
    10                 <:archobjet:objet_archive_raison{raison=#GET{raison}}:>
     10                <:archobjet:objet_message_raison{raison=#GET{raison}}:>
     11        ][
     12        (#AUTORISER{modifierarchivage, #OBJET, #ID_OBJET, '', #ARRAY{action, modifier_raison}})
     13        <a href="[(#URL_ECRIRE{objet_archive_edit}
     14                                |parametre_url{objet, #OBJET}
     15                                |parametre_url{id_objet, #ID_OBJET})]"
     16                class="edition_raison bouton-changer"
     17                data-action="modifier">
     18                [\[(#RAISON_ARCHIVE|?{<:archobjet:objet_bouton_raison_modifier:>, <:archobjet:objet_bouton_raison_definir:>})\]]
     19        </a>]
    1120]</p>
    1221#BOITE_FERMER
     22<script type="text/javascript">
     23/*<!\[CDATA\[*/
     24        $(function() {
     25                $('.bouton-changer').click(function(){
     26                        var archive = $(this).parents('.message_archive').eq(0);
     27                        $(archive).animateLoading();
     28                        $.modalboxload(parametre_url(parametre_url(parametre_url($(this).attr('href'),'popin','oui'),'var_zajax','contenu'), 'redirect',''),{
     29                                onClose: function (dialog) {$(archive).ajaxReload()}
     30                        });
     31                        return false;
     32                });
     33        });
     34/*\]\]>*/
     35</script>
  • _plugins_/archive_objet/trunk/prive/style_prive_plugin_archobjet.html

    r118671 r118730  
    3737    position: relative;
    3838}
     39
     40#contenu .fiche_objet .edition_raison {position:absolute; top:5px; #ENV{right}:21px;}
     41#contenu .fiche_objet .edition_raison {-webkit-opacity:0.6;-moz-opacity:0.6;opacity:0.6;filter:alpha(opacity=60);;z-index: 1;font-size: 10px;}
     42#contenu .fiche_objet .edition_raison {font-size: 10px; font-weight:normal;}
     43#contenu .fiche_objet .archive:hover .edition_raison,
     44#contenu .fiche_objet .desarchive:hover .edition_raison {-webkit-opacity:1.0;-moz-opacity:1.0;opacity:1.0;filter:alpha(opacity=100);}
Note: See TracChangeset for help on using the changeset viewer.