Changeset 72944 in spip-zone


Ignore:
Timestamp:
May 22, 2013, 9:20:21 PM (7 years ago)
Author:
kent1@…
Message:

On vérifie bien les autorisations sur l'édition de tickets

Une autorisation à épingler les tickets par défaut seulement les admins

Location:
_plugins_/tickets/trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/tickets/trunk/formulaires/editer_ticket.html

    r72915 r72944  
    1212                                label=<:tickets:champ_titre_ticket:>,
    1313                                obligatoire=oui})]
    14                         [(#SESSION{statut}|=={0minirezo}|oui)
     14                        [(#AUTORISER{epingler,ticket,#ENV{id_ticket}}|oui)
    1515                        [(#SAISIE{oui_non,sticked,
    1616                                label=<:tickets:champ_sticked:>,
     
    4545                                        label=[(#VAL{tickets:champ_}|concat{#CLE}|_T)],
    4646                                        cacher_option_intro=oui,
    47                                         datas=[(#VALEUR|tickets_champ_optionnel_actif|array_combine{[(#VALEUR|tickets_champ_optionnel_actif)]})]})]
    48                         ]
     47                                        datas=[(#VALEUR|tickets_champ_optionnel_actif|array_combine{[(#VALEUR|tickets_champ_optionnel_actif)]})]})]]
    4948                        </BOUCLE_saisies>
    5049
     
    5352                                        label=<:tickets:champ_navigateur:>,
    5453                                        option_intro='-',
    55                                         datas=[(#REM|tickets_liste_navigateur)]})]                             
    56                         ]
    57                        
     54                                        datas=[(#REM|tickets_liste_navigateur)]})]]
     55
    5856                        [(#CONFIG{tickets/general/selecteur_navigateur}|=={on}|?{#SET{explication,<:tickets:explication_description_ticket_ss_nav:>},#SET{explication,<:tickets:explication_description_ticket:>}})]
    5957                        [(#SAISIE{textarea, texte,
     
    6361                                class=inserer_barre_edition,
    6462                                rows=20})]
    65                        
    6663                        [(#CONFIG{tickets/general/joindre_fichiers}|=={on}|et{#ENV{public}}|et{#PLUGIN{medias}}|oui)
    6764                                [(#SAISIE{input, ajouter_document,
    6865                                        type=file,
    6966                                        label=<:tickets:champ_fichier:>,
    70                                         explication=<:tickets:explication_fichier:>})]
    71                         ]
     67                                        explication=<:tickets:explication_fichier:>})]]
     68
    7269                        [(#SAISIE{input, exemple,
    7370                                label=<:tickets:champ_url_exemple:>,
     
    7572                </ul>
    7673                <!--extra-->
    77                 <p class='boutons'><input type='submit' class='submit' value='<:bouton_enregistrer:>' /></p>
     74                <p class='boutons'>
     75                        <input type='submit' class='submit' value='<:bouton_enregistrer:>' />
     76                </p>
    7877        </div></form>
    7978        </BOUCLE_editable>
  • _plugins_/tickets/trunk/formulaires/editer_ticket.php

    r68594 r72944  
    11<?php
    2 
    32/**
    43 * Plugin Tickets
    5  * Licence GPL (c) 2008-2012
     4 * Licence GPL (c) 2008-2013
    65 *
    76 * Formulaire d'édition de tickets
     
    3433                $valeurs['editable'] = false;
    3534        }else{
    36                 $valeurs = formulaires_editer_objet_charger('ticket',$id_ticket,0,0,$retour,$config_fonc,$row,$hidden);
    37                 $valeurs['editable'] = true;
    38        
    39                 // si nouveau ticket
    40                 if (!$id_ticket or $id_ticket=='oui'){
    41                         $valeurs['id_assigne'] = $GLOBALS['visiteur_session']['id_auteur'];
    42                         // Si un des champs de ce tableau est passé dans l'URL, on l'utilise dans le formulaire
    43                         foreach(array('composant','version','severite','navigateur','tracker','id_assigne','exemple') as $champ){
    44                                 if(!$valeurs[$champ] && _request($champ))
    45                                         $valeurs[$champ] = _request($champ);
     35                if(is_numeric($id_ticket) && !autoriser('modifier','ticket',$id_ticket))
     36                        $valeurs['editable'] = false;
     37                else{
     38                        $valeurs = formulaires_editer_objet_charger('ticket',$id_ticket,0,0,$retour,$config_fonc,$row,$hidden);
     39                        $valeurs['editable'] = true;
     40               
     41                        // si nouveau ticket
     42                        if (!$id_ticket or $id_ticket=='oui'){
     43                                $valeurs['id_assigne'] = $GLOBALS['visiteur_session']['id_auteur'];
     44                                // Si un des champs de ce tableau est passé dans l'URL, on l'utilise dans le formulaire
     45                                foreach(array('composant','version','severite','navigateur','tracker','id_assigne','exemple') as $champ){
     46                                        if(!$valeurs[$champ] && _request($champ))
     47                                                $valeurs[$champ] = _request($champ);
     48                                }
    4649                        }
    4750                }
  • _plugins_/tickets/trunk/formulaires/inc-tickets_autorisations.html

    r68112 r72944  
    1 [(#SET{legendes,[(#ARRAY{0,<:tickets:cfg_lgd_autorisation_ecrire:>,1,<:tickets:cfg_lgd_autorisation_assigner:>,2,<:tickets:cfg_lgd_autorisation_modifier:>,3,<:tickets:cfg_lgd_autorisation_commenter:>})]})]
    2 #SET{prefixes,#ARRAY{0,ecrire_,1,assigner_,2,modifier_,3,commenter_}}
     1[(#SET{legendes,[(#ARRAY{0,<:tickets:cfg_lgd_autorisation_ecrire:>,1,<:tickets:cfg_lgd_autorisation_assigner:>,2,<:tickets:cfg_lgd_autorisation_modifier:>,3,<:tickets:cfg_lgd_autorisation_commenter:>,4,<:tickets:cfg_lgd_autorisation_epingler:>})]})]
     2#SET{prefixes,#ARRAY{0,ecrire_,1,assigner_,2,modifier_,3,commenter_,4,epingler_}}
    33<B_bloc_autorisation>
    44<ul>
     
    2222                        <ul id="[(#GET{prefixe})]bloc_par_statut" class="[(#GET{prefixe})]bloc[(#ENV{[(#GET{prefixe})type]}|non) visible]">
    2323                                [(#CONFIG{[(#GET{prefixe})type]}|non)
    24                                         [(#GET{prefixe}|in_array{#ARRAY{0,ecrire_,1,assigner_,2,modifier_}}|oui)
     24                                        [(#GET{prefixe}|in_array{#ARRAY{0,ecrire_,1,assigner_,2,modifier_,3,epingler_}}|oui)
    2525                                                #SET{defaut,#ARRAY{0,0minirezo}}]
    2626                                        [(#GET{prefixe}|in_array{#ARRAY{0,commenter_}}|oui)
  • _plugins_/tickets/trunk/inc/tickets_autoriser.php

    r72914 r72944  
    4040                case 'modifier':
    4141                        $define = (defined('_TICKETS_AUTORISATION_MODIFIER')) ? _TICKETS_AUTORISATION_MODIFIER : ($utiliser_defaut ? '0minirezo':'');
     42                        break;
     43                case 'epingler':
     44                        $define = (defined('_TICKETS_AUTORISATION_EPINGLER')) ? _TICKETS_AUTORISATION_EPINGLER : ($utiliser_defaut ? '0minirezo':'');
    4245                        break;
    4346                default:
     
    315318        return $autorise;
    316319}
     320
     321/**
     322 * Autorisation d'épingler des tickets
     323 * Défini qui peut épingler les tickets
     324 * Par défaut seulement les admins
     325 *
     326 * @param string $faire : l'action à faire
     327 * @param string $type : le type d'objet sur lequel porte l'action
     328 * @param int $id : l'identifiant numérique de l'objet
     329 * @param array $qui : les éléments de session de l'utilisateur en cours
     330 * @param array $opt : les options
     331 * @return boolean true/false : true si autorisé, false sinon
     332 */
     333function autoriser_ticket_epingler_dist($faire, $type, $id, $qui, $opt){
     334        $autorise = false;
     335        $utiliser_defaut = true;
     336
     337        if(!function_exists('lire_config'))
     338                include_spip('inc/config');
     339
     340        $type = lire_config('tickets/autorisations/epingler_type', 'par_statut');
     341        if($type){
     342                switch($type) {
     343                        case 'webmestre':
     344                                // Webmestres uniquement
     345                                $autorise = ($qui['webmestre'] == 'oui');
     346                                break;
     347                        case 'par_statut':
     348                                // Traitement spécifique pour la valeur 'tous'
     349                                if(in_array('tous',lire_config('tickets/autorisations/epingler_statuts',array('0minirezo'))))
     350                                        return true;
     351                                // Autorisation par statut
     352                                $autorise = in_array($qui['statut'], lire_config('tickets/autorisations/modifier_statuts',array('0minirezo')));
     353                                break;
     354                        case 'par_auteur':
     355                                // Autorisation par id d'auteurs
     356                                $autorise = in_array($qui['id_auteur'], lire_config('tickets/autorisations/modifier_auteurs',array()));
     357                                break;
     358                }
     359                if($autorise == true)
     360                        return $autorise;
     361                $utiliser_defaut = false;
     362        }
     363
     364        // Si $utiliser_defaut = true, on utilisera les valeurs par défaut
     365        // Sinon on ajoute la possibilité de régler par define
     366        $liste = definir_autorisations_tickets('epingler',$utiliser_defaut);
     367        if ($liste['statut'])
     368                $autorise = in_array($qui['statut'], $liste['statut']);
     369        else if ($liste['auteur'])
     370                $autorise = in_array($qui['id_auteur'], $liste['auteur']);
     371        return $autorise;
     372}
    317373?>
  • _plugins_/tickets/trunk/lang/tickets_fr.php

    r72426 r72944  
    5555        'cfg_lgd_autorisation_commenter' => 'Commenter les tickets',
    5656        'cfg_lgd_autorisation_ecrire' => 'Écrire les tickets',
     57        'cfg_lgd_autorisation_epingler' => 'Épingler les tickets',
    5758        'cfg_lgd_autorisation_modifier' => 'Modifier les tickets',
    5859        'cfg_lgd_champs_optionnels' => 'Champs optionnels',
     
    140141        'label_paginer_par' => 'Paginer par :',
    141142        'lien_filtrer' => 'Filtrer les tickets',
     143        'lien_identification' => '<a href="@url@" class="spip_in">Identifiez vous.</a>',
    142144        'lien_reponse_ticket' => 'Réponse au ticket',
    143145        'lien_supprimer_filtres' => 'Enlever tous les filtres',
Note: See TracChangeset for help on using the changeset viewer.