Changeset 110054 in spip-zone


Ignore:
Timestamp:
May 1, 2018, 1:28:06 PM (17 months ago)
Author:
nicod@…
Message:

Version 0.8, qui implique de revoir les squelettes de listes d'objets qui utilisent rang (pas de compatibilité ascendante).

Une nouvelle balise #RANG_LISTE_OBJETS, qui retourne la liste des objets pris en charge par Rang dans sa config.
Ça permet d'éviter d'utiliser le filtre |rang_objet_dans_config, qui génère une erreur quand Rang n'est pas installé.
On peut donc tester dans un squelette de liste d'objets s'il est pris en charge avec #VAL{patates}|in_array{#RANG_LISTE_OBJETS} sans que ça ne génère d'erreurs si Rang n'est pas installé.

Le type d'objet et l'id de chaque objet sont maintenant passés dans des attributs data, à savoir data-objet="patates" sur la <table>, et data-id_objet="#ID_PATATE" sur chaque <tr> (sur ce point il faut modifier les squelettes existant).
Les squelettes fournis avec Rang ont été mis à jour.

Le JS de Rang insère maintenant automatiquement un <td> avec le picto "draggable" au début de chaque <tr>, inutile de l'ajouter soi même dans les squelettes des listes d'objets (simplification).

Une nouvelle façon de calculer les contextes pour lesquels on insère le JS de Rang : au lieu d'obliger à utiliser le pipeline rang_declarer_contexte, qui devient donc facultatif, on calcule tout simplement les contextes à partir de la liste des objets sélectionnés dans la config.
C'est plus simple : on coche un objet dans la config, et c'est tout.
Mais on peut toujours utiliser le pipeline rang_declarer_contexte pour déclarer un contexte hors norme.

Location:
_plugins_/rang/branches/0.8
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/rang/branches/0.8/action/trier_items.php

    r109761 r110054  
    4848        foreach ($tab as $key => $value) {
    4949                $rang   = $page + $key + 1; // le classement commence à 1, pas à 0
    50                 $id             = intval(substr($value, 3));
     50                $id             = intval($value);
    5151                if ($id_parent == 'rien') {
    5252                        $where = "$id_objet=$id";
  • _plugins_/rang/branches/0.8/inc/rang_api.php

    r109761 r110054  
    173173
    174174/**
     175 * Retourne la listes des pages (exec) sur lesquelles activer Rang.
     176 * On prend la liste des objets cochés dans la configuration en considérant que le nom de l'objet et de l'exec sont identiques.
     177 * Si ce n'est pas le cas, le pipeline rang_declarer_contexte permet d'ajouter un exec spécifique.
     178 * On ajoute aussi les cas particuliers historiques.
     179 *
     180 * @return array
     181 */
     182function rang_get_contextes() {
     183        static $contextes;
     184        if(is_array($contextes)){
     185                return $contextes;
     186        }
     187        $tables = explode(',', lire_config('rang/rang_objets'));
     188        $contextes = array();
     189        foreach ($tables as $table) {
     190                $objet    = table_objet($table);
     191                $contextes[] = $objet;
     192                // cas objets historiques
     193                switch ($objet) {
     194                        case 'mots':
     195                                $contextes[] = 'groupe_mots';
     196                                $contextes[] = 'mots-admin';
     197                                break;
     198                        case 'articles':
     199                                $contextes[] = 'rubrique';
     200                                break;
     201                }
     202        }
     203        // vérifier si des plugins déclarent des contextes spécifiques
     204        $contextes = pipeline('rang_declarer_contexte',$contextes);
     205       
     206        return $contextes;
     207}
     208
     209/**
    175210 * Calculer le rang pour la nouvelle occurence de l’objet
    176211 * @param string $table
  • _plugins_/rang/branches/0.8/lang/rang_fr.php

    r106496 r110054  
    2020        // I
    2121        'info_id' => 'ID',
    22         'info_rang' => 'N<sup>o</sup>.',
    23         'info_rang_abbr' => 'N<sup>o</sup>',
     22        'info_rang' => 'N°',
     23        'info_rang_abbr' => 'N°',
    2424       
    2525        // L
  • _plugins_/rang/branches/0.8/paquet.xml

    r110053 r110054  
    22        prefix="rang"
    33        categorie="navigation"
    4         version="0.7.15"
     4        version="0.8.0"
    55        etat="experimental"
    66        compatibilite="[3.1.0;3.2.*]"
  • _plugins_/rang/branches/0.8/prive/objets/liste/articles.html

    r107025 r110054  
    66        points,-1
    77}})
    8 ][(#REM)
    9         activer le tri par rang si l'objet 'article' a été sélectionné dans la conf du plugin
    10         sauf sur la page d'accueil (derniers articles publiés etc.) : garder le tri par date
    11 ][(#VAL{article}|rang_objet_dans_config|oui|et{#ENV{exec}|=={'accueil'}|non}) [(#VAL{rang}|setenv{par})] #SET{tri,rang}
    12 ]<B_liste_art>
     8]
     9#SET{activer_rang, #ENV{id_rubrique}|et{#ENV{exec}|=={'accueil'}|non}|et{#VAL{articles}|in_array{#RANG_LISTE_OBJETS}} }
     10[(#GET{activer_rang}|oui) [(#VAL{rang}|setenv{par})] #SET{tri,rang}]
     11<B_liste_art>
    1312#ANCRE_PAGINATION
    1413<div class="liste-objets articles">
    15 <table class='spip liste'>
     14<table class="spip liste" data-objet="articles">
    1615[<caption><strong class="caption">(#ENV*{titre,#GRAND_TOTAL|singulier_ou_pluriel{info_1_article,info_nb_articles}})</strong></caption>]
    1716        <thead>
    18                 <tr class='first_row'>
    19                         [(#ENV{id_rubrique}|et{#VAL{article}|rang_objet_dans_config}|oui)<th class="picto" scope="col"></th>]
     17                <tr class="first_row">
    2018                        <th class='statut' scope='col'>[(#TRI{statut,<span title="<:lien_trier_statut|attribut_html:>">#</span>,ajax})]</th>
    21                         [(#ENV{id_rubrique}|et{#VAL{article}|rang_objet_dans_config}|oui)<th class="rang" scope="col">[(#TRI{rang,<span title="<:rang:lien_trier_rang|attribut_html:>"><:rang:info_rang_abbr:></span>,ajax})]</th>]
     19                        [(#GET{activer_rang}|oui) <th class="rang" scope="col">[(#TRI{rang,<span title="<:rang:lien_trier_rang|attribut_html:>"><:rang:info_rang_abbr:></span>,ajax})]</th>]
    2220                        <th class='titre principale' scope='col' colspan='2'>[(#TRI{titre,<:info_titre:>,ajax})]</th>
    2321                        <th class='auteur' scope='col'><:auteur:></th>
     
    2927        <BOUCLE_liste_art(ARTICLES){id_article?}{id_rubrique?}{id_mot?}{id_auteur?}{where?}{statut?}{recherche?}{tri #ENV{par,date},#GET{defaut_tri}}{par titre}{pagination #ENV{nb,10}}{!lang_select}>
    3028                [(#LANG|changer_typo)]
    31                 <tr id="id_#ID_ARTICLE" class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})]">
    32                         [(#ENV{id_rubrique}|et{#VAL{article}|rang_objet_dans_config}|oui)<td class="picto">[(#CHEMIN_IMAGE{draggable-16.png}|balise_img)]</td>]
     29                <tr [(#GET{activer_rang}|oui) data-id_objet="#ID_ARTICLE"] class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})]">
    3330                        <td class='statut'>[(#STATUT|puce_statut{article,#ID_ARTICLE,#ID_RUBRIQUE})]</td>
    34                         [(#ENV{id_rubrique}|et{#VAL{article}|rang_objet_dans_config}|oui)<td class="rang" scope="col">[(#RANG).]</td>]
     31                        [(#GET{activer_rang}|oui) <td class="rang">[(#RANG).]</td>]
    3532                        <td class='titre principale'[(#LOGO_ARTICLE_NORMAL|non)colspan='2']><a href="[(#ID_ARTICLE|generer_url_entite{article})]"
    3633                                                [hreflang="(#ENV{lang}|=={#LANG}|non|?{#LANG})"]
  • _plugins_/rang/branches/0.8/prive/objets/liste/mots-admin.html

    r107245 r110054  
    44        id_mot,1
    55}})
    6 ][(#REM)
    7         activer le tri par rang si l'objet 'mot' a été sélectionné dans la conf du plugin
    8 ][(#VAL{mot}|rang_objet_dans_config|oui) [(#VAL{rang}|setenv{par})] #SET{tri,rang}
    9 ]<B_liste_mot>
     6]
     7#SET{activer_rang, #ENV{id_groupe}|et{#VAL{mots}|in_array{#RANG_LISTE_OBJETS}} }
     8[(#GET{activer_rang}|oui) [(#VAL{rang}|setenv{par})] #SET{tri,rang} ]
     9<B_liste_mot>
    1010#ANCRE_PAGINATION
    1111<div class="liste-objets mots">
    12 <span class='image_loading'>&nbsp;</span>
    13 <table class='spip liste'>
     12<span class="image_loading">&nbsp;</span>
     13<table class="spip liste" data-objet="mots">
    1414[<caption><strong class="caption">(#ENV*{titre,#GRAND_TOTAL|singulier_ou_pluriel{info_1_mot_cle,info_nb_mots_cles}})</strong></caption>]
    1515        <thead>
    1616                <tr class='first_row'>
    17                         [(#ENV{id_groupe}|et{#VAL{mot}|rang_objet_dans_config}|oui)<th class="picto" scope="col">[(#TRI{rang,<span title="<:rang:lien_trier_rang|attribut_html:>"><:rang:info_rang_abbr:></span>,ajax})]</th>]
    1817                        <th class='picto' scope='col'></th>
     18                        [(#GET{activer_rang}|oui)<th class="rang" scope="col">[(#TRI{rang,<span title="<:rang:lien_trier_rang|attribut_html:>"><:rang:info_rang_abbr:></span>,ajax})]</th>]
    1919                        <th class='titre' scope='col' colspan='2'>[(#TRI{multi titre,<:info_titre:>,ajax})]</th>
    2020                        <th class='utilisations' scope='col'></th>
     
    2727                #SET{url_voir,#AUTORISER{voir,mot,#ID_MOT}|?{#ID_MOT|generer_url_entite{mot}|parametre_url{redirect,#ENV{retour}},''}}
    2828                #SET{url_edit,#AUTORISER{modifier,mot,#ID_MOT}|?{#URL_ECRIRE{mot_edit,id_mot=#ID_MOT}|parametre_url{redirect,#ENV{retour}},''}}
    29                 <tr id="id_#ID_MOT" class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})]">
    30                         [(#ENV{id_groupe}|et{#VAL{mot}|rang_objet_dans_config}|oui)<td class="picto">[(#CHEMIN_IMAGE{draggable-16.png}|balise_img)]</td>]
     29                <tr [(#GET{activer_rang}|oui) data-id_objet="#ID_MOT"] class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})]">
    3130                        <td class='picto'>[(#VAL|puce_statut{mot,#ID_MOT,#ID_GROUPE})]</td>
    32                         <td class='titre principale'[(#LOGO_MOT|non) colspan='2']>[<a href="(#GET{url_voir})">][(#RANG). ]#TITRE[</a>(#GET{url_voir}|oui)]</td>
     31                        [(#GET{activer_rang}|oui) <td class="rang">[(#RANG).]</td>]
     32                        <td class='titre principale'[(#LOGO_MOT|non) colspan='2']>[<a href="(#GET{url_voir})">]#TITRE[</a>(#GET{url_voir}|oui)]</td>
    3333                        [<td class='logo'>(#LOGO_MOT|image_reduire{40,40})</td>]
    3434                        <td class='utilisations secondaire'>#SET{utilise,#ID_MOT|objets_associes_mot{#ID_GROUPE}|implode{', '}}#GET{utilise}</td>
  • _plugins_/rang/branches/0.8/prive/objets/liste/mots.html

    r107246 r110054  
    22        multi titre,1,
    33        rang,1,
    4         titre,1,
    54        id_mot,1,
    65        points,-1
    76}})
    8 ][(#REM)
    9         activer le tri par rang si l'objet 'mot' a été sélectionné dans la conf du plugin
    10 ][(#VAL{mot}|rang_objet_dans_config|oui) [(#VAL{rang}|setenv{par})] #SET{tri,rang}
    11 ]<B_liste_mot>
     7]
     8#SET{activer_rang, #ENV{id_groupe}|et{#VAL{mots}|in_array{#RANG_LISTE_OBJETS}} }
     9[(#GET{activer_rang}|oui) [(#VAL{rang}|setenv{par})] #SET{tri,rang}]
     10<B_liste_mot>
    1211#ANCRE_PAGINATION
    1312<div class="liste-objets mots">
    14 <table class='spip liste'>
     13<table class="spip liste" data-objet="mots">
    1514[<caption><strong class="caption">(#ENV*{titre,#GRAND_TOTAL|singulier_ou_pluriel{info_1_mot_cle,info_nb_mots_cles}})</strong></caption>]
    1615        <thead>
    1716                <tr class='first_row'>
    1817                        <th class='picto' scope='col'></th>
    19                         [(#ENV{id_groupe}|et{#VAL{mot}|rang_objet_dans_config}|oui)<th class="picto" scope="col">[(#TRI{rang,<span title="<:rang:lien_trier_rang|attribut_html:>"><:rang:info_rang_abbr:></span>,ajax})]</th>]
     18                        [(#GET{activer_rang}|oui)<th class="picto" scope="col">[(#TRI{rang,<span title="<:rang:lien_trier_rang|attribut_html:>"><:rang:info_rang_abbr:></span>,ajax})]</th>]
    2019                        <th class='titre' scope='col' colspan='2'>[(#TRI{titre,<:info_titre:>,ajax})]</th>
    2120                        <th class='type' scope='col'>[(#TRI{type,<:mots:info_dans_groupe:>,ajax})]</th>
     
    2524        <tbody>
    2625        <BOUCLE_liste_mot(MOTS){id_mot?}{id_groupe?}{id_rubrique?}{id_article?}{where?}{recherche?}{tri #ENV{par,num titre},#GET{defaut_tri}}{par titre}{pagination #ENV{nb,10}}>
    27                 <tr id="id_#ID_MOT" class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})]">
     26                <tr [(#GET{activer_rang}|oui)data-id_objet="#ID_MOT"] class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})]">
    2827                        <td class='picto'>[(#VAL|puce_statut{mot,#ID_MOT,#ID_GROUPE})]</td>
    29                         [(#ENV{id_groupe}|et{#VAL{mot}|rang_objet_dans_config}|oui)<td class="picto">[(#CHEMIN_IMAGE{draggable-16.png}|balise_img)]</td>]
    30                         <td class='titre principale'[(#LOGO_MOT|non) colspan='2']><a href="[(#ID_MOT|generer_url_entite{mot})]" title="<:info_numero_abbreviation|attribut_html:> #ID_MOT">[(#RANG). ]#TITRE</a></td>
     28                        [(#GET{activer_rang}|oui)<td class="picto">[(#CHEMIN_IMAGE{draggable-16.png}|balise_img)]</td>]
     29                        <td class='titre principale'[(#LOGO_MOT|non) colspan='2']><a href="[(#ID_MOT|generer_url_entite{mot})]" title="<:info_numero_abbreviation|attribut_html:> #ID_MOT">#TITRE</a></td>
    3130                        [<td class='logo'>(#LOGO_MOT|image_reduire{40,40})</td>]
    3231                        <td class='type secondaire'>#TYPE</td>
  • _plugins_/rang/branches/0.8/prive/squelettes/inclure/rang.html

    r107026 r110054  
    1111                       
    1212                $(".spip.liste tbody").each(function(){
    13                         if($(this).find('tr').length > 1 && $(this).find('tr').attr('id')) {
     13                        if($(this).find('tr').length > 1 && $(this).find('tr').data('id_objet')) {
     14                                // ajouter automatiquement une colonne avec le picto "draggable" si elle n'est pas présente
     15                                if(!$(this).find('img[src*=draggable]').length) {
     16                                        $(this).parent('table').find('thead').find('tr').prepend("<th class='drag'>&nbsp;</th>");
     17                                        $(this).find('tr').prepend("<td class='drag'>[(#CHEMIN_IMAGE{draggable-16.png}|balise_img)]</td>");
     18                                }
     19                                // ajouter le comportement "sortable"
    1420                                $(this).sortable({
    1521                                        placeholder: ".ui-state-highlight",
     
    1723                                        containment: "parent",
    1824                                        tolerance: "pointer",
     25                                        classes: {"ui-sortable-helper": "rang-sortable-helper"},
    1926                                        update: function( event, ui ) {
    2027                                                var url = "[(#VAL{trier_items}|generer_url_action{#ENV{objet}, 1})]";
    2128                                                var $me = $(this);
    22                                                 var liste = $me.sortable("toArray");
    23        
     29                                                var liste = $me.sortable("toArray", {attribute: 'data-id_objet'});
    2430                                                var page = parseInt(window.location.search.split('&debut_liste_#ENV{suffixe_pagination}=')[1]);
    2531                                                if (isNaN(page) === false) {
     
    3541                                        }
    3642                                });
     43                                $(this).disableSelection();
    3744                        }
    38                 });
    39 
    40                 $( ".spip.liste tbody" ).disableSelection();
     45                });             
    4146
    4247                [(#SPIP_VERSION|version_compare{3.2, <}|oui)
  • _plugins_/rang/branches/0.8/prive/style_prive_plugin_rang.html

    r102613 r110054  
    44#SET{left,#ENV{ltr}|choixsiegal{left,left,right}}
    55#SET{right,#ENV{ltr}|choixsiegal{left,right,left}}
     6[(#REM)<style type="text/css">]
    67
    78.liste-objets th.rang,
    8 .liste-objets td.rang { text-align:#GET{right}; }
     9.liste-objets td.rang { text-align:#GET{right}; width: 20px; }
     10.liste-objets th.drag,
     11.liste-objets td.drag { width: 16px; }
     12.rang-sortable-helper {
     13        display: table;
     14}
  • _plugins_/rang/branches/0.8/rang_fonctions.php

    r110053 r110054  
    2727function balise_RANG($p) {
    2828        $p = balise_RANG_dist($p);
    29        
    3029        $p->code = "(intval($p->code) == 0 ? '' : $p->code)";
    31        
    3230        return $p;
     31}
     32
     33/**
     34 * Balise `#RANG_LISTE_OBJETS`
     35 * Retourne la listes des objets (nom au pluriel) cochés dans la configuration.
     36 * Permet d'utiliser #VAL{produits}|in_array{#RANG_LISTE_OBJETS}} dans les squelettes,
     37 * sans lever d'erreur si le plugin Rang n'est pas installé.
     38 *
     39 * @balise
     40 *       
     41 * @param $p
     42 *
     43 * @return mixed
     44 */
     45function balise_RANG_LISTE_OBJETS($p) {
     46        $p->code = "rang_liste_objets()";
     47        $p->interdire_scripts = false;
     48        return $p;
     49}
     50
     51/**
     52 * Retourne la listes des objets (nom au pluriel) cochés dans la configuration.
     53 *
     54 * @return array
     55 */
     56function rang_liste_objets() {
     57        $tables = explode(',', lire_config('rang/rang_objets'));
     58        $objets = array();
     59        foreach ($tables as $table) {
     60                $objets[] = table_objet($table);
     61        }
     62        return $objets;
    3363}
    3464
     
    3666 * Détecte si l'objet a été selectionné dans la configuration du plugin
    3767 *
     68 * @deprecated dépréciée depuis la version 0.8, utiliser à la place la balise #RANG_LISTE_OBJETS
     69 *             exemple : #VAL{produits}|in_array{#RANG_LISTE_OBJETS}}
     70 *             
    3871 * @param string $objet
    3972 *     article, rubrique, etc.
     
    4881}
    4982
     83//function balise_OBJET_RANG($p) {
     84//      $type_objet = interprete_argument_balise(1, $p);
     85//      $id_objet_parent = interprete_argument_balise(2, $p);
     86//      if (!$type_objet) {
     87//              $msg = _T('zbug_balise_sans_argument', array('balise' => ' OBJET_RANG'));
     88//              erreur_squelette($msg, $p);
     89//              $p->interdire_scripts = true;
     90//              return $p;
     91//      } else {
     92//              if($id_objet_parent){
     93//                      $p->code = $id_objet_parent. ' && (in_array(' . $type_objet . ',rang_liste_objets()))';
     94//              } else {
     95//                      $p->code = 'in_array(' . $type_objet . ',rang_liste_objets())';
     96//              }
     97//              $p->interdire_scripts = true;
     98//              return $p;
     99//      }
     100//}
  • _plugins_/rang/branches/0.8/rang_pipelines.php

    r110053 r110054  
    2121 *
    2222 * @param array $tables
     23 *
    2324 * @return array
    2425 */
     
    2728        $tables_objets_selectionnes = lire_config('rang/rang_objets');
    2829        if (isset($tables_objets_selectionnes) AND !empty($tables_objets_selectionnes)) {
    29        
     30
    3031                /* Declaration du champ Rang sur les objets sélectionnés */
    31                 $rang_objets = rtrim(lire_config('rang/rang_objets'), ',');
     32                $rang_objets  = rtrim(lire_config('rang/rang_objets'), ',');
    3233                $liste_objets = explode(',', $rang_objets);
    3334
    34                 foreach ($liste_objets as  $table) {
     35                foreach ($liste_objets as $table) {
    3536                        $tables[$table]['field']['rang'] = "SMALLINT NOT NULL";
    3637                }
     
    3940}
    4041
    41 
    4242/**
    4343 * Calculer et Inserer le JS qui gére le tri par Drag&Drop dans le bon contexte (la page ?exec=xxxxx)
    4444 *
    45  * @param       array $flux     Données du pipeline
    46  * @return      array           Données du pipeline
     45 * @param    array $flux Données du pipeline
     46 *
     47 * @return    array        Données du pipeline
    4748 */
    4849function rang_recuperer_fond($flux) {
    49        
     50
    5051        $tables_objets_selectionnes = lire_config('rang/rang_objets');
    5152        if (isset($tables_objets_selectionnes) AND !empty($tables_objets_selectionnes)) {
    52                
     53
    5354                // Gestion du contexte : dans quelle page insérer le JS ?
    54                 $exec           = _request('exec');
    55                 $contextes      = pipeline('rang_declarer_contexte', array('rubrique', 'groupe_mots', 'mots'));
    56                 $sources        = rang_get_sources();
    57 
    58                 if ( in_array($exec, $contextes)
    59                         AND in_array($flux['args']['fond'], $sources)
    60                         AND strpos($flux['data']['texte'], 'liste-objets') // cette derniere condition n'est peut etre pas utile, voire contraignante pour ordonner autre chose qu'une liste d'objet ?
     55                if (in_array(_request('exec'), rang_get_contextes())
     56                        && in_array($flux['args']['fond'], rang_get_sources())
     57                        && strpos($flux['data']['texte'], 'data-objet=')
    6158                ) {
    62                         // recuperer les paramètres pour le calcul du JS correspondant
    63                         preg_match('/liste-objets\s([A-Za-z]+)/', $flux['data']['texte'], $result);
    64                         $objet_nom      = $result[1];
     59                        // recuperer le nom de l'objet
     60                        preg_match('/data-objet=["\'](\w+)["\']/', $flux['data']['texte'], $result);
     61                        $objet_nom  = $result[1];
    6562                        $objet_type = objet_type($objet_nom);
    6663
    67                         // récupérer le type de parent…
    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];
     64                        // insérer le script de tri si on a bien un objet à ranger
     65                        if ($objet_type) {
     66                                // récupérer le type de parent…
     67                                include_spip('base/objets_parents');
     68                                $parent       = type_objet_info_parent($objet_type);
     69                                $parent_champ = $parent['0']['champ'];
     70                                $id_parent    = $flux['args']['contexte'][$parent_champ];
    7271
    73                         // suffixe de la pagination : particularité des objets historiques
    74                         switch ($objet_type) {
    75                                 case 'article':
    76                                         $suffixe_pagination = 'art';
    77                                         break;
    78                                 case 'site':
    79                                         $suffixe_pagination = 'sites';
    80                                         break;
    81                                 case 'breve':
    82                                         $suffixe_pagination = 'bre';
    83                                         break;
    84                                 default:
    85                                         $suffixe_pagination = $objet_type;
    86                                         break;
     72                                // suffixe de la pagination : particularité des objets historiques
     73                                switch ($objet_type) {
     74                                        case 'article':
     75                                                $suffixe_pagination = 'art';
     76                                                break;
     77                                        case 'site':
     78                                                $suffixe_pagination = 'sites';
     79                                                break;
     80                                        case 'breve':
     81                                                $suffixe_pagination = 'bre';
     82                                                break;
     83                                        default:
     84                                                $suffixe_pagination = $objet_type;
     85                                                break;
     86                                }
     87
     88                                // Calcul du JS à insérer avec les paramètres
     89                                $ajout_script = recuperer_fond('prive/squelettes/inclure/rang', array(
     90                                        'suffixe_pagination' => $suffixe_pagination,
     91                                        'objet'              => $objet_nom,
     92                                        'id_parent'          => $id_parent,
     93                                ));
     94
     95                                // et hop, on insère le JS calculé
     96                                $flux['data']['texte'] = str_replace('</table>', '</table>' . $ajout_script, $flux['data']['texte']);
    8797                        }
    88 
    89                         // Calcul du JS à insérer avec les paramètres
    90                         $ajout_script = recuperer_fond('prive/squelettes/inclure/rang', array(  'suffixe_pagination' => $suffixe_pagination,
    91                                                                                                                                                                         'objet'         => $objet_nom,
    92                                                                                                                                                                         'id_parent' => $id_parent ));
    93 
    94                         // et hop, on insère le JS calculé
    95                         $flux['data']['texte'] = str_replace('</table>', '</table>'. $ajout_script, $flux['data']['texte']);
    9698                }
    9799        }
     
    101103/**
    102104 * Insertion dans le pipeline pre_edition pour le classer l'objet quand on le publie
    103  * @param       array $flux     Données du pipeline
    104  * @return      array           Données du pipeline
     105 *
     106 * @param    array $flux Données du pipeline
     107 *
     108 * @return    array        Données du pipeline
    105109 */
    106110function rang_pre_edition($flux) {
    107111
    108112        $rang_max = lire_config('rang/rang_max');
    109        
    110         if (isset($rang_max) && !empty($rang_max) && $flux['args']['action']=='instituer' ) {
    111113
    112                 $rang_objets    = rtrim(lire_config('rang/rang_objets'), ',');
    113                 $liste_objets   = explode(',', $rang_objets);
    114                 $table                  = $flux['args']['table'];
     114        if (isset($rang_max) && !empty($rang_max) && $flux['args']['action'] == 'instituer') {
     115
     116                $rang_objets  = rtrim(lire_config('rang/rang_objets'), ',');
     117                $liste_objets = explode(',', $rang_objets);
     118                $table        = $flux['args']['table'];
    115119
    116120                if (in_array($table, $liste_objets)) {
    117                         $id_objet       = $flux['args']['id_objet'];
    118                        
     121                        $id_objet = $flux['args']['id_objet'];
     122
    119123                        // cas des objets avec statut
    120                         if (isset($flux['data']['statut']) && $flux['data']['statut']=='publie') {
     124                        if (isset($flux['data']['statut']) && $flux['data']['statut'] == 'publie') {
    121125                                $flux['data']['rang'] = rang_classer_dernier($table, $id_objet);
    122126                        }
Note: See TracChangeset for help on using the changeset viewer.