Changeset 95014 in spip-zone


Ignore:
Timestamp:
Feb 7, 2016, 9:07:54 PM (3 years ago)
Author:
peetdu@…
Message:

Gon doit pouvoir modifier un objet…même si il se trouve dans une rubrique dorénavant fermée à la création de ce type d’objet

Location:
_plugins_/lim/trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/lim/trunk/inc/lim_api.php

    r94705 r95014  
    6767        $nbre_rubriques_desactives      = count(lire_config("lim_rubriques/$type"));
    6868
    69         if ($nbre_rubriques_total - $nbre_rubriques_desactives == 1) {
     69        if ($nbre_rubriques_total - $nbre_rubriques_desactives <= 1) {
    7070                return '';
    7171        }
  • _plugins_/lim/trunk/lang/lim_fr.php

    r94578 r95014  
    1818        'cfg_select_objets' => 'sélectionner les objets',
    1919
     20        'info_creer_dans_rubrique_non_autorise' => 'Vous ne pouvez pas créer dans cette rubrique',
     21        'info_deplacer_dans_rubrique_non_autorise' => 'Vous ne pouvez pas déplacer dans cette rubrique',
     22
    2023        // L
    2124        'label_activer_logo_objets' => 'Cocher les contenus où désactiver le formulaire Logo',
  • _plugins_/lim/trunk/lim_autorisations.php

    r94844 r95014  
    5858/**********************************************************/
    5959/************* RESTRICTION DANS LES RUBRIQUES *************/
     60/**
     61 * gérer création et modification (en fait publierdans)
     62 * @pipeline autoriser
     63 */
    6064
    6165if (!function_exists('autoriser_rubrique_creerrubriquedans')) {
     
    6367                $quelles_rubriques = lire_config('lim_rubriques/rubrique');
    6468                is_null($quelles_rubriques) ? $lim_rub = true : $lim_rub = !in_array($id,$quelles_rubriques);
    65                
    6669                return
    6770                        $lim_rub
     
    107110}
    108111
     112if (!function_exists('autoriser_rubrique_publierdans')) {
     113        function autoriser_rubrique_publierdans($faire, $type, $id, $qui, $opt) {
     114                // Dans LIM l'appel à cette autorisation signifie que forcément $opt est renseigné
     115                if (is_array($opt) AND array_key_exists('lim_except_rub',$opt) AND array_key_exists('type',$opt)) {
     116                        $type = $opt['type'];
     117                        $quelles_rubriques = lire_config("lim_rubriques/$type");
     118                        if (!is_null($quelles_rubriques)) {
     119                                $rubrique_except = array(0 => $opt['type']);
     120                                $quelles_rubriques = array_diff($quelles_rubriques, $opt);
     121                                $lim_rub = !in_array($id,$quelles_rubriques);
     122                        }
     123                }
     124                // ici gestion hors CVT
     125                else $lim_rub = true;
     126
     127                return
     128                        $lim_rub
     129                        AND autoriser_rubrique_publierdans_dist($faire, $type, $id, $qui, $opt);
     130        }
     131}
     132
    109133?>
  • _plugins_/lim/trunk/lim_pipelines.php

    r94711 r95014  
    6363        if ($valid === false OR is_null(lire_config('lim_objets'))) return $flux;
    6464
     65
    6566        $type                           = substr($form, 7); // 'editer_objet' devient 'objet'
    6667        $nom_table                      = table_objet_sql($type);
     
    6869       
    6970        if (in_array($nom_table, $tableau_tables_lim)) {
    70                
    7171                $tab_rubriques_choisies = lim_publierdansrubriques($type);
    7272                if (count($tab_rubriques_choisies) == 1) {
     
    7575                                $id_parent = implode($tab_rubriques_choisies);
    7676                        }
    77                         $flux['data']['_hidden'] .= "<input type='hidden' name='id_parent' value='$id_parent'>";
     77                        $flux['data']['_hidden'] = "<input type='hidden' name='id_parent' value='$id_parent'>";
    7878                }
    7979        }
     
    9292        $form   = $flux['args']['form'];
    9393        $valid  = strpos($form, 'editer');
     94
    9495        // si ce n'est pas un formulaire d'édition
    9596        //ou si la restriction par rubrique n'a pas été activée, on sort
    9697        if ($valid === false OR is_null(lire_config('lim_objets'))) return $flux;
    97 
    98         include_spip('inc/autoriser');
     98       
    9999        $type   = substr($form, 7); // 'editer_objet' devient 'objet'
    100100        $nom_table                      = table_objet_sql($type);
     
    102102
    103103        if (in_array($nom_table, $tableau_tables_lim)) {
    104                 $faire = 'creer'.$type.'dans';
    105                 if (!autoriser($faire, 'rubrique', _request('id_parent'))) {
    106                         $flux['data']['id_parent'] .= _T('info_creerdansrubrique_non_autorise');
     104                include_spip('inc/autoriser');
     105
     106                // Si modification : le rédacteur doit pouvoir modifier le contenu d'un objet existant,
     107                // même ci celui-ci est maintenant dans une rubrique où il est interdit de publier cet objet.
     108                $id_objet = $flux['args']['args'][0];
     109                if (is_numeric($id_objet)) {    // c'est donc une modification,
     110
     111                        // récupérer l'id_rubrique actuel (en BdD) de l'objet
     112                        $faire = 'publierdans';
     113                        $where = 'id_'.$type.'='.$id_objet;
     114                        $id_rub_en_cours = sql_getfetsel('id_rubrique', $nom_table, $where);
     115                        $opt = array('lim_except_rub' => $id_rub_en_cours, 'type' => $type);
     116                        $msg_error = _T('lim:info_deplacer_dans_rubrique_non_autorise');
     117                }
     118                else { //c'est une création
     119                        $faire = 'creer'.$type.'dans';
     120                        $opt = null;
     121                        $msg_error = _T('lim:info_creer_dans_rubrique_non_autorise')._T("info_1_$type")._T('lim:info_dans_cette_rubrique');
     122                }
     123                if (!autoriser($faire, 'rubrique', _request('id_parent'),'', $opt)) {
     124                        $flux['data']['id_parent'] = $msg_error;
    107125                }
    108126        }
     
    110128}
    111129
    112 
    113 // function lim_editer_contenu_objet($flux){
    114 //      $type                           = $flux['args']['type'];
    115 //      $nom_table                      = table_objet_sql($type);
    116 //      $tableau_tables_lim = explode(',', lire_config("lim_objets"));
    117 
    118 //      if (in_array($nom_table, $tableau_tables_lim)) {
    119 //              $id_parent = $flux['args']['contexte']['id_parent'];
    120 //              if (empty($id_parent)) {
    121 //                      $tab_rubriques_choisies = lim_publierdansrubriques($type);
    122 //                      if (count($tab_rubriques_choisies) == 1) {
    123 //                              $id_parent = implode($tab_rubriques_choisies);
    124 //                      }
    125 //                      // le cas où plusieurs rubriques possibles : c'est le sélecteur qui gère.
    126 //                      else return $flux;
    127 //              }
    128 //              $id_parent_hidden= "<input type='hidden' name='id_parent' value='$id_parent'>";
    129 //              $flux['data'] = preg_replace('%(<input name="exec(.*?)/>)%is', '$1'."\n".$id_parent_hidden, $flux['data']);
    130 //      }
    131 //      return $flux;
    132 // }
    133130?>
  • _plugins_/lim/trunk/paquet.xml

    r94844 r95014  
    22        prefix="lim"
    33        categorie="maintenance"
    4         version="1.1.4"
     4        version="1.1.5"
    55        etat="stable"
    66        compatibilite="[3.0.0;3.1.*]"
Note: See TracChangeset for help on using the changeset viewer.