Changeset 91598 in spip-zone for _plugins_/plan


Ignore:
Timestamp:
Sep 3, 2015, 12:58:25 AM (6 years ago)
Author:
marcimat@…
Message:

Afficher des messages après les déplacements, en cas de réussite ou d'échec.

Location:
_plugins_/plan/trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/plan/trunk/action/deplacer_objets.php

    r91527 r91598  
    1818        include_spip('inc/autoriser');
    1919        if (!autoriser('ecrire')) {
    20                 return plan_json_erreur("Authorization failed");
     20                return plan_json_erreur(_T("plan:erreur_autorisation_insuffisante") . " " . _T("plan:erreur_deplacement_impossible"));
    2121        }
    2222
     
    3232
    3333        if (!is_array($ids) or !$objet) {
    34                 return plan_json_erreur("Aucun identifiant");
     34                return plan_json_erreur(_T("plan:erreur_aucun_identifiant") . " " . _T("plan:erreur_deplacement_impossible"));
    3535        }
    3636        if ($id_rubrique_old == $id_rubrique_new) {
    37                 return plan_json_erreur("Rubriques parentes incorrectes");
     37                return plan_json_erreur(_T("plan:erreur_rubriques_parentes_incorrectes") . " "  . _T("plan:erreur_deplacement_impossible"));
    3838        }
    3939        if ($objet != 'rubrique' and !$id_rubrique_new) {
    40                 return plan_json_erreur("Rubriques parentes incorrectes");
     40                return plan_json_erreur(_T("plan:erreur_rubriques_parentes_incorrectes") . " " . _T("plan:erreur_deplacement_impossible"));
    4141        }
    4242
     
    5555        include_spip('action/editer_objet');
    5656
    57         $erreurs = array();
     57        $errors = $success = array();
    5858        $modifs = array('id_parent' => $id_rubrique_new);
    5959
     
    6161                if (autoriser('modifier', $objet, $id)) {
    6262                        if ($err = objet_modifier($objet, $id, $modifs)) {
    63                                 $erreurs[] = $err;
     63                                $errors["$objet-$id"] = $err;
     64                        } else {
     65                                $success["$objet-$id"] = true;
     66                        }
     67                } else {
     68                        $errors["$objet-$id"] = _T("plan:erreur_autorisation_insuffisante") . " " . _T("plan:erreur_deplacement_impossible");
     69                }
     70        }
     71
     72        // dans certains cas… on ne reçoit pas d'erreur… et pourtant !
     73        if (!$errors) {
     74                // on verifie qu'il n'y a plus d'objets à l'ancien emplacement
     75                $ids = sql_allfetsel($_id_table, $table, array(sql_in($_id_table, $ids), $champ . '=' . sql_quote($id_rubrique_old)));
     76                $ids = array_map('array_shift', $ids);
     77                if ($ids) {
     78                        foreach ($ids as $id) {
     79                                $errors["$objet-$id"] = _T("plan:erreur_deplacement");
     80                                unset($success["$objet-$id"]);
    6481                        }
    6582                }
     
    6784
    6885        return plan_json_envoi(array(
    69                 'success' => true,
    70                 'messages' => $erreurs
     86                'done' => true,
     87                'success' => $success,
     88                'errors'  => $errors,
    7189        ));
    7290}
     
    7896
    7997function plan_json_erreur($msg) {
    80         return plan_json_envoi(array('erreur' => $msg));
     98        return plan_json_envoi(array(
     99                'done' => false,
     100                'success' => array(),
     101                'errors'  => array($msg)
     102        ));
    81103}
  • _plugins_/plan/trunk/css/plan_prive.css.html

    r91595 r91598  
    33#HTTP_HEADER{Vary: Accept-Encoding}
    44
     5.plan #contenu p.removable { cursor:pointer; }
     6.plan #contenu p.removable:hover { opacity:.6; }
    57#mytree_actions { margin-bottom:1em; margin-top:1em; }
    68#mytree_actions input,
  • _plugins_/plan/trunk/lang/plan_fr.php

    r91596 r91598  
    99        'confirmer_deplacement' => 'Êtes-vous sûr de vouloir déplacer ces éléments ?',
    1010
     11        // D
     12        'deplacement_reussi' => 'Déplacement réussi.',
     13        'deplacements_reussis' => '@nb@ déplacements réussis.',
     14        'deplacement_en_echec' => "Échec d'un déplacement.",
     15        'deplacements_en_echec' => '@nb@ déplacements en échec.',
     16       
     17
     18        // E
     19        'erreur_deplacement_impossible' => "Déplacement impossible !",
     20        'erreur_autorisation_insuffisante' => "Autorisation insuffisante.",
     21        'erreur_aucun_identifiant' => "Aucun identifiant d'objet.",
     22        'erreur_rubriques_parentes_incorrectes' => "Rubriques parentes incorrectes.",
     23        'erreur_deplacement' => "Déplacement non effectué.",
     24
    1125        // P
    1226        'plan_titre' => 'Plan du site dans l’espace privé',
  • _plugins_/plan/trunk/prive/javascript/spiptree.js

    r91596 r91598  
    5151                                        if (more && more.core) {
    5252                                                if (options.confirm.move === null) {
    53                                                         options.confirm.move = confirm( options.textes.confirmation.deplacement );
     53                                                        options.confirm.move = confirm( options.textes.deplacement.confirmation );
    5454                                                }
    5555                                                return options.confirm.move;
     
    116116        });
    117117
    118         var recharge_contenu = false;
     118        var recharge_plan = false;
    119119        // lorsqu'on déplace un nœud
    120120        $mytree.on("move_node.jstree", function(event, data) {
    121121                // si les parents sont identiques : pas de changement,
    122122                // on ne peut/veut pas gérer ici les positionnements
    123 
    124                 // console.log(data);
    125123
    126124                if (data.old_parent == data.parent) {
     
    172170                        cache: false,
    173171                }).done(function(response) {
    174                         // console.log('done', response);
    175                         if (recharge_contenu) {
    176                                 clearTimeout(recharge_contenu);
    177                         }
    178                         recharge_contenu = setTimeout(function () {
     172
     173                        if (response) {
     174                                var nb_success = Object.keys(response.success).length;
     175                                var nb_errors = Object.keys(response.errors).length;
     176                                if (nb_success) {
     177                                        $("#contenu #mytree_actions").after(
     178                                                "<p class='success removable' onClick='$(this).remove();'>" +
     179                                                        ((nb_success == 1)
     180                                                                ? options.textes.deplacement.reussi
     181                                                                : options.textes.deplacement.reussis.replace('@nb@', nb_success)) +
     182                                                "</p>"
     183                                        );
     184                                }
     185                                if (nb_errors) {
     186                                        var texte = ((nb_errors == 1)
     187                                                ? options.textes.deplacement.echec
     188                                                : options.textes.deplacement.echecs.replace('@nb@', nb_errors));
     189                                        $.each(response.errors, function(i, error) {
     190                                                texte += "<br />[ " + i + "] " + error;
     191                                        });
     192                                        $("#contenu #mytree_actions").after(
     193                                                "<p class='error removable' onClick='$(this).remove();'>" + texte + "</p>"
     194                                        );
     195                                }
     196                        }
     197
     198                        if (recharge_plan) {
     199                                clearTimeout(recharge_plan);
     200                        }
     201                        recharge_plan = setTimeout(function () {
    179202                                ajaxReload('plan');
    180203                        }, 500);
  • _plugins_/plan/trunk/prive/squelettes/inclure/plan.html

    r91596 r91598  
    66                statut: "#ENV{statut}",
    77                textes: {
    8                         confirmation: {
    9                                 deplacement: <:plan:confirmer_deplacement|json_encode:>,
     8                        deplacement: {
     9                                confirmation: <:plan:confirmer_deplacement|json_encode:>,
     10                                reussi: <:plan:deplacement_reussi|json_encode:>,
     11                                reussis: <:plan:deplacements_reussis|json_encode:>,
     12                                echec: <:plan:deplacement_en_echec|json_encode:>,
     13                                echecs: <:plan:deplacements_en_echec|json_encode:>,
    1014                        }
    1115                },
Note: See TracChangeset for help on using the changeset viewer.