Changeset 93319 in spip-zone for _plugins_/lim


Ignore:
Timestamp:
Dec 1, 2015, 1:54:19 PM (5 years ago)
Author:
peetdu@…
Message:

Nouvelle version pour LIM : prise en compte partielle de tous les objets éditoriaux pour la restriction par rubrique

Location:
_plugins_/lim/trunk
Files:
16 added
6 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/lim/trunk/formulaires/configurer_lim_rubriques.html

    r88639 r93319  
    99        <div>
    1010                #ACTION_FORMULAIRE{#ENV{action}}
    11                 <ul>
    12                         <li class="fieldset">
    13                                 <fieldset>
    14                                         <legend>Articles</legend>
    15                                         [(#INCLURE{fond=formulaires/inc-choisir-rubriques,name=article}{article=#ENV{article}}{juste_secteur=non})]
    16                                 </fieldset>
    17                         </li>
    18                 </ul>
    19                 [(#CONFIG{activer_breves}|!={non}|oui)
    20                 <ul>
    21                         <li class="fieldset">
    22                                 <fieldset>
    23                                         <legend>Brèves</legend>
    24                                         [(#INCLURE{fond=formulaires/inc-choisir-rubriques,name=breve}{breve=#ENV{breve}}{juste_secteur=oui})]
    25                                 </fieldset>
    26                         </li>
    27                 </ul>
    28                 ]
    29                 [(#CONFIG{activer_sites}|!={non}|oui)
    30                 <ul>
    31                         <li class="fieldset">
    32                                 <fieldset>
    33                                         <legend>Sites</legend>
    34                                         [(#INCLURE{fond=formulaires/inc-choisir-rubriques,name=site}{site=#ENV{site}}{juste_secteur=non})]
    35                                 </fieldset>
    36                         </li>
    37                 </ul>
    38                 ]
     11
     12                [(#INCLURE{fond=formulaires/inc-choisir-rubriques,env})]
     13               
    3914                <input type="hidden" name="_meta_casier" value="lim_rubriques" />
    4015                <p class="boutons"><span class="image_loading">&nbsp;</span><input type="submit" class="submit" value="<:bouton_enregistrer:>" /></p>
  • _plugins_/lim/trunk/formulaires/inc-choisir-rubriques.html

    r90308 r93319  
    1 <B_rubriques>
    2 <p class='lim_info'><:lim:label_desactiver_article_par_rubrique:>'[(#VAL{#NAME}|objet_info{texte_creer}|_T)]'.<br>
    3 Note : les rubriques marquées d'un <img src='#CHEMIN_IMAGE{del-24.png}' /> contiennent déjà des [(#VAL{#NAME}|objet_info{icone_objet}|_T|textebrut)s].</p>
     1[(#REM) Récupérer les objets sélectionnés. ex. spip_articles -> article ]
    42
    5 <ul class='creneaux'>
    6 <BOUCLE_rubriques(RUBRIQUES){racine}{par num titre,titre}{tout}>
    7         <li class='li_long secteur'>
    8         <div class='choix secteur[(#ID_RUBRIQUE|in_any{#ENV{#NAME}})checked]'>
    9                         <input type='checkbox' name='#NAME\[\]' value='#ID_RUBRIQUE' id='[(#NAME|concat{_rub#ID_RUBRIQUE})]' [(#ID_RUBRIQUE|in_any{#ENV{#NAME}})checked='checked'][(#ID_RUBRIQUE|lim_verifier_presence_objets{#NAME}|oui)disabled='disabled']/>
    10                 <label for='[(#NAME|concat{_rub#ID_RUBRIQUE})]'>#TITRE[(#ID_RUBRIQUE|lim_verifier_presence_objets{#NAME}|oui)<img class='forbidden' src='#CHEMIN_IMAGE{del-20.png}' />]</label>
     3#SET{objets,#ARRAY}
     4<BOUCLE_objets_selectionnes(DATA){liste #CONFIG{lim_objets}}>#SET{objets,#GET{objets}|push{#VALEUR}} #SET{nbre_col,#TOTAL_BOUCLE|moins{1}}</BOUCLE_objets_selectionnes>
     5#SET{objets,#GET{objets}|array_flip}
     6
     7[(#REM) multilinguisme : pour les objets sélectionnés, récupérer le nom traduit et les afficher dans l'ordre alphabétique ]
     8#SET{traductions,#ARRAY}<BOUCLE_objets(DATA){source tableau,#REM|lister_tables_objets_sql}>[(#EDITABLE|oui)
     9[(#SET{traductions,#GET{traductions}|array_merge{#ARRAY{#CLE,#TEXTE_OBJETS|_T}}})]
     10]</BOUCLE_objets>
     11[(#SET{traductions,#GET{traductions}|array_intersect_key{#GET{objets}}})]
     12
     13[(#REM) Récupérer le type des objets sélectionnés. ex. spip_articles -> article ]
     14#SET{type, #ARRAY}
     15[(#SET{type, #GET{traductions}|lim_type})]
     16
     17<style>
     18input[type=checkbox].lim_hidden {display:none; }
     19        span.entete { font-weight: bold; }
     20        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;}
     26
     27        #SET{left,#ENV{ltr}|choixsiegal{left,left,right}}
     28        #SET{right,#ENV{ltr}|choixsiegal{left,right,left}}
     29
     30        .formulaire_spip.formulaire_configurer_lim_logos,
     31        .formulaire_spip.formulaire_configurer_lim_rubriques .choix label { vertical-align:middle; }
     32        .formulaire_spip.formulaire_configurer_lim_rubriques div.secteur        { margin:0; padding:0; padding:5px 10px; border:1px solid #ddd; border-radius:5px; background-color:#fff; }
     33        .formulaire_spip.formulaire_configurer_lim_rubriques div div            { margin-bottom:5px; border-#ENV{left}:1px solid #ddd; }
     34        .formulaire_spip.formulaire_configurer_lim_rubriques div div div        { margin-bottom:0; border-#ENV{left}:1px solid #ddd; }
     35        .formulaire_spip.formulaire_configurer_lim_rubriques div div            { border:0; border-radius:0;}
     36        .formulaire_spip.formulaire_configurer_lim_rubriques div.secteur        { margin-bottom:10px; }
     37        .formulaire_spip.formulaire_configurer_lim_rubriques div.choix                          { padding: 4px 10px; border:0; border-radius:0;}
     38        .formulaire_spip.formulaire_configurer_lim_rubriques div.choix input[type='checkbox'] { margin:1px 0.3ex; vertical-align:middle; border:0;}
     39        img.info_logo_site, img.forbidden       { vertical-align:middle; }
     40</style>
     41
     42<div>
     43        <div>
     44                <span class="tab rubrique entete"></span>
     45                <BOUCLE_entete(DATA){source tableau,#GET{traductions}}{par valeur}>
     46                        <span class="check entete center">#VALEUR</span>
     47                </BOUCLE_entete>
    1148        </div>
    12         <B_enfants>
    13         <ul>
    14         <BOUCLE_enfants(RUBRIQUES){id_parent}{par num titre,titre}{tout}{si #JUSTE_SECTEUR|!={oui}}>
    15         <li class='li_long'>
    16                 <div class='choix[(#ID_RUBRIQUE|in_any{#ENV{#NAME}})checked]'>
    17                         <input type='checkbox' name='#NAME\[\]' value='#ID_RUBRIQUE' id='[(#NAME|concat{_rub#ID_RUBRIQUE})]' [(#ID_RUBRIQUE|in_any{#ENV{#NAME}})checked='checked'][(#ID_RUBRIQUE|lim_verifier_presence_objets{#NAME}|oui)disabled='disabled']/>
    18                         <label for='[(#NAME|concat{_rub#ID_RUBRIQUE})]'>#TITRE[(#ID_RUBRIQUE|lim_verifier_presence_objets{#NAME}|oui)<img class='forbidden' src='#CHEMIN_IMAGE{del-20.png}' />]</label>
    19                 </div><BOUCLE_rec(BOUCLE_enfants)/>
    20         </li>
    21         </BOUCLE_enfants>
    22         </ul>
    23         </B_enfants>
    24 </li>
    25 </BOUCLE_rubriques>
    26 </ul>
    27 </B_rubriques>
     49        <div>
     50                <BOUCLE_titre_rubrique(RUBRIQUES){racine}{par num titre,titre}{tout}>
     51                        <div class='secteur'>
     52                                <span class="tab rubrique">#TITRE</span>
     53                                <BOUCLE_par_traduction1(DATA){source tableau,#GET{type}}{par valeur}>
     54                                        [(#INCLURE{fond=formulaires/inc-input-rub,env,name=#VALEUR}{#VALEUR=#ENV{#VALEUR}}{id_rubrique=#ID_RUBRIQUE})]
     55                                </BOUCLE_par_traduction1>
     56                        <B_enfants_rubriques>
     57                        <div class='sousrub'>
     58                        <BOUCLE_enfants_rubriques(RUBRIQUES){id_parent}{par num titre,titre}{tout}{si #JUSTE_SECTEUR|!={oui}}>
     59                        <div class=''>
     60                                <span class="tab rubrique">#TITRE</span><BOUCLE_par_traduction2(DATA){source tableau,#GET{type}}{par valeur}>
     61                                [(#INCLURE{fond=formulaires/inc-input-rub,env,name=#VALEUR}{#VALEUR=#ENV{#VALEUR}}{id_rubrique=#ID_RUBRIQUE})]
     62                                </BOUCLE_par_traduction2><BOUCLE_rec(BOUCLE_enfants_rubriques)/>
     63                        </div>
     64                        </BOUCLE_enfants_rubriques>
     65                        </div>
     66                        </B_enfants_rubriques>
     67                </div>
     68                </BOUCLE_titre_rubrique>
     69
     70        </div>
     71</div>
     72
    2873
    2974<script type="text/javascript">/*<![CDATA[*/
    30 jQuery("input:checkbox").change(function(){
    31         if (jQuery(this).is(":checked")) {
    32                 jQuery.each( jQuery(this).parent().next().find('input:checkbox:not(:disabled)'), function(index,item) {
    33                         jQuery(item).prop('checked',true);
    34                 });
    35         } else {
    36                 jQuery.each( jQuery(this).parent().next().find('input:checkbox'), function(index,item) {
    37                         jQuery(item).prop('checked',false);
    38                 });
     75// jQuery("span.icon-on").on('click', function(){
     76//      jQuery(this).removeClass('icon-on').addClass('icon-off');
     77// });
     78// jQuery("span.icon-off").on('click',function(){
     79//      jQuery(this).removeClass('icon-off').addClass('icon-on');
     80// });
     81
     82jQuery("span.lim_icon").on('click', function(){
     83        if (jQuery(this).hasClass('icon-on')) {
     84                jQuery(this).removeClass('icon-on').addClass('icon-off');
    3985        }
     86        else if (jQuery(this).hasClass('icon-off'))
     87                jQuery(this).removeClass('icon-off').addClass('icon-on');
     88
    4089});
    4190/*]]>*/</script>
     91
     92
     93
  • _plugins_/lim/trunk/lim_autorisations.php

    r88773 r93319  
    1717 * @pipeline autoriser */
    1818function lim_autoriser(){}
    19 
    2019
    2120/**************************************************************/
     
    6766               
    6867                return
    69                         $id
    70                         AND $lim_rub
    71                         AND autoriser('voir','rubrique',$id)
    72                         AND autoriser('creer', 'article');
     68                        $lim_rub
     69                        AND autoriser_rubrique_creerarticledans_dist($faire, $type, $id, $qui, $opt);
    7370        }
    7471}
     
    8178
    8279                return
    83                         $id
    84                         AND $lim_rub
    85                         AND ($r['id_parent']==0)
    86                         AND ($GLOBALS['meta']["activer_breves"]!="non")
    87                         AND autoriser('voir','rubrique',$id);
     80                        $lim_rub
     81                        AND autoriser_rubrique_creerbrevedans_dist($faire, $type, $id, $qui, $opt);
    8882        }
    8983}
     
    9892               
    9993                return
    100                         $id
    101                         AND $lim_rub
    102                         AND autoriser('voir','rubrique',$id)
    103                         AND $GLOBALS['meta']['activer_sites'] != 'non'
    104                         AND (
    105                                 $qui['statut']=='0minirezo'
    106                                 OR ($GLOBALS['meta']["proposer_sites"] >=
    107                                     ($qui['statut']=='1comite' ? 1 : 2)));
     94                        $lim_rub
     95                        AND autoriser_rubrique_creersitedans_dist($faire, $type, $id, $qui, $opt);
    10896        }
    10997}
  • _plugins_/lim/trunk/lim_pipelines.php

    r91929 r93319  
    1313
    1414
     15/**
     16 * supprime ou non le bloc en fonction de la demande
     17 *
     18 * @param array $flux
     19 * @return array $flux
     20 *     le flux data remanié
     21**/
    1522function lim_afficher_config_objet($flux){
    1623        $type = $flux['args']['type'];
     
    3138        return $flux;
    3239}
     40
     41/**
     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
     44 *
     45 * @param array $flux
     46 * @return array $flux
     47 *     le flux data complété ou non d'un message d'erreur
     48**/
     49function lim_formulaire_verifier($flux){
     50        $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'));
     54
     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));
     60
     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);
     65
     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;
     78
     79                // is_null($quelles_rubriques) ? $lim_rub = true : $lim_rub = !in_array($id,$quelles_rubriques);
     80                // exit();
     81        }
     82        return $flux;
     83       
     84}
    3385?>
  • _plugins_/lim/trunk/paquet.xml

    r91932 r93319  
    22        prefix="lim"
    33        categorie="maintenance"
    4         version="1.0.7"
     4        version="1.1.0"
    55        etat="stable"
    66        compatibilite="[3.0.0;3.1.*]"
  • _plugins_/lim/trunk/prive/squelettes/contenu/configurer_lim_rubriques.html

    r88639 r93319  
    11[(#AUTORISER{configurer,_lim}|sinon_interdire_acces)]
    22
    3 <h1 class="grostitre"><:lim:titre_page_configurer_lim:></h1>
    4 
    5 [(#REM) <!-- Barre d'onglets de premier niveau --> ]
    6 [(#VAL{configurer_lim}|barre_onglets{configurer_lim_rubriques})]
    7 
     3<div id="lim_rub_action">
     4        <p><a class='popin' href="#URL_ECRIRE{popup_selection_objets}"><img src="#CHEMIN{prive/themes/spip/images/configuration-16.png}" width="24" height="24"><:lim:cfg_select_objets:></a></p>
     5</div>
    86<div class="ajax">
    97        #FORMULAIRE_CONFIGURER_LIM_RUBRIQUES
Note: See TracChangeset for help on using the changeset viewer.