Changeset 123191 in spip-zone


Ignore:
Timestamp:
Mar 30, 2020, 3:00:49 PM (2 months ago)
Author:
peetdu@…
Message:

Gestion des contenus par rubrique : nouvelle fonctionnalité « cadenasser » un objet. A la création d’une rubrique, l’objet est alors automatiquement exclu de cette rubrique.

Location:
_plugins_/lim/trunk
Files:
2 added
1 deleted
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/lim/trunk/formulaires/inc-choisir-rubriques.html

    r123078 r123191  
    1 [(#REM) Récupérer les objets sélectionnés. ex. spip_articles -> article ]
    2 #SET{objets, #CONFIG{lim/rubriques/objets}|array_flip}
     1[(#REM) Récupérer les objets sélectionnés et la chaine de langue correspondante traduite.]
     2#SET{traductions, #REM|lim_get_rubriques_objets}
    33
    44
    5 [(#REM) multilinguisme : pour les objets sélectionnés, récupérer le nom traduit et les afficher dans l'ordre alphabétique ]
    6 #SET{traductions,#ARRAY}<BOUCLE_objets(DATA){source tableau,#REM|lister_tables_objets_sql}>[(#EDITABLE|oui)
    7 [(#SET{traductions,#GET{traductions}|array_merge{#ARRAY{#CLE,#TEXTE_OBJETS|_T}}})]
    8 ]</BOUCLE_objets>
    9 [(#SET{traductions,#GET{traductions}|array_intersect_key{#GET{objets}}})]
    10 
    11 
    12 [(#REM) Récupérer le tableau des types d'objets sélectionnés. ex. spip_articles -> article ]
    13 #SET{type, #ARRAY}
    14 [(#SET{type, #GET{traductions}|lim_type})]
    155
    166<div class="grid_rub">
    177        <div></div>
    18         <BOUCLE_entete2(DATA){source tableau,#GET{traductions}}{par cle}>
     8        <BOUCLE_entete2(DATA){source tableau,#GET{traductions}}{par valeur}>
    199                #SET{type_obj, #CLE|objet_type}
    20                 <div class="center"><img src='#CHEMIN_IMAGE{#GET{type_obj}-24.png}'><br>#VALEUR</div>
     10                <div class="center">
     11                        <img src='#CHEMIN_IMAGE{#GET{type_obj}-24.png}'><br>
     12                        <span>#VALEUR</span><br>
     13                        #SET{table, #CLE|table_objet_sql}
     14                        <input class="type_lock" type="checkbox" data-objet='#CLE' [checked="(#CLE|lim_valeur_cadenas)"]>
     15                        [(#CLE|lim_valeur_cadenas|?{🔒,🔓})]
     16                </div>
    2117        </BOUCLE_entete2>
    2218        #SET{nbre_objets, #TOTAL_BOUCLE}
     
    2925                <div class="grid_rub">
    3026                        <div class="titre_rub"><a href="#URL_ECRIRE{rubrique,id_rubrique=#ID_RUBRIQUE}">#TITRE</a></div>
    31                         <BOUCLE_par_traduction1(DATA){source tableau,#GET{type}}{par cle}>
    32                                 [(#INCLURE{fond=formulaires/inc-input-rub,env,name=#VALEUR}{#VALEUR=#ENV{#VALEUR}}{id_rubrique=#ID_RUBRIQUE}{secteur=oui})]
     27                        <BOUCLE_par_traduction1(DATA){source tableau,#GET{traductions}}{par valeur}>
     28                                [(#INCLURE{fond=formulaires/inc-input-rub,env,name=#CLE}{#CLE=#ENV{#CLE}}{id_rubrique=#ID_RUBRIQUE}{secteur=oui})]
    3329                        </BOUCLE_par_traduction1>
    3430                </div>
     
    3632                        <div class='grid_rub sousrub sousrub--#PROFONDEUR'>
    3733                                <div class="titre_rub"><a href="#URL_ECRIRE{rubrique,id_rubrique=#ID_RUBRIQUE}">#TITRE</a></div>
    38                                 <BOUCLE_par_traduction2(DATA){source tableau,#GET{type}}{par cle}>
    39                                 [(#INCLURE{fond=formulaires/inc-input-rub,env,name=#VALEUR}{#VALEUR=#ENV{#VALEUR}}{id_rubrique=#ID_RUBRIQUE})]
     34                                <BOUCLE_par_traduction2(DATA){source tableau,#GET{traductions}}{par valeur}>
     35                                [(#INCLURE{fond=formulaires/inc-input-rub,env,name=#CLE}{#CLE=#ENV{#CLE}}{id_rubrique=#ID_RUBRIQUE})]
    4036                                </BOUCLE_par_traduction2></div><BOUCLE_rec(BOUCLE_enfants_rubriques)/>
    4137                </BOUCLE_enfants_rubriques>
     
    8177                });
    8278
    83                 jQuery("input:checkbox").change(function(){
     79                jQuery("input.lim_hidden:checkbox").change(function(){
    8480                        var type = $(this).attr('name').slice(0,-2);
    8581                        var $check = "div.check." + type;
     
    9086                        }
    9187                });
     88
     89                jQuery("input.type_lock").on('click', function(){
     90                        var $me = $(this);
     91                        var type_objet = $(this).attr('data-objet');
     92                        var url = "[(#VAL{lock_objet}|generer_url_action{'', 1})]";
     93
     94                        if (jQuery(this).is(":checked")) {
     95                                var action = "add";
     96                        } else {
     97                                var action = "delete";
     98                        }
     99
     100                        $.post(url, {objet: type_objet, quoi: action})
     101                                .done(function(data){
     102                                        $me.ajaxReload();
     103                        });
     104                });
    92105        });
    93106})(jQuery);
  • _plugins_/lim/trunk/inc/lim.php

    r118601 r123191  
    148148
    149149/**
    150  * Récupérer le type des objets sélectionnés. ex. spip_articles -> article
     150 * Gestion des contenus par rubriques : renvoyer le tableau des objets sélectionnés au format array($type_objet, trad(texte_objets))
     151 * Ex. en français : array('article' => 'Articles', 'site' => 'Sites référencés')
     152 * Ex. en espagnol : array('article' => 'Artículos', 'site' => 'Sitios referenciados')
    151153 *
    152  * @param array
    153154 * @return array
    154155 */
    155 function lim_type($tableau) {
    156         if (!is_array($tableau)) {
    157                 return '';
     156
     157function lim_get_rubriques_objets() {
     158        include_spip('inc/config');
     159        include_spip('base/objets');
     160
     161        $liste = array();
     162        if ($objets_lim = lire_config('lim/rubriques/objets')) {
     163                foreach ($objets_lim as $value) {
     164                        if(!empty($value)) {
     165                                $key = objet_type($value);
     166                                $infos_table = lister_tables_objets_sql($value);
     167                                $liste[$key] = _T($infos_table['texte_objets']);
     168                        }
     169                }
     170        }
     171       
     172        return $liste;
     173}
     174
     175
     176function lim_valeur_cadenas($objet) {
     177        include_spip('inc/config');
     178
     179        $cadenas = null;
     180
     181        $table = table_objet_sql($objet);
     182        if ($objets_cadenas = lire_config('lim/rubriques/cadenas')) {
     183                in_array($table, $objets_cadenas) ? $cadenas = true : $cadenas = false;
    158184        }
    159185
    160         array_walk($tableau, 'lim_get_type');
    161         return $tableau;
     186        return $cadenas;
    162187}
    163 
    164 /**
    165  * fonction callback pour lim_type
    166  * Changer les valeurs du tableau spip_articles -> article
    167  */
    168 function lim_get_type(&$value, $key) {
    169         $value = objet_type(table_objet($key));
    170 }
Note: See TracChangeset for help on using the changeset viewer.