Changeset 94578 in spip-zone for _plugins_/lim


Ignore:
Timestamp:
Jan 13, 2016, 4:46:40 PM (5 years ago)
Author:
peetdu@…
Message:

Gestion avancée des restrictions par rubrique : on prend en compte tous les objets éditoriaux

Location:
_plugins_/lim/trunk
Files:
6 edited

Legend:

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

    r93319 r94578  
    1919        span.entete { font-weight: bold; }
    2020        span.center { text-align: center; }
    21         span.tab.rubrique {display:inline-block; width:390px; font-weight:bold; }
    22         .sousrub span.tab.rubrique { margin-left:10px; width:380px; font-weight:normal; }
    23         .sousrub .sousrub span.tab.rubrique { margin-left:20px; width:370px;}
    24         .sousrub .sousrub .sousrub span.tab.rubrique { margin-left:30px; width:360px;}
    25         span.check {display:inline-block; width:[(#VAL{55}|div{#GET{nbre_col}})%]; text-align: center;}
     21        span.tab.rubrique {display:inline-block; width:320px; font-weight:bold; }
     22        .sousrub span.tab.rubrique { margin-left:10px; width:310px; font-weight:normal; }
     23        .sousrub .sousrub span.tab.rubrique { margin-left:20px; width:300px;}
     24        .sousrub .sousrub .sousrub span.tab.rubrique { margin-left:30px; width:320px;}
     25        span.check {display:inline-block; width:[(#VAL{62}|div{#GET{nbre_col}})%]; text-align: center;}
    2626
    2727        #SET{left,#ENV{ltr}|choixsiegal{left,left,right}}
  • _plugins_/lim/trunk/inc/lim_api.php

    r93320 r94578  
    5353
    5454/**
     55 * si LIM est activé pour un objet et si une seule rubrique est activée, ne pas afficher le sélecteur de rubrique
     56 * surcharge de inc/chercher_rubrique.php
     57 * @return string
     58 *     Code HTML du sélecteur
     59 */
     60function inc_chercher_rubrique($id_rubrique, $type, $restreint, $idem = 0, $do = 'aff') {
     61        include_spip('inc/chercher_rubrique');
     62        if (sql_countsel('spip_rubriques') < 1) {
     63                return '';
     64        }
     65        /* surcharge */
     66        $nbre_rubriques_total           = sql_countsel('spip_rubriques');
     67        $nbre_rubriques_desactives      = count(lire_config("lim_rubriques/$type"));
     68
     69        if ($nbre_rubriques_total - $nbre_rubriques_desactives == 1) {
     70                return '';
     71        }
     72        // note : du coup, plus de input name='id_parent' ! Un traitement via le pipeline "editer_contenu_objet" s'occupe de palier à ce problème.
     73        /* fin surcharge */
     74               
     75
     76        // Mode sans Ajax :
     77        // - soit parce que le cookie ajax n'est pas la
     78        // - soit parce qu'il y a peu de rubriques
     79        if (_SPIP_AJAX < 1
     80                or $type == 'breve'
     81                or sql_countsel('spip_rubriques') < _SPIP_SELECT_RUBRIQUES
     82        ) {
     83                return selecteur_rubrique_html($id_rubrique, $type, $restreint, $idem);
     84        } else {
     85                return selecteur_rubrique_ajax($id_rubrique, $type, $restreint, $idem, $do);
     86        }
     87
     88}
     89
     90/**
    5591 * Vérifier si il existe déjà des objets dans la rubrique
    5692 * on renvoi un tableau avec le type et la table_objet
     
    6399        if (sql_countsel($table, "id_rubrique=$id_rubrique") > 0) return true;
    64100        return false;
     101}
     102
     103/**
     104 * récupérer le tableau des rubriques dans lesquelles il est possible d'editer un objet
     105 *
     106 * @param string $type
     107 * @return array
     108 */
     109
     110function lim_publierdansrubriques($type) {
     111        $tab_rubrique_objet = lire_config("lim_rubriques/$type");
     112        $res                            = sql_allfetsel('id_rubrique', 'spip_rubriques');
     113        foreach ($res as $key => $value) {
     114                $tab_rubriques[] = $value['id_rubrique'];
     115        }
     116        $rubriques_choisies = array_diff($tab_rubriques,$tab_rubrique_objet);
     117        return $rubriques_choisies;
    65118}
    66119
     
    86139}
    87140
     141/**
     142 * renvoyer le nombre de rubrique auxquelles est
     143 */
     144function lim_nombre_rubrique($objet) {
     145        $value = objet_type(table_objet($key));
     146}
     147
    88148?>
  • _plugins_/lim/trunk/lang/lim_fr.php

    r91928 r94578  
    1616        'cfg_titre_afficher_logos' => 'Désactiver les logos par contenu',
    1717        'cfg_titre_restriction_par_rubrique' => 'Restreindre les contenus par rubrique',
     18        'cfg_select_objets' => 'sélectionner les objets',
    1819
    1920        // L
  • _plugins_/lim/trunk/lim_administrations.php

    r88639 r94578  
    4242        effacer_meta('lim_logos');
    4343        effacer_meta('lim_rubriques');
     44        effacer_meta('lim_objets');
    4445        effacer_meta($nom_meta_base_version);
    4546}
  • _plugins_/lim/trunk/lim_pipelines.php

    r93319 r94578  
    1212if (!defined('_ECRIRE_INC_VERSION')) return;
    1313
     14include_spip('inc/lim_api');
    1415
    1516/**
    16  * supprime ou non le bloc en fonction de la demande
     17 * gestion forums public et pétitions : supprime ou non le bloc en fonction de la demande
    1718 *
    1819 * @param array $flux
     
    4041
    4142/**
    42  * vérifier si on à le droit de publier l'objet dans cette rubrique
    43  * en fonction des paramètres spécifiés dans la page exec=configurer_lim_rubriques
     43 * gestion des contenus par rubrique : rediriger la creation d'un objet vers la bonne rubrique si celle-ci est pris en compte par LIM
     44 * ce traitement est rendu nécessaire par
     45 * -> l'action de la fonction inc/lim_api.php -> inc_chercher_rubrique qui supprime l'affichage du sélecteur de rubrique si une seule rubrique
     46 * -> le cas 2 (voir ci-dessous)
     47 *
     48 * cas 1 : le rédacteur créer une nouvelle instance de l'objet depuis la bonne rubrique : on a l'id_parent depuis le flux
     49 * cas 2 : le rédacteur créer une instance depuis la barre d'outils rapides, ou via la page exec=objets. On n'a pas l'id_parent.
     50 * Il faut le calculer pour enregistrer l'instance dans une rubrique gérée par LIM
     51 *  a/ via LIM l'objet ne peut être associé qu'à une seule rubrique. On renvoi l'id de cette rubrique
     52 *  b/ via LIM l'objet peut être associé à plusieurs rubriques : pas de traitement. Le sélecteur de rubrique est affiché.
     53 *
     54 * @param array $flux
     55 * @return array $flux
     56 *     le flux data complété par un input hidden 'id_parent' avec la bonne valeur
     57**/
     58function lim_formulaire_charger($flux){
     59        $form                           = $flux['args']['form'];
     60        $type                           = substr($form, 7); // 'editer_objet' devient 'objet'
     61        $nom_table                      = table_objet_sql($type);
     62        $tableau_tables_lim     = explode(',', lire_config('lim_objets'));
     63
     64        if (in_array($nom_table, $tableau_tables_lim)) {
     65                //echo bel_env($flux);
     66               
     67                $tab_rubriques_choisies = lim_publierdansrubriques($type);
     68                if (count($tab_rubriques_choisies) == 1) {
     69                        $id_parent = $flux['data']['id_parent'];
     70                        if (empty($id_parent)) {
     71                                $id_parent = implode($tab_rubriques_choisies);
     72                        }
     73                        $flux['data']['_hidden'] .= "<input type='hidden' name='id_parent' value='$id_parent'>";
     74                }
     75        }
     76        return $flux;
     77}
     78
     79/**
     80 * gestion des contenus par rubrique : vérifier si on à le droit de publier l'objet dans cette rubrique
     81 * en fonction des rubriques décochées dans la page exec=configurer_lim_rubriques
    4482 *
    4583 * @param array $flux
     
    4987function lim_formulaire_verifier($flux){
    5088        $form                           = $flux['args']['form'];
    51         $nom_objet                      = substr($form, 7); // 'editer_objet' devient 'objet'
    52         $nom_table                      = table_objet_sql($nom_objet);
    53         $tableau_tables_lim     = explode(',', lire_config('lim_objets'));
     89        $type                           = substr($form, 7); // 'editer_objet' devient 'objet'
     90        // $nom_table                   = table_objet_sql($type);
     91        // $tableau_tables_lim  = explode(',', lire_config('lim_objets'));
     92        $id =
    5493
    55         if (in_array($nom_table, $tableau_tables_lim)) {
    56                 $id_objet       = $flux['args']['args'][0];
    57                 $cle_table      = id_table_objet($nom_objet);
    58                 $quelles_rubriques = lire_config("lim_rubriques/$nom_objet");
    59                 $id_rub = sql_getfetsel('id_rubrique', $nom_table, "$cle_table=".intval($id_objet));
     94        $faire = 'creer'.$type.'dans';
     95        if (!autoriser($faire, 'rubrique', _request('id_parent'))) {
     96                $flux['data']['id_parent'] .= _T('info_creerdansrubrique_non_autorise');
     97        }
     98               
    6099
    61                 if (is_array($quelles_rubriques) AND in_array($id_rub,$quelles_rubriques)) {
    62                         // echo 'lalala<br>';
    63                         // echo $nom_table.'<br>';
    64                         // echo bel_env($quelles_rubriques);
     100        // if (in_array($nom_table, $tableau_tables_lim)) {
     101               
     102        //      $id_rubrique    = $flux['args']['args'][1];
     103        //      $id_rubrique = _request('id_parent');
     104        //      $tab_rubriques_choisies = lim_publierdansrubriques($type);
    65105
    66                         // echo $id_rub;
    67                         // exit();
    68                         $flux['data']['id_parent'] = "Vous ne pouvez pas publier un $nom_objet à l'intérieur de cette rubrique";
    69                 }
    70                        
    71                 //echo bel_env($flux);
    72                 // echo $id_objet.'<br>';
    73                 // echo $nom_objet.'<br>';
    74                 // echo $nom_table.'<br>';
    75                 // echo $cle_table.'<br>';
    76                 // echo bel_env($quelles_rubriques);
    77                 // echo $id_rub;
     106        //      if (!in_array($id_rubrique, $tab_rubriques_choisies)) {
     107        //              $flux['data']['id_parent'] .= "Vous ne pouvez pas publier un $type à l'intérieur de cette rubrique";
     108        //      }
     109        // }
     110        return $flux;
     111}
    78112
    79                 // is_null($quelles_rubriques) ? $lim_rub = true : $lim_rub = !in_array($id,$quelles_rubriques);
    80                 // exit();
    81         }
    82         return $flux;
    83        
    84 }
     113
     114// function lim_editer_contenu_objet($flux){
     115//      $type                           = $flux['args']['type'];
     116//      $nom_table                      = table_objet_sql($type);
     117//      $tableau_tables_lim = explode(',', lire_config("lim_objets"));
     118
     119//      if (in_array($nom_table, $tableau_tables_lim)) {
     120//              $id_parent = $flux['args']['contexte']['id_parent'];
     121//              if (empty($id_parent)) {
     122//                      $tab_rubriques_choisies = lim_publierdansrubriques($type);
     123//                      if (count($tab_rubriques_choisies) == 1) {
     124//                              $id_parent = implode($tab_rubriques_choisies);
     125//                      }
     126//                      // le cas où plusieurs rubriques possibles : c'est le sélecteur qui gère.
     127//                      else return $flux;
     128//              }
     129//              $id_parent_hidden= "<input type='hidden' name='id_parent' value='$id_parent'>";
     130//              $flux['data'] = preg_replace('%(<input name="exec(.*?)/>)%is', '$1'."\n".$id_parent_hidden, $flux['data']);
     131//      }
     132//      return $flux;
     133// }
    85134?>
  • _plugins_/lim/trunk/paquet.xml

    r93320 r94578  
    22        prefix="lim"
    33        categorie="maintenance"
    4         version="1.1.1"
     4        version="1.1.3"
    55        etat="stable"
    66        compatibilite="[3.0.0;3.1.*]"
     
    2424        <pipeline nom="autoriser" inclure="lim_autorisations.php" />
    2525        <pipeline nom="afficher_config_objet" inclure="lim_pipelines.php" />
     26        <pipeline nom="formulaire_charger" inclure="lim_pipelines.php" />
     27        <pipeline nom="formulaire_verifier" inclure="lim_pipelines.php" />
    2628
    2729        <onglet nom="configurer_lim" titre="lim:onglet_lim" parent="configurer_lim"  icone="images/lim-24.png" />
Note: See TracChangeset for help on using the changeset viewer.