Changeset 100491 in spip-zone


Ignore:
Timestamp:
Nov 13, 2016, 6:31:40 PM (4 years ago)
Author:
peetdu@…
Message:

déplacer Truck vers branches/V1

Location:
_plugins_/lim/branches/V1
Files:
16 added
14 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/lim/branches/V1/formulaires/configurer_lim_logos.html

    r93186 r100491  
    1414        <div>
    1515                #ACTION_FORMULAIRE{#ENV{action}}
    16                 <p class='lim_info'>Note : les contenus marqués d'un <img src='#CHEMIN_IMAGE{del-24.png}' /> contiennent déjà des logos.</p>
     16                <p class='lim_info'>Note : les contenus marqués d'un <img src='#CHEMIN_IMAGE{warning-16.png}' /> contiennent déjà des logos.</p>
    1717                <ul>
    1818                        #SET{name,lim_logos}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
  • _plugins_/lim/branches/V1/formulaires/configurer_lim_rubriques.html

    r93186 r100491  
    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/branches/V1/formulaires/inc-choisir-logo.html

    r93186 r100491  
    44#SET{id,#ENV{name}|replace{\W,'_'}|concat{'_',#CLE}}
    55<div class="choix choix_#CLE">
    6         <input type="checkbox"  id="#GET{id}" name="#ENV{name}\[\]" value="#CLE"[(#ENV{selected}|=={all}|ou{#CLE|in_any{#ENV{selected}}})checked="checked"][(#CONFIG{activer_logos}|=={non}|oui)disabled='disabled'][(#CLE|lim_verifier_presence_logo|oui)disabled='disabled'] />
    7         <label for="#GET{id}">#VALEUR[(#CLE|lim_verifier_presence_logo|oui)<img class='forbidden' src='#CHEMIN_IMAGE{del-20.png}' />]</label>
     6        <input type="checkbox"  id="#GET{id}" name="#ENV{name}\[\]" value="#CLE"[(#ENV{selected}|=={all}|ou{#CLE|in_any{#ENV{selected}}})checked="checked"]
     7        [(#CONFIG{activer_logos}|=={non}|oui)disabled='disabled'] />
     8        <label for="#GET{id}">#VALEUR[(#CLE|lim_verifier_presence_logo|oui)<img class='forbidden' src='#CHEMIN_IMAGE{warning-16.png}' />]</label>
    89</div>
    910</BOUCLE_par_traduction>
  • _plugins_/lim/branches/V1/formulaires/inc-choisir-rubriques.html

    r93186 r100491  
    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[(#GET{nbre_col}|in_array{#ARRAY{0,1,1,2,2,3}}|oui)
     8        #SET{width_rub,450}
     9        #SET{width_obj,448}
     10]
     11
     12[(#GET{nbre_col}|>{3}|oui)
     13        #SET{width_rub,320}
     14        #SET{width_obj,580}
     15]
     16
     17[(#REM) multilinguisme : pour les objets sélectionnés, récupérer le nom traduit et les afficher dans l'ordre alphabétique ]
     18#SET{traductions,#ARRAY}<BOUCLE_objets(DATA){source tableau,#REM|lister_tables_objets_sql}>[(#EDITABLE|oui)
     19[(#SET{traductions,#GET{traductions}|array_merge{#ARRAY{#CLE,#TEXTE_OBJETS|_T}}})]
     20]</BOUCLE_objets>
     21[(#SET{traductions,#GET{traductions}|array_intersect_key{#GET{objets}}})]
     22
     23[(#REM) Récupérer le tableau des types d'objets sélectionnés. ex. spip_articles -> article ]
     24#SET{type, #ARRAY}
     25[(#SET{type, #GET{traductions}|lim_type})]
     26
     27<style>
     28        .tab.rub {display:inline-block; width:#GET{width_rub}px; font-weight:bold; }
     29        .sousrub .tab.rub { width:[(#GET{width_rub}|moins{15})px]; font-weight:normal; }
     30        .sousrub .sousrub .tab.rub { width:[(#GET{width_rub}|moins{30})px]; }
     31        .sousrub .sousrub .sousrub .tab.rub { width:[(#GET{width_rub}|moins{45})px]; }
     32        .sousrub .sousrub .sousrub .sousrub .tab.rub { width:[(#GET{width_rub}|moins{60})px]; }
     33        .check { display:inline-block; width:[(#GET{width_obj}|div{#GET{nbre_col}})px]; text-align: center;}
     34        .check[rub_secteur=oui] {position:relative;}
     35        .check[rub_secteur=oui] label {position:absolute; top:-14px; left:30%; }
     36</style>
     37
     38<div class="tab rub"></div>
     39<BOUCLE_entete(DATA){source tableau,#GET{traductions}}{par cle}>
     40        #SET{type_obj, #CLE|objet_type}
     41        <div class="check entete center"><img src='#CHEMIN_IMAGE{#GET{type_obj}-24.png}'><br>#VALEUR</div>
     42</BOUCLE_entete>
     43
     44<BOUCLE_titre_rubrique(RUBRIQUES){racine}{par num titre,titre}{tout}>
     45        <div class='pin'><img src='#CHEMIN_IMAGE{rubrique-16.png}'></div>
     46        <div class='secteur'>
     47                <div class="tab rub">#TITRE</div>
     48                <BOUCLE_par_traduction1(DATA){source tableau,#GET{type}}{par cle}>
     49                        [(#INCLURE{fond=formulaires/inc-input-rub,env,name=#VALEUR}{#VALEUR=#ENV{#VALEUR}}{id_rubrique=#ID_RUBRIQUE}{secteur=oui})]
     50                </BOUCLE_par_traduction1>
     51                <B_enfants_rubriques>
     52                        <div class='sousrub'>
     53                        <BOUCLE_enfants_rubriques(RUBRIQUES){id_parent}{par num titre,titre}{tout}{si #JUSTE_SECTEUR|!={oui}}>
     54                                <div class=''>
     55                                        <div class="tab rub">#TITRE</div><BOUCLE_par_traduction2(DATA){source tableau,#GET{type}}{par cle}>
     56                                        [(#INCLURE{fond=formulaires/inc-input-rub,env,name=#VALEUR}{#VALEUR=#ENV{#VALEUR}}{id_rubrique=#ID_RUBRIQUE})]
     57                                        </BOUCLE_par_traduction2><BOUCLE_rec(BOUCLE_enfants_rubriques)/>
     58                                </div>
     59                        </BOUCLE_enfants_rubriques>
     60                        </div>
     61                </B_enfants_rubriques>
    1162        </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>
     63</BOUCLE_titre_rubrique>
    2864
    29 <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);
     65<script type="text/javascript">
     66(function($){
     67        $(document).ready(function(){
     68
     69                jQuery("input:checkbox").change(function(){
     70                        var type = $(this).attr('name').slice(0,-2);
     71                        var $check = "div.check." + type;
     72                        console.log($check);
     73                        if (jQuery(this).is(":checked")) {
     74                                jQuery.each( jQuery(this).parent().parent().find($check), function(index,item) {
     75                                        console.log(item);
     76                                        jQuery(item).find('input').prop('checked',true);
     77                                        jQuery(item).find('.lim_icon').removeClass('icon-on').addClass('icon-off');
     78                                });
     79                        } else {
     80                                jQuery.each( jQuery(this).parent().parent().find($check), function(index,item) {
     81                                        console.log(item);
     82                                        jQuery(item).find('input').prop('checked',false);
     83                                        jQuery(item).find('.lim_icon').removeClass('icon-off').addClass('icon-on');
     84                                });
     85                        }
    3486                });
    35         } else {
    36                 jQuery.each( jQuery(this).parent().next().find('input:checkbox'), function(index,item) {
    37                         jQuery(item).prop('checked',false);
    38                 });
    39         }
    40 });
    41 /*]]>*/</script>
     87        });
     88})(jQuery);
     89</script>
  • _plugins_/lim/branches/V1/inc/lim_api.php

    r93186 r100491  
    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        $rubriques_restreintes = lire_config("lim_rubriques/$type");
     67        if (!is_null($rubriques_restreintes)) {
     68                $nbre_rubriques_total           = sql_countsel('spip_rubriques');
     69                $nbre_rubriques_desactives      = count($rubriques_restreintes);
     70
     71                if ($nbre_rubriques_total - $nbre_rubriques_desactives <= 1) {
     72                        return '';
     73                }
     74        }
     75        // note : du coup, plus de input name='id_parent' ! Un traitement via le pipeline "editer_contenu_objet" s'occupe de palier à ce problème.
     76        /* fin surcharge */
     77               
     78
     79        // Mode sans Ajax :
     80        // - soit parce que le cookie ajax n'est pas la
     81        // - soit parce qu'il y a peu de rubriques
     82        if (_SPIP_AJAX < 1
     83                or $type == 'breve'
     84                or sql_countsel('spip_rubriques') < _SPIP_SELECT_RUBRIQUES
     85        ) {
     86                return selecteur_rubrique_html($id_rubrique, $type, $restreint, $idem);
     87        } else {
     88                return selecteur_rubrique_ajax($id_rubrique, $type, $restreint, $idem, $do);
     89        }
     90
     91}
     92
     93/**
    5594 * Vérifier si il existe déjà des objets dans la rubrique
    5695 * on renvoi un tableau avec le type et la table_objet
     
    65104}
    66105
     106
     107/**
     108 * chercher les tables SPIP qui ne gèrent pas de rubrique, et donc non pertinentes dans la restriction par rubrique
     109 * gestion des tables historiques également : annuaire de site et brèves activés ?
     110 *
     111 * @return array
     112 *      tableau des nom de tables SPIP à exclure (ex : spip_auteurs, spip_mots, etc.)
     113 */
     114function lim_objets_sans_rubrique() {
     115        $exclus = array();
     116        $tables = lister_tables_objets_sql();
     117        foreach ($tables as $key => $value) {
     118                if ($value['editable'] == 'oui' AND !isset($value['field']['id_rubrique']))
     119                        array_push($exclus,$key);       
     120        }
     121       
     122        // Exception pour les objets breves et sites : sont-ils activés
     123        if (lire_config('activer_breves') == 'non')
     124                array_push($exclus,'spip_breves');
     125        if (lire_config('activer_sites') == 'non')
     126                array_push($exclus,'spip_syndic');
     127
     128        return $exclus;
     129}
     130
     131/**
     132 * récupérer le tableau des rubriques dans lesquelles il est possible d'editer un objet
     133 *
     134 * @param string $type
     135 * @return array
     136 */
     137
     138function lim_publierdansrubriques($type) {
     139        $rubriques_choisies = array();
     140        $tab_rubrique_objet = lire_config("lim_rubriques/$type");
     141
     142        // si aucune restriction on sort.
     143        if (is_null($tab_rubrique_objet)) return $rubriques_choisies;
     144
     145        $res = sql_allfetsel('id_rubrique', 'spip_rubriques');
     146        foreach ($res as $key => $value) {
     147                $tab_rubriques[] = $value['id_rubrique'];
     148        }
     149        $rubriques_choisies = array_diff($tab_rubriques,$tab_rubrique_objet);
     150        return $rubriques_choisies;
     151}
     152
     153/**
     154 * Récupérer le type des objets sélectionnés. ex. spip_articles -> article
     155 *
     156 * @param array
     157 * @return array
     158 */
     159function lim_type($tableau) {
     160        if (!is_array($tableau))
     161                return '';
     162
     163        array_walk($tableau, 'lim_get_type');
     164        return $tableau;
     165}
     166
     167/**
     168 * Changer les valeurs du tableau spip_articles -> article
     169 */
     170function lim_get_type(&$value, $key) {
     171        $value = objet_type(table_objet($key));
     172}
     173
     174/**
     175 * renvoyer le nombre de rubrique auxquelles est
     176 */
     177function lim_nombre_rubrique($objet) {
     178        $value = objet_type(table_objet($key));
     179}
     180
    67181?>
  • _plugins_/lim/branches/V1/lang/lim_fr.php

    r93186 r100491  
    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',
     19
     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',
    1822
    1923        // L
  • _plugins_/lim/branches/V1/lim_administrations.php

    r93186 r100491  
    2525        $maj = array();
    2626
     27        $maj['1.1.0'] = array(
     28        array('lim_creation_meta_objets', array())
     29    );
     30
    2731        include_spip('base/upgrade');
    2832        maj_plugin($nom_meta_base_version, $version_cible, $maj);
     33}
     34
     35/**
     36 * maj v1 -> v1.1
     37 * si la meta lim_rubriques a été renseignée dans la v1,
     38 * il faut créer et renseigner la nouvelle méta 'lim_objets' en conséquence
     39 *
     40**/
     41function lim_creation_meta_objets(){
     42        include_spip('inc/config');
     43       
     44        $rubrique = lire_config('lim_rubriques');
     45        if (!is_null($rubrique)) {
     46                $valeur = '';
     47                foreach ($rubrique as $key => $value) {
     48                        $valeur .= table_objet_sql($key).',';
     49                }
     50                ecrire_config('lim_objets', $valeur);
     51        }
    2952}
    3053
     
    4265        effacer_meta('lim_logos');
    4366        effacer_meta('lim_rubriques');
     67        effacer_meta('lim_objets');
    4468        effacer_meta($nom_meta_base_version);
    4569}
  • _plugins_/lim/branches/V1/lim_autorisations.php

    r93186 r100491  
    1717 * @pipeline autoriser */
    1818function lim_autoriser(){}
    19 
    2019
    2120/**************************************************************/
     
    5958/**********************************************************/
    6059/************* RESTRICTION DANS LES RUBRIQUES *************/
     60/**
     61 * gérer création et modification (en fait publierdans)
     62 * @pipeline autoriser
     63 */
    6164
     65if (!function_exists('autoriser_rubrique_creerrubriquedans')) {
     66        function autoriser_rubrique_creerrubriquedans($faire, $type, $id, $qui, $opt) {
     67                $quelles_rubriques = lire_config('lim_rubriques/rubrique');
     68                is_null($quelles_rubriques) ? $lim_rub = true : $lim_rub = !in_array($id,$quelles_rubriques);
     69                return
     70                        $lim_rub
     71                        AND autoriser_rubrique_creerrubriquedans_dist($faire, $type, $id, $qui, $opt);
     72        }
     73}
    6274
    6375if (!function_exists('autoriser_rubrique_creerarticledans')) {
     
    6779               
    6880                return
    69                         $id
    70                         AND $lim_rub
    71                         AND autoriser('voir','rubrique',$id)
    72                         AND autoriser('creer', 'article');
     81                        $lim_rub
     82                        AND autoriser_rubrique_creerarticledans_dist($faire, $type, $id, $qui, $opt);
    7383        }
    7484}
     
    8191
    8292                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);
     93                        $lim_rub
     94                        AND autoriser_rubrique_creerbrevedans_dist($faire, $type, $id, $qui, $opt);
    8895        }
    8996}
     
    98105               
    99106                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)));
     107                        $lim_rub
     108                        AND autoriser_rubrique_creersitedans_dist($faire, $type, $id, $qui, $opt);
     109        }
     110}
     111
     112if (!function_exists('autoriser_rubrique_publierdans')) {
     113        function autoriser_rubrique_publierdans($faire, $type, $id, $qui, $opt) {
     114
     115                // Dans LIM l'appel à cette autorisation signifie que forcément $opt est renseigné
     116                if (is_array($opt) AND array_key_exists('lim_except_rub',$opt) AND array_key_exists('type',$opt)) {
     117                        $type = $opt['type'];
     118                        $quelles_rubriques = lire_config("lim_rubriques/$type");
     119                        if (!is_null($quelles_rubriques)) {
     120                                $rubrique_except = array(0 => $opt['lim_except_rub']);
     121                                $quelles_rubriques = array_diff($quelles_rubriques, $opt);
     122                                $lim_rub = !in_array($id,$quelles_rubriques);
     123                        }
     124                        // cas possible : un objet peut avoir été sélectionné dans ?exec=configurer_lim_rubriques, mais aucune restriction activée
     125                        else $lim_rub = true;
     126                }
     127                // ici gestion hors CVT
     128                else $lim_rub = true;
     129
     130                return
     131                        $lim_rub
     132                        AND autoriser_rubrique_publierdans_dist($faire, $type, $id, $qui, $opt);
    108133        }
    109134}
  • _plugins_/lim/branches/V1/lim_options.php

    r93186 r100491  
    11<?php
    22/**
    3  * Options du plugin Limau chargement
     3 * Options du plugin Lim au chargement
    44 *
    55 * @plugin     Lim
     
    1212if (!defined('_ECRIRE_INC_VERSION')) return;
    1313
    14 // Par défaut, ce plugin rend le header silencieux : voir http://www.spip.net/fr_article4648.html#spip_header_silencieux
    15 if (!isset($GLOBALS['spip_header_silencieux'])) $GLOBALS['spip_header_silencieux'] = true;
     14// Surcharge deu fichier /prive/formulaires/editer_article.php
     15// la fonction editer_article_verifier est incomplète
     16// voir https://core.spip.net/issues/3686
     17
     18include_spip('inc/editer');
     19function formulaires_editer_article_verifier(
     20        $id_article = 'new',
     21        $id_rubrique = 0,
     22        $retour = '',
     23        $lier_trad = 0,
     24        $config_fonc = 'articles_edit_config',
     25        $row = array(),
     26        $hidden = ''
     27) {
     28        // auto-renseigner le titre si il n'existe pas
     29        titre_automatique('titre', array('descriptif', 'chapo', 'texte'));
     30        // on ne demande pas le titre obligatoire : il sera rempli a la volee dans editer_article si vide
     31        $erreurs = formulaires_editer_objet_verifier('article', $id_article, array('id_parent'));
     32        if (!function_exists('autoriser')) {
     33                include_spip('inc/autoriser');
     34        } // si on utilise le formulaire dans le public
     35        if (!isset($erreurs['id_parent'])
     36                and !autoriser('creerarticledans', 'rubrique', _request('id_parent')) and !is_numeric($id_article)
     37        ) {
     38                $erreurs['id_parent'] = _T('info_creerdansrubrique_non_autorise');
     39        }
     40
     41        return $erreurs;
     42}
    1643
    1744?>
  • _plugins_/lim/branches/V1/lim_pipelines.php

    r93186 r100491  
    1212if (!defined('_ECRIRE_INC_VERSION')) return;
    1313
     14include_spip('inc/lim_api');
     15include_spip('inc/config');
    1416
     17/**
     18 * gestion forums public et pétitions : supprime ou non le bloc en fonction de la demande
     19 *
     20 * @param array $flux
     21 * @return array $flux
     22 *     le flux data remanié
     23**/
    1524function lim_afficher_config_objet($flux){
    1625        $type = $flux['args']['type'];
     
    3140        return $flux;
    3241}
     42
     43/**
     44 * gestion des contenus par rubrique : rediriger la creation d'un objet vers la bonne rubrique si celle-ci est pris en compte par LIM
     45 * ce traitement est rendu nécessaire par
     46 * -> 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
     47 * -> le cas 2 (voir ci-dessous)
     48 *
     49 * 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
     50 * 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.
     51 * Il faut le calculer pour enregistrer l'instance dans une rubrique gérée par LIM
     52 *  a/ via LIM l'objet ne peut être associé qu'à une seule rubrique. On renvoi l'id de cette rubrique
     53 *  b/ via LIM l'objet peut être associé à plusieurs rubriques : pas de traitement. Le sélecteur de rubrique est affiché.
     54 *
     55 * @param array $flux
     56 * @return array $flux
     57 *     le flux data complété par un input hidden 'id_parent' avec la bonne valeur
     58**/
     59function lim_formulaire_charger($flux){
     60        $form   = $flux['args']['form'];
     61        $valid  = strpos($form, 'editer');
     62        // si ce n'est pas un formulaire d'édition
     63        //ou si la restriction par rubrique n'a pas été activée, on sort
     64        if ($valid === false OR is_null(lire_config('lim_objets'))) return $flux;
     65
     66
     67        $type                           = substr($form, 7); // 'editer_objet' devient 'objet'
     68        $nom_table                      = table_objet_sql($type);
     69        $tableau_tables_lim     = explode(',', lire_config('lim_objets'));
     70       
     71        if (in_array($nom_table, $tableau_tables_lim)) {
     72                $tab_rubriques_choisies = lim_publierdansrubriques($type);
     73                if (count($tab_rubriques_choisies) == 1) {
     74                        $id_parent = $flux['data']['id_parent'];
     75                        if (empty($id_parent)) {
     76                                $id_parent = implode($tab_rubriques_choisies);
     77                        }
     78                        $flux['data']['_hidden'] = "<input type='hidden' name='id_parent' value='$id_parent'>";
     79                }
     80        }
     81        return $flux;
     82}
     83
     84/**
     85 * gestion des contenus par rubrique : vérifier si on à le droit de publier l'objet dans cette rubrique
     86 * en fonction des rubriques décochées dans la page exec=configurer_lim_rubriques
     87 *
     88 * @param array $flux
     89 * @return array $flux
     90 *     le flux data complété ou non d'un message d'erreur
     91**/
     92function lim_formulaire_verifier($flux){
     93        $form   = $flux['args']['form'];
     94        $valid  = strpos($form, 'editer');
     95
     96        // si ce n'est pas un formulaire d'édition
     97        //ou si la restriction par rubrique n'a pas été activée, on sort
     98        if ($valid === false OR is_null(lire_config('lim_objets'))) return $flux;
     99       
     100        $type   = substr($form, 7); // 'editer_objet' devient 'objet'
     101        $nom_table                      = table_objet_sql($type);
     102        $tableau_tables_lim     = explode(',', lire_config('lim_objets'));
     103
     104        if (in_array($nom_table, $tableau_tables_lim)) {
     105                include_spip('inc/autoriser');
     106
     107                // Si modification : le rédacteur doit pouvoir modifier le contenu d'un objet existant,
     108                // même ci celui-ci est maintenant dans une rubrique où il est interdit de publier cet objet.
     109                $id_objet = $flux['args']['args'][0];
     110                if (is_numeric($id_objet)) {    // c'est donc une modification,
     111
     112                        // récupérer l'id_rubrique actuel (en BdD) de l'objet
     113                        $faire = 'publierdans';
     114                        $where = id_table_objet($type).'='.$id_objet;
     115                        if ($type == 'rubrique')
     116                                $id_rub_en_cours = sql_getfetsel('id_parent', $nom_table, $where);
     117                        else
     118                                $id_rub_en_cours = sql_getfetsel('id_rubrique', $nom_table, $where);
     119                        $opt = array('lim_except_rub' => $id_rub_en_cours, 'type' => $type);
     120                        $msg_error = _T('lim:info_deplacer_dans_rubrique_non_autorise');
     121                }
     122                else { //c'est une création
     123                        // en fait, cela ne sert à rien...snif...à cause de /echafaudage qui intercepte les créations avant le CVT (?!).
     124                        $faire = 'creer'.$type.'dans';
     125                        $opt = null;
     126                        $msg_error = _T('lim:info_creer_dans_rubrique_non_autorise');
     127                }
     128                if (!autoriser($faire, 'rubrique', _request('id_parent'),'', $opt)) {
     129                        $flux['data']['id_parent'] = $msg_error;
     130                }
     131        }
     132        return $flux;
     133}
     134
    33135?>
  • _plugins_/lim/branches/V1/paquet.xml

    r93186 r100491  
    22        prefix="lim"
    33        categorie="maintenance"
    4         version="1.0.7"
     4        version="1.1.16"
    55        etat="stable"
    66        compatibilite="[3.0.0;3.1.*]"
    77        logo="prive/themes/spip/images/lim-64.png"
    88        documentation="http://contrib.spip.net/LIM"
    9         schema="1.0.0"
     9        schema="1.1.0"
    1010>
    1111        <!--
     
    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" />
  • _plugins_/lim/branches/V1/prive/squelettes/contenu/configurer_lim_rubriques.html

    r93186 r100491  
    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
  • _plugins_/lim/branches/V1/prive/style_prive_plugin_lim.html

    r93186 r100491  
    2525#SET{left,#ENV{ltr}|choixsiegal{left,left,right}}
    2626#SET{right,#ENV{ltr}|choixsiegal{left,right,left}}
     27.lim_icon { transition: color 0.5s ease; }
     28.icon-on { color:[(#ENV{foncee})]; }
     29.formulaire_configurer_lim_logos .choix label { vertical-align:middle; }
     30.center { text-align:center; }
     31input[type=checkbox].lim_hidden {display:none; }
     32.formulaire_configurer_lim_logos,
     33.formulaire_configurer_lim_rubriques .pin                               { position:relative; top:10px; left:10px ;}
     34.formulaire_configurer_lim_rubriques .secteur                   { margin:0px 0 10px 0; padding:10px 5px 5px 5px; border:1px solid #ddd; border-radius:5px; }
     35.formulaire_configurer_lim_rubriques .sousrub                   { padding-left:15px; margin-bottom:15px; }
     36.formulaire_configurer_lim_rubriques .sousrub .sousrub  { border-left:1px dotted #aaa; }
    2737
    28 .formulaire_spip.formulaire_configurer_lim_logos,
    29 .formulaire_spip.formulaire_configurer_lim_rubriques .choix label { vertical-align:middle; }
    30 .formulaire_spip.formulaire_configurer_lim_rubriques ul { margin:0;padding:0; }
    31 .formulaire_spip.formulaire_configurer_lim_rubriques ul.creneaux                        { margin:0;padding:0; }
    32 .formulaire_spip.formulaire_configurer_lim_rubriques ul.creneaux li             { margin:0; padding:0; padding:0; border:1px solid #ddd; border-radius:5px; background-color:#fff; }
    33 .formulaire_spip.formulaire_configurer_lim_rubriques ul.creneaux li ul          { margin-bottom:5px; margin-#ENV{left}:20px; border-#ENV{left}:1px solid #ddd; }
    34 .formulaire_spip.formulaire_configurer_lim_rubriques ul.creneaux li ul ul       { margin-bottom:0; margin-#ENV{left}:20px; border-#ENV{left}:1px solid #ddd; }
    35 .formulaire_spip.formulaire_configurer_lim_rubriques ul.creneaux li li          { border:0; border-radius:0;}
    36 .formulaire_spip.formulaire_configurer_lim_rubriques ul.creneaux li.secteur { margin-bottom:10px; [(#SPIP_VERSION|match{3.0}|oui) padding:5px;]}
    37 .formulaire_spip.formulaire_configurer_lim_rubriques ul.creneaux .checked       { background:[#(#ENV{claire}|couleur_eclaircir{0.7})];}
    38 .formulaire_spip.formulaire_configurer_lim_rubriques div.choix                          { padding: 4px 10px; border:0; border-radius:0;}
    39 .formulaire_spip.formulaire_configurer_lim_rubriques div.choix input[type='checkbox'] { margin:1px 0.3ex; vertical-align:middle; border:0;}
    4038img.info_logo_site, img.forbidden       { vertical-align:middle; }
  • _plugins_/lim/branches/V1/todo.txt

    r93186 r100491  
    11Todo
    22
    3 gestion de la taille des logos
     31- récursivité dans les choix des restrictions par rubriques
     42- rubriques pliables/dépliables dans la gestion des restrictions par rubriques
    45
Note: See TracChangeset for help on using the changeset viewer.