Changeset 109761 in spip-zone


Ignore:
Timestamp:
Apr 1, 2018, 5:07:54 PM (21 months ago)
Author:
peetdu@…
Message:

Intégration complète de l’API Déclarer Parent
+ suppression d’une notice lorsque l’option Ranger les objet était cochée puis décochée

Location:
_plugins_/rang/trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/rang/trunk/action/trier_items.php

    r109533 r109761  
    2525 * @param string $rubrique optionel
    2626 *     dans quelle rubrique faire le classement
    27  * @return array
    28  *     note : sans ce return (a priori inutile, la fonction plante (???)
     27 *
    2928**/
    3029function action_trier_items_dist() {
    3130
    3231        include_spip('base/objets');
     32        include_spip('base/objets_parents');
    3333
    3434        $tab            = _request('trier');
     
    3838
    3939        $table          = table_objet_sql($objet);
    40         $definition_table = lister_tables_objets_sql($table);
    41         $id_objet_parent = $definition_table['parent']['0']['champ'];
    4240        $id_objet       = id_table_objet($objet);
     41        $objet_type = objet_type($objet);
     42        if ($id_parent != 'rien') {
     43                $parent = type_objet_info_parent($objet_type);
     44                $parent_champ = $parent['0']['champ'];
     45        }
    4346
    4447        // reclassement !
     
    5053                }
    5154                else {
    52                         $where = "$id_objet=$id AND $id_objet_parent=$id_parent";
     55                        $where = "$id_objet=$id AND $parent_champ=$id_parent";
    5356                }
    5457                sql_updateq($table, array('rang' => $rang), $where);
    5558        }
    56         $msg = 'ok';
    5759
    5860        include_spip('inc/invalideur');
    5961        suivre_invalideur("rang");
    6062
    61         return $msg;
    6263}
    63 
    64 /**
    65  * supprimer un mot, puis réordonner
    66  *
    67  * @param string $id
    68  *     id de la forme mot_xx
    69  * @return array
    70  *     note : sans ce return (a priori inutile, la fonction plante (???)
    71 **/
    72 function rang_supprimer_item($id) {
    73         // suppression du mot
    74         $new_id = intval(substr($id, 4));
    75         sql_delete('spip_mots', "id_mot=$new_id");
    76 
    77         //récupérer le tableau id/rang actuel
    78         $id_grp = sql_getfetsel('id_groupe', 'spip_groupes_mots');
    79         $res = sql_select('id_mot', 'spip_mots', "id_groupe=$id_grp", '', 'rang');
    80         while ($tab = sql_fetch($res)){
    81                 $new_tab[] = 'id_mot_'.$tab['id_mot'];
    82         }
    83 
    84         //  réordonnement !
    85         $tab_result = rang_trier_items($new_tab);
    86 
    87         return $tab_result;
    88 }
  • _plugins_/rang/trunk/inc/rang_api.php

    r109499 r109761  
    5757}
    5858
    59 /**
    60  * Trier les rangs de la liste suite à un nouveau classement
    61  *
    62  * @param array $tab
    63  *     tableau des items de la liste suite à une modification du classement
    64  * @param string $objet
    65  *     sur quel objet faire le classement
    66  * @param string $rubrique optionel
    67  *     dans quelle rubrique faire le classement
    68  * @return array
    69  *     note : sans ce return (a priori inutile, la fonction plante (???)
    70 **/
    71 // function rang_trier_items($tab, $objet=null, $id_rubrique=null){
    72 
    73 //      exit();
    74        
    75 //      foreach ($tab as $key => $value) {
    76 //              $rang = $key + 1; //le classement commence à 1, pas à 0
    77 //              $id = intval(substr($value, 7));
    78 //              sql_updateq('spip_mots', array('rang' => $rang), "id_mot=$id");
    79 //      }
    80 //      return $tab;
    81 // }
    8259
    8360/**
     
    196173
    197174/**
    198  * Classer l'objet à la fin de la liste quand on le publie
     175 * Calculer le rang pour la nouvelle occurence de l’objet
    199176 * @param string $table
    200177 * @param int $id_objet
     
    203180 function rang_classer_dernier($table, $id_objet) {
    204181
    205         // quel objet pour quel parent ?
    206         $definition_table       = lister_tables_objets_sql($table);
    207         $id_table_objet         = id_table_objet($table);
    208         $objet_parent           = $definition_table['parent']['type'];
    209         $id_objet_parent        = $definition_table['parent']['champ'];
    210 
    211         // et hop, on place le nouvel objet publié à la fin
    212         if($id_objet_parent) {
    213                 $id_parent = sql_getfetsel($id_objet_parent, $table, "$id_table_objet = $id_objet");
    214                 $rang = sql_getfetsel('max(rang)', $table, "$id_objet_parent = $id_parent");
     182        $objet_type = objet_type($table);
     183        include_spip('base/objets_parents');
     184
     185        // si l'objet à un parent…
     186        if ($parent = type_objet_info_parent($objet_type)) {
     187                $id_table_objet = id_table_objet($table);
     188                $parent_champ = $parent['0']['champ'];
     189                $id_parent = sql_getfetsel($parent_champ, $table, "$id_table_objet = $id_objet");
     190                $rang = sql_getfetsel('max(rang)', $table, "$parent_champ = $id_parent");
    215191        } else {
     192        // si pas de parent, c'est plus simple
    216193                $rang = sql_getfetsel('max(rang)', $table);
    217194        }
    218195         
    219         // todo : on classe l'article à la fin (rang max) mais on pourrait vouloir le classer au début
     196        // todo : on classe l'objet à la fin (rang max) mais on pourrait vouloir le classer au début
    220197        // il faudrait donc une configuration pour ça, et dans ce cas reclasser tous les autres à un rang++
    221198        $dernier = $rang+1;
  • _plugins_/rang/trunk/paquet.xml

    r109613 r109761  
    22        prefix="rang"
    33        categorie="navigation"
    4         version="0.7.14"
     4        version="0.7.15"
    55        etat="experimental"
    66        compatibilite="[3.1.0;3.2.*]"
  • _plugins_/rang/trunk/rang_pipelines.php

    r109613 r109761  
    6262                        // recuperer les paramètres pour le calcul du JS correspondant
    6363                        preg_match('/liste-objets\s([A-Za-z]+)/', $flux['data']['texte'], $result);
    64                         $nom_objet = $result[1];
    65                         $type_objet  = objet_type($nom_objet);
     64                        $objet_nom      = $result[1];
     65                        $objet_type = objet_type($objet_nom);
    6666
    6767                        // récupérer le type de parent…
    68                         $table_objet = table_objet_sql($type_objet);
    69                         $table = lister_tables_objets_sql($table_objet);
    70                         $type_parent = $table['parent']['0']['type'];
    71 
    72                         // …puis l'id_parent
    73                         $id = id_table_objet($type_parent);
    74                         $id_parent = $flux['args']['contexte'][$id];
     68                        include_spip('base/objets_parents');
     69                        $parent = type_objet_info_parent($objet_type);
     70                        $parent_champ   = $parent['0']['champ'];
     71                        $id_parent              = $flux['args']['contexte'][$parent_champ];
    7572
    7673                        // suffixe de la pagination : particularité des objets historiques
    77                         switch ($type_objet) {
     74                        switch ($objet_type) {
    7875                                case 'article':
    7976                                        $suffixe_pagination = 'art';
     
    8683                                        break;
    8784                                default:
    88                                         $suffixe_pagination = $type_objet;
     85                                        $suffixe_pagination = $objet_type;
    8986                                        break;
    9087                        }
     
    9289                        // Calcul du JS à insérer avec les paramètres
    9390                        $ajout_script = recuperer_fond('prive/squelettes/inclure/rang', array(  'suffixe_pagination' => $suffixe_pagination,
    94                                                                                                                                                                         'objet' => $nom_objet,
     91                                                                                                                                                                        'objet'         => $objet_nom,
    9592                                                                                                                                                                        'id_parent' => $id_parent ));
    9693
     
    109106function rang_pre_edition($flux) {
    110107
    111         if ($flux['args']['action']=='instituer' && lire_config('rang/rang_max')) {
     108        $rang_max = lire_config('rang/rang_max');
     109       
     110        if (isset($rang_max) && !empty($rang_max) && $flux['args']['action']=='instituer' ) {
     111
    112112                $rang_objets    = rtrim(lire_config('rang/rang_objets'), ',');
    113113                $liste_objets   = explode(',', $rang_objets);
    114114                $table                  = $flux['args']['table'];
    115115
    116                 // cas des objets avec statut
    117116                if (in_array($table, $liste_objets)) {
    118117                        $id_objet       = $flux['args']['id_objet'];
  • _plugins_/rang/trunk/todo.txt

    r109504 r109761  
    33- au moment du choix d'un objet dans la config du plugin,  affecter automatiquement un rang
    44- corrolaire : si un objet à des "num titre", traiter.
     5- changer la déclaration des ID car si plusieurs tableaux dans la même page, on risque d'avoir plusieurs fois le même ID. Ca marchera, mais ça ne sera pas valide HTML (tcharlss)
    56- gérer les rubriques;
     7- gérer le reclassement d'un tableau suite à la suppression d'un item (genre mot-cle) ou à la dépublication d'un objet avec statut.
    68- gérer le rang des liaisons (objets liés à un autre objet)(ex. : pouvoir ordonner la liste des mots clés d'un article)
    79- gérer les objets éditoriaux historiques de SPIP : brèves + sites ;
Note: See TracChangeset for help on using the changeset viewer.