Changeset 110108 in spip-zone


Ignore:
Timestamp:
May 5, 2018, 6:21:32 PM (17 months ago)
Author:
nicod@…
Message:

On revoit toute la gestion de la config (secteurs wiki et autorisations), et on la simplifie : soit le plugin Autorité est installé, et c'est lui qui donne la config, soit il n'est pas là et c'est Gribouille qui gère.

Location:
_squelettes_/gribouille_2/trunk
Files:
2 deleted
7 edited

Legend:

Unmodified
Added
Removed
  • _squelettes_/gribouille_2/trunk/formulaires/configurer_gribouille.html

    r109769 r110108  
     1<BOUCLE_test_autorite(CONDITION){si #PLUGIN{autorite}}>
     2<p><a href="#URL_ECRIRE{configurer_autorite}"><:gribouille:config_autorite:></a></p>
     3</BOUCLE_test_autorite>
     4
    15<div class="formulaire_spip formulaire_editer formulaire_cfg">
    26        [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
     
    59                #ACTION_FORMULAIRE{#ENV{action}}
    610                <ul>
    7                         [(#SAISIE{secteur,secteurs_wiki,
     11                        [(#SAISIE{secteur,secteur_wiki,
    812                                label=<:gribouille:cfg_secteur_wiki:>,
    913                                option_intro=<:gribouille:cfg_aucun_secteur:>})]
     
    1317                                explication=<:gribouille:explication_exclure_recherche:>})]
    1418                </ul>
     19
     20                [(#SET{legendes,[(#ARRAY{0,<:gribouille:cfg_lgd_autorisation_ecrire:>,1,<:gribouille:cfg_lgd_autorisation_voir:>})]})]
     21                #SET{prefixes,#ARRAY{0,ecrire_,1,voir_}}
     22               
     23                <B_bloc_autorisation>
     24                <ul>
     25                <BOUCLE_bloc_autorisation(DATA){source tableau, #GET{legendes}}>
     26                #SET{prefixe, #GET{prefixes}|table_valeur{#CLE}}
     27                        <li class="fieldset">
     28                                <fieldset>
     29                                <h3 class="legend">#VALEUR</h3>
     30                                <ul>
     31                                        [(#SAISIE{statuts_auteurs,[(#GET{prefixe})]statuts,
     32                                                label=<:gribouille:cfg_lbl_statuts_auteurs:>,
     33                                                afficher_tous=oui,
     34                                                multiple=oui})]
     35                                </ul>
     36                                </fieldset>
     37
     38                        </li>
     39                        </BOUCLE_bloc_autorisation>
     40                </ul>
     41                </B_bloc_autorisation>
     42               
    1543                <p class="boutons">
    1644                        <input type="submit"class="submit" value="<:valider:>" />
    1745                </p>
    1846        </form>
     47
    1948</div>
     49
     50<//B_test_autorite>
  • _squelettes_/gribouille_2/trunk/gribouille_autoriser.php

    r109771 r110108  
    1010}
    1111
     12// si le plugin Autorité est installé, c'est lui qui gère les droits
     13include_spip('inc/filtres');
     14$f = chercher_filtre('info_plugin');
     15if ($f('autorite', 'est_actif')) {
     16        return;
     17}
     18
    1219function gribouille_autoriser() { }
    1320
     
    1522 * Modification de l'autorisation de modifier un article
    1623 * - On se base d'abord sur l'autorisation de base de SPIP
    17  * - Sinon on se base sur la configuration du cfg que nous avons faite
     24 * - Sinon on se base sur la configuration du plugin
    1825 *
    1926 * @param object $faire
     
    2532 * @return boolean
    2633 */
    27 function autoriser_article_modifier($faire, $quoi, $id, $qui, $opts) {
    28         $autorise = false;
    29         if (autoriser_article_modifier_dist($faire, $quoi, $id, $qui, $opts)) {
    30                 return autoriser_article_modifier_dist($faire, $quoi, $id, $qui, $opts);
    31         }
    32         if (function_exists('lire_config')) {
    33                 $secteur_wiki = lire_config('gribouille/secteurs_wiki');
    34                 $id_secteur    = sql_getfetsel('id_secteur', 'spip_articles', 'id_article=' . intval($id));
    35                 if ($id_secteur == $secteur_wiki) {
    36                         $type = lire_config('gribouille/autorisations/ecrire_type', 'webmestre');
    37                         switch ($type) {
    38                                 case 'webmestre':
    39                                         // Webmestres uniquement
    40                                         $autorise = tickets_verifier_webmestre($qui);
    41                                         break;
    42                                 case 'par_statut':
    43                                         // Traitement spécifique pour la valeur 'tous'
    44                                         if (in_array('tous', lire_config('gribouille/autorisations/ecrire_statuts', array()))) {
    45                                                 return true;
    46                                         }
    47                                         // Autorisation par statut
    48                                         $autorise = in_array($qui['statut'], lire_config('gribouille/autorisations/ecrire_statuts', array('0minirezo')));
    49                                         break;
    50                                 case 'par_auteur':
    51                                         // Autorisation par id d'auteurs
    52                                         $autorise = in_array($qui['id_auteur'], lire_config('gribouille/autorisations/ecrire_auteurs', array()));
    53                                         break;
     34if (!function_exists('autoriser_article_modifier')) {
     35        function autoriser_article_modifier($faire, $quoi, $id, $qui, $opts) {
     36                $autorise = false;
     37                if (autoriser_article_modifier_dist($faire, $quoi, $id, $qui, $opts)) {
     38                        return autoriser_article_modifier_dist($faire, $quoi, $id, $qui, $opts);
     39                }
     40                if (function_exists('lire_config')) {
     41                        $secteur_wiki = lire_config('gribouille/secteur_wiki');
     42                        $id_secteur   = sql_getfetsel('id_secteur', 'spip_articles', 'id_article=' . intval($id));
     43                        if ($id_secteur == $secteur_wiki) {
     44                                // Traitement spécifique pour la valeur 'tous'
     45                                if (in_array('tous', lire_config('gribouille/ecrire_statuts', array()))) {
     46                                        return true;
     47                                }
     48                                // Autorisation par statut
     49                                $autorise = in_array($qui['statut'], lire_config('gribouille/ecrire_statuts', array('0minirezo')));
    5450                        }
    5551                }
     52                else {
     53                        return autoriser('modifier', 'article', $id, $qui, $opts);
     54                }
     55
     56                return $autorise;
    5657        }
    57         else {
    58                 return autoriser('modifier', 'article', $id, $qui, $opts);
    59         }
    60 
    61         return $autorise;
     58}
     59else {
     60        spip_log('fonction autoriser_article_modifier() déjà déclarée !', 'gribouille' . _LOG_CRITIQUE);
    6261}
    6362
     
    6564 * Modification de l'autorisation de publier un article ou une rubrique dans une autre
    6665 * - On se base d'abord sur l'autorisation de base de SPIP
    67  * - Sinon on se base sur la configuration du cfg que nous avons faite
     66 * - Sinon on se base sur la configuration du plugin
    6867 *
    6968 * @param object $faire
     
    7574 * @return boolean
    7675 */
    77 function autoriser_rubrique_publierdans($faire, $quoi, $id, $qui, $opts) {
    78         $autorise = false;
    79         if (autoriser_rubrique_publierdans_dist($faire, $quoi, $id, $qui, $opts)) {
    80                 return autoriser_rubrique_publierdans_dist($faire, $quoi, $id, $qui, $opts);
    81         }
    82         if (function_exists('lire_config')) {
    83                 $secteur_wiki = lire_config('gribouille/secteurs_wiki');
    84                 $id_secteur    = sql_getfetsel('id_secteur', 'spip_rubriques', 'id_rubrique=' . intval($id));
    85                 if ($id_secteur==$secteur_wiki) {
    86                         $type = lire_config('gribouille/autorisations/ecrire_type', 'webmestre');
    87                         switch ($type) {
    88                                 case 'webmestre':
    89                                         // Webmestres uniquement
    90                                         $autorise = gribouille_verifier_webmestre($qui);
    91                                         break;
    92                                 case 'par_statut':
    93                                         // Traitement spécifique pour la valeur 'tous'
    94                                         if (in_array('tous', lire_config('gribouille/autorisations/ecrire_statuts', array()))) {
    95                                                 return true;
    96                                         }
    97                                         // Autorisation par statut
    98                                         $autorise = in_array($qui['statut'], lire_config('gribouille/autorisations/ecrire_statuts', array('0minirezo')));
    99                                         break;
    100                                 case 'par_auteur':
    101                                         // Autorisation par id d'auteurs
    102                                         $autorise = in_array($qui['id_auteur'], lire_config('gribouille/autorisations/ecrire_auteurs', array()));
    103                                         break;
     76if (!function_exists('autoriser_rubrique_publierdans')) {
     77        function autoriser_rubrique_publierdans($faire, $quoi, $id, $qui, $opts) {
     78                $autorise = false;
     79                if (autoriser_rubrique_publierdans_dist($faire, $quoi, $id, $qui, $opts)) {
     80                        return autoriser_rubrique_publierdans_dist($faire, $quoi, $id, $qui, $opts);
     81                }
     82                if (function_exists('lire_config')) {
     83                        $secteur_wiki = lire_config('gribouille/secteur_wiki');
     84                        $id_secteur   = sql_getfetsel('id_secteur', 'spip_rubriques', 'id_rubrique=' . intval($id));
     85                        if ($id_secteur == $secteur_wiki) {
     86                                // Traitement spécifique pour la valeur 'tous'
     87                                if (in_array('tous', lire_config('gribouille/ecrire_statuts', array()))) {
     88                                        return true;
     89                                }
     90                                // Autorisation par statut
     91                                $autorise = in_array($qui['statut'], lire_config('gribouille/ecrire_statuts', array('0minirezo')));
    10492                        }
    10593                }
     94                else {
     95                        return autoriser('publier_dans', 'rubrique', $id, $qui, $opts);
     96                }
     97
     98                return $autorise;
    10699        }
    107         else {
    108                 return autoriser('publier_dans', 'rubrique', $id, $qui, $opts);
    109         }
    110 
    111         return $autorise;
     100}
     101else {
     102        spip_log('fonction autoriser_rubrique_publierdans() déjà déclarée !', 'gribouille' . _LOG_CRITIQUE);
    112103}
    113104
     
    118109 * - On vérifie tout d'abord si nous sommes autorisé à plublier dans cette rubrique
    119110 * Si oui, on passe outre la configuration
    120  * - On vérifie ensuite si on est autorisé dans le CFG
     111 * - On vérifie ensuite si on est autorisé dans la config du plugin
    121112 *
    122113 * @param string $faire L'action à réaliser
     
    128119 * @return boolean
    129120 */
    130 function autoriser_rubrique_voir($faire, $quoi, $id, $qui, $opts) {
    131         $autorise = false;
    132         if (autoriser('publierdans', 'rubrique', $id, $qui, $opts)) {
    133                 return autoriser('publierdans', 'rubrique', $id, $qui, $opts);
    134         }
    135         if (function_exists('lire_config')) {
    136                 $secteur_wiki = lire_config('gribouille/secteurs_wiki');
    137                 $id_secteur    = sql_getfetsel('id_secteur', 'spip_rubriques', 'id_rubrique=' . intval($id));
    138                 if ($id_secteur == $secteur_wiki) {
    139                         $type = lire_config('gribouille/autorisations/voir_type', 'webmestre');
    140                         switch ($type) {
    141                                 case 'webmestre':
    142                                         // Webmestres uniquement
    143                                         $autorise = gribouille_verifier_webmestre($qui);
    144                                         break;
    145                                 case 'par_statut':
    146                                         // Traitement spécifique pour la valeur 'tous'
    147                                         if (in_array('tous', lire_config('gribouille/autorisations/voir_statuts', array()))) {
    148                                                 return true;
    149                                         }
    150                                         // Autorisation par statut
    151                                         $autorise = in_array($qui['statut'], lire_config('gribouille/autorisations/voir_statuts', array('0minirezo')));
    152                                         break;
    153                                 case 'par_auteur':
    154                                         // Autorisation par id d'auteurs
    155                                         $autorise = in_array($qui['id_auteur'], lire_config('gribouille/autorisations/voir_auteurs', array()));
    156                                         break;
     121if (!function_exists('autoriser_rubrique_voir')) {
     122        function autoriser_rubrique_voir($faire, $quoi, $id, $qui, $opts) {
     123                $autorise = false;
     124                if (autoriser('publierdans', 'rubrique', $id, $qui, $opts)) {
     125                        return autoriser('publierdans', 'rubrique', $id, $qui, $opts);
     126                }
     127                if (function_exists('lire_config')) {
     128                        $secteur_wiki = lire_config('gribouille/secteur_wiki');
     129                        $id_secteur   = sql_getfetsel('id_secteur', 'spip_rubriques', 'id_rubrique=' . intval($id));
     130                        if ($id_secteur == $secteur_wiki) {
     131                                // Traitement spécifique pour la valeur 'tous'
     132                                if (in_array('tous', lire_config('gribouille/voir_statuts', array()))) {
     133                                        return true;
     134                                }
     135                                // Autorisation par statut
     136                                $autorise = in_array($qui['statut'], lire_config('gribouille/voir_statuts', array('0minirezo')));
    157137                        }
    158138                }
     139                else {
     140                        return autoriser('voir', 'rubrique', $id, $qui, $opts);
     141                }
     142
     143                return $autorise;
    159144        }
    160         else {
    161                 return autoriser('voir', 'rubrique', $id, $qui, $opts);
    162         }
    163 
    164         return $autorise;
     145}
     146else {
     147        spip_log('fonction autoriser_rubrique_voir() déjà déclarée !', 'gribouille' . _LOG_CRITIQUE);
    165148}
    166149
    167 function gribouille_verifier_webmestre($qui) {
    168         $webmestre = in_array($qui['id_auteur'], explode(':', _ID_WEBMESTRES));
    169         if (!$webmestre && ($qui['webmestre'] == 'oui')) {
    170                 $webmestre = true;
    171         }
    172 
    173         return $webmestre;
    174 }
    175 
  • _squelettes_/gribouille_2/trunk/gribouille_fonctions.php

    r110050 r110108  
    3535
    3636function gribouille_secteurs_wiki() {
    37         return lire_config('autorite/espace_wiki');
     37        include_spip('inc/filtres');
     38        $f = chercher_filtre('info_plugin');
     39        if($f('autorite','est_actif')) {
     40                return lire_config('autorite/espace_wiki');
     41        } else {
     42                return array(lire_config('gribouille/secteur_wiki'));
     43        }
    3844}
    3945
  • _squelettes_/gribouille_2/trunk/gribouille_options.php

    r109699 r110108  
    136136}
    137137
    138 function analyse_droits_rapide() {
    139         return true;
     138if(!function_exists('analyse_droits_rapide')) {
     139        function analyse_droits_rapide() {
     140                return true;
     141        }
    140142}
    141143
  • _squelettes_/gribouille_2/trunk/gribouille_pipelines.php

    r110050 r110108  
    3232                if ($id_rubrique = $flux['args']['id_rubrique']) {
    3333                        $id_secteur = sql_getfetsel('id_secteur', 'spip_rubriques', 'id_rubrique=' . intval($id_rubrique));
    34                         if (in_array($id_secteur, lire_config('autorite/espace_wiki'))) {
     34                        if (in_array($id_secteur, gribouille_secteurs_wiki())) {
    3535                                include_spip('inc/autoriser');
    3636                                // On vérifie si nous sommes autorisé à voir le Wiki
  • _squelettes_/gribouille_2/trunk/lang/gribouille_fr.php

    r110052 r110108  
    2828        'click_ajout_texte'                         => 'Double-cliquez pour ajouter du texte.',
    2929        'connexion'                                 => 'Se connecter',
     30        'config_autorite'                           => 'La configuration du wiki est gérée par le plugin Autorité.',
    3031
    3132        // D
  • _squelettes_/gribouille_2/trunk/paquet.xml

    r110050 r110108  
    1212        <!-- Un Wiki pour SPIP -->
    1313
    14         <auteur>Fil</auteur>
     14        <auteur>Fil, version originale</auteur>
     15        <auteur lien="https://contrib.spip.net/nicod_">nicod_, plugin et refonte</auteur>
    1516
    1617        <necessite nom="crayons" compatibilite="[1.26.0;]"/>
     
    1920        <necessite nom="sommaire" compatibilite="[1.2.4;]"/>
    2021        <necessite nom="scssphp" compatibilite="[1.2.1;]"/>
    21         <necessite nom="autorite" compatibilite="[0.10.19;]"/>
    2222
    2323        <pipeline nom="styliser" inclure="gribouille_pipelines.php"/>
    2424        <pipeline nom="prepare_recherche" inclure="gribouille_pipelines.php"/>
    25         <!--<pipeline nom="autoriser" inclure="gribouille_autoriser.php"/>-->
     25        <pipeline nom="autoriser" inclure="gribouille_autoriser.php"/>
    2626
    2727        <menu nom="configurer_gribouille" titre="gribouille:titre_configurer_gribouille" parent="menu_configuration" icone="images/gribouille-16.png"/>
    28         <menu nom="configurer_gribouille_autorisations" titre="gribouille:titre_configurer_gribouille_autorisations" parent="menu_configuration" icone="images/gribouille-16.png"/>
     28       
    2929</paquet>
Note: See TracChangeset for help on using the changeset viewer.