Changeset 91599 in spip-zone for _plugins_/plan


Ignore:
Timestamp:
Sep 3, 2015, 1:08:07 AM (6 years ago)
Author:
marcimat@…
Message:

Merge de r91595, r91596 et r91598

Location:
_plugins_/plan/branches/v1
Files:
7 edited
1 copied

Legend:

Unmodified
Added
Removed
  • _plugins_/plan/branches/v1

  • _plugins_/plan/branches/v1/action/deplacer_objets.php

    r91527 r91599  
    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/branches/v1/css/plan_prive.css.html

    r91585 r91599  
    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,
     
    4345        background:url([(#VAL{rubrique}|objet_icone{16}|extraire_attribut{src})]) center left no-repeat;
    4446}
     47.plan .jstree .puce_objet { margin-right:2px; }
     48.plan .jstree.drag .item .jstree-icon {
     49        cursor: move;
     50}
    4551<BOUCLE_icone_objets(DATA){source table, #REM|plan_lister_objets_rubrique}>
    4652.plan .jstree-icon.[(#VALEUR|objet_type)] {
  • _plugins_/plan/branches/v1/lang/plan_fr.php

    r91551 r91599  
    66$GLOBALS[$GLOBALS['idx_lang']] = array(
    77
    8         // T
    9         'tous_les_statuts' => 'Tous les statuts',
     8        // C
     9        'confirmer_deplacement' => 'Êtes-vous sûr de vouloir déplacer ces éléments ?',
     10
     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é.",
    1024
    1125        // P
    1226        'plan_titre' => 'Plan du site dans l’espace privé',
    1327
     28        // T
     29        'tous_les_statuts' => 'Tous les statuts',
     30
     31
    1432);
  • _plugins_/plan/branches/v1/paquet.xml

    r91594 r91599  
    22        prefix="plan"
    33        categorie="navigation"
    4         version="1.2.4"
     4        version="1.2.5"
    55        etat="test"
    66        compatibilite="[3.0.0;3.0.*]"
  • _plugins_/plan/branches/v1/prive/javascript/spiptree.js

    r91533 r91599  
    2121                }
    2222        }
     23
     24        options.confirm = {
     25                move: null
     26        };
    2327
    2428        $.each(options.objets, function(nom, desc) {
     
    4145                "core" : {
    4246                        "animation" : 0,
    43                         "check_callback" : true,
     47                        "check_callback" : function (op, node, par, pos, more) {
     48                                if (op === "move_node") {
     49                                        // à la fin d'un déplacement, demander 1 fois (et 1 seule)
     50                                        // une confirmation, même si on déplace 5 items d'un coup
     51                                        if (more && more.core) {
     52                                                if (options.confirm.move === null) {
     53                                                        options.confirm.move = confirm( options.textes.deplacement.confirmation );
     54                                                }
     55                                                return options.confirm.move;
     56                                        } else {
     57                                                // redemander la confirmation au prochain tour
     58                                                options.confirm.move = null;
     59                                        }
     60                                }
     61                                return true;
     62                        },
    4463                        "data" : function (node, cb) {
    4564                                // on est obligé de tout charger en ajax (même la racine)
     
    7796        });
    7897
     98        if (options.drag) {
     99                $mytree.addClass('drag');
     100        }
     101
    79102        // un clic d'une feuille amène sur son lien
    80103        // mais… éviter que le plugin 'state' clique automatiquement lorsqu'il restaure
     
    85108                        var node = data.instance.get_node(data.node, true);
    86109                        if (node) {
    87                                 location.href = node.children('a').attr('href');
     110                                var lien = node.children('a').attr('href');
     111                                if (lien && !(options.drag && $(data.event.target).hasClass('jstree-icon'))) {
     112                                        location.href = lien;
     113                                }
    88114                        }
    89115                });
    90116        });
    91117
     118        var recharge_plan = false;
    92119        // lorsqu'on déplace un nœud
    93120        $mytree.on("move_node.jstree", function(event, data) {
    94121                // si les parents sont identiques : pas de changement,
    95122                // on ne peut/veut pas gérer ici les positionnements
    96 
    97                 // console.log(data);
    98123
    99124                if (data.old_parent == data.parent) {
     
    145170                        cache: false,
    146171                }).done(function(response) {
    147                         // console.log('done', response);
    148                         ajaxReload('contenu');
     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 () {
     202                                ajaxReload('plan');
     203                        }, 500);
    149204                });
    150205
  • _plugins_/plan/branches/v1/prive/squelettes/contenu/plan.html

    r91591 r91599  
    77(function($){
    88$(document).ready(function(){
    9         $('body.plan #contenu #racine').spiptree({
    10                 drag: [(#AUTORISER{configurer}|?{true,false})],
    11                 statut: "#ENV{statut}",
    12                 urls: {
    13                         plan: "[(#VAL{plan}|generer_url_action{"", 1})]",
    14                         deplacer: "[(#VAL{deplacer_objets}|generer_url_action{"", 1})]"
    15                 },
    16                 default: {
    17                         icon: "[(#VAL{rubrique}|objet_icone{16}|extraire_attribut{src})]"
    18                 },
    19                 objets: [
    20                         <BOUCLE_objets(DATA){source table,#REM|plan_lister_objets_rubrique}{", "}>
    21                         {
    22                                 icon: "[(#VALEUR|objet_icone{16}|extraire_attribut{src})]",
    23                                 type: "[(#VALEUR|objet_type)]"
    24                         }
    25                         </BOUCLE_objets>
    26                 ]
    27         });
    289        $('body.plan #contenu #mytree_actions .pliage').html(
    2910                "<a href=\"#\" onClick=\"My_jQuery('#racine').jstree('open_all'); return false;\"><:lien_tout_deplier:></a> | " +
     
    6849
    6950#BOITE_OUVRIR{'', simple}
    70 <div id="racine">
    71 <INCLURE{fond=prive/squelettes/inclure/plan-rubriques, id_parent=0, statut=#GET{statut}, objet=#GET{objet}, lister}>
    72 </div>
     51<INCLURE{fond=prive/squelettes/inclure/plan, statut=#GET{statut}, objet=#GET{objet}, lister, ajax=plan}>
    7352#BOITE_FERMER
  • _plugins_/plan/branches/v1/prive/squelettes/inclure/plan.html

    r91595 r91599  
    55                drag: [(#AUTORISER{configurer}|?{true,false})],
    66                statut: "#ENV{statut}",
     7                textes: {
     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:>,
     14                        }
     15                },
    716                urls: {
    817                        plan: "[(#VAL{plan}|generer_url_action{"", 1})]",
     
    2231        });
    2332});
    24 })(jQuery);
     33})(My_jQuery);
    2534</script>
    2635
Note: See TracChangeset for help on using the changeset viewer.