Changeset 75748 in spip-zone


Ignore:
Timestamp:
Sep 11, 2013, 1:30:20 PM (6 years ago)
Author:
kent1@…
Message:

Autoriser à modifier le module pour les tradlangs multiples (Modifier tous les non traduits) => merci @severo

Amélioration du crayon d'édition multiple

Version 2.1.5

Location:
_plugins_/trad-lang/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/trad-lang/trunk/controleurs/tradlang_tous.html

    r75334 r75748  
    88         * error_tradlang_statut_X boolean : une erreur sur l'oubli de changement de statut (très importante)
    99         */
    10         var error_tradlang_statut_#ID_TRADLANG_MODULE = false;
    11         var error_tradlang_variables_#ID_TRADLANG_MODULE = false;
    12         var tradlang_errors_statut_#ID_TRADLANG_MODULE = [];
    13         var tradlang_errors_variables_#ID_TRADLANG_MODULE = [];
     10        var error_tradlang_statut_#ID_TRADLANG_MODULE = false,
     11                error_tradlang_variables_#ID_TRADLANG_MODULE = false,
     12                tradlang_errors_statut_#ID_TRADLANG_MODULE = [],
     13                tradlang_errors_variables_#ID_TRADLANG_MODULE = [];
    1414        /**
    1515         * Les messages d'erreur ajoutés au li parent
    1616         */
    17         var erreur_statut = '<:tradlang:erreur_statut_js|texte_script:>';
    18         var erreur_variable = '<:tradlang:erreur_variable_manquante_js|texte_script:>';
     17        var erreur_statut = '<:tradlang:erreur_statut_js|texte_script:>',
     18                erreur_variable = '<:tradlang:erreur_variable_manquante_js|texte_script:>';
    1919</script>
    2020
    2121<B_nb_tradlangs>
    22 <h4>[(#GRAND_TOTAL|singulier_ou_pluriel{tradlang:titre_tradlang_non_traduit,tradlang:titre_tradlang_non_traduits})]</h4>
     22<h3 class="h3">[(#GRAND_TOTAL|singulier_ou_pluriel{tradlang:titre_tradlang_non_traduit,tradlang:titre_tradlang_non_traduits})]</h3>
    2323[(#GRAND_TOTAL|>{30}|oui)
    2424#BOITE_OUVRIR{'',notice}
     
    2626#BOITE_FERMER]
    2727<div class="formulaire_spip">
    28 <form action="spip.php" method="post" enctype="multipart/form-data" class="formulaire_crayon" id="formulaire_tradlang_tous_#ENV{id_tradlang_module}">
    29 <input type="hidden" name="action" value="crayons" />
    30 <input type="hidden" name="redirect" value="[(#SELF|parametre_url{edit,''})]" />
    31 <ul>
    32 <BOUCLE_nb_tradlangs(TRADLANGS){id_tradlang_module}{statut IN MODIF,NEW}{lang=#GET{lang_cible}}>
    33 </BOUCLE_nb_tradlangs>
    34 <BOUCLE_nb_tradlangs_affiche(TRADLANGS){id_tradlang_module}{statut IN MODIF,NEW}{lang=#GET{lang_cible}}{0,30}>
    35 <li class="editer editer_tradlang">
    36 #CRAYON{str_statut}
    37 <script type='text/javascript'>
    38         var contenu_orig_#ID_TRADLANG = '[(#STR**|tradlang_utf8|replace{"\n","_"}|replace{"\r",""}|replace{"\t",""}|texte_script)]';
    39         $('#formulaire_tradlang_tous_#ENV{id_tradlang_module}').bind('submit',function(){
    40                 var newstatut_#ID_TRADLANG = $('#formulaire_tradlang_tous_[(#ENV{id_tradlang_module})]').find('#statut_[(#ID_TRADLANG)]').val();
    41                 var new_contenu_#ID_TRADLANG =$('#formulaire_tradlang_tous_[(#ENV{id_tradlang_module})]').find('#str_#ID_TRADLANG').val().replace(/\n/g,'_').replace(/\r/g,'').replace(/\t/g,'');
    42                 var vars_#ID_TRADLANG = $('#formulaire_tradlang_tous_[(#ENV{id_tradlang_module})]').find('#str_orig_#ID_TRADLANG').val().match('@[^@]+@','gi');
    43                 if(vars_#ID_TRADLANG){
    44                         trad_#ID_TRADLANG = $('#formulaire_tradlang_tous_[(#ENV{id_tradlang_module})]').find('#str_#ID_TRADLANG').val();
    45                         jQuery(vars_#ID_TRADLANG).each(function(i,elt){
    46                                 if(!trad_#ID_TRADLANG.match(elt,'g')){
    47                                         tradlang_errors_variables_[(#ID_TRADLANG_MODULE)].push('#ID_TRADLANG');
    48                                         error_tradlang_variables_[(#ID_TRADLANG_MODULE)] = true;
    49                                         break;
    50                                 }
    51                         }
    52                 }
    53                 if((new_contenu_#ID_TRADLANG != contenu_orig_#ID_TRADLANG) && (newstatut_#ID_TRADLANG != 'OK')){
    54                         /**
    55                          * On remplit les erreurs si besoin
    56                          */
    57                         error_tradlang_statut_#ID_TRADLANG_MODULE = true;
    58                         tradlang_errors_statut_#ID_TRADLANG_MODULE.push('#ID_TRADLANG');
    59                 }
    60         });
    61 </script>
    62 </li>
    63 </BOUCLE_nb_tradlangs_affiche>
    64 </ul>
    65 <p class="boutons">
    66         <input type='submit' class="submit" />
    67 </p>
    68 </form>
     28        <form action="spip.php" method="post" enctype="multipart/form-data" class="formulaire_crayon" id="formulaire_tradlang_tous_#ENV{id_tradlang_module}">
     29                <input type="hidden" name="action" value="crayons" />
     30                <input type="hidden" name="redirect" value="[(#SELF|parametre_url{edit,''})]" />
     31                <ul>
     32                        <BOUCLE_nb_tradlangs(TRADLANGS){id_tradlang_module}{statut IN MODIF,NEW}{lang=#GET{lang_cible}}> </BOUCLE_nb_tradlangs>
     33                        <BOUCLE_nb_tradlangs_affiche(TRADLANGS){id_tradlang_module}{statut IN MODIF,NEW}{lang=#GET{lang_cible}}{0,30}>
     34                        <li class="editer editer_tradlang">
     35                                <div style="width:100%">
     36                                        [(#CRAYON{str_statut})]
     37                                        <script type="text/javascript">
     38                                                var contenu_orig_#ID_TRADLANG = '[(#STR**|tradlang_utf8|replace{"\n","_"}|replace{"\r",""}|replace{"\t",""}|texte_script)]';
     39                                                console.log(contenu_orig_#ID_TRADLANG);
     40                                                $('#formulaire_tradlang_tous_#ENV{id_tradlang_module}').bind('submit',function(){
     41                                                        var newstatut_#ID_TRADLANG = $('#formulaire_tradlang_tous_[(#ENV{id_tradlang_module})]').find('#statut_[(#ID_TRADLANG)]').val(),
     42                                                                new_contenu_#ID_TRADLANG =$('#formulaire_tradlang_tous_[(#ENV{id_tradlang_module})]').find('#str_#ID_TRADLANG').val().replace(/\n/g,'_').replace(/\r/g,'').replace(/\t/g,''),
     43                                                                vars_#ID_TRADLANG = $('#formulaire_tradlang_tous_[(#ENV{id_tradlang_module})]').find('#str_orig_#ID_TRADLANG').val().match('@[^<@]+@','gi');
     44                                                        if(vars_#ID_TRADLANG){
     45                                                                trad_#ID_TRADLANG = $('#formulaire_tradlang_tous_[(#ENV{id_tradlang_module})]').find('#str_#ID_TRADLANG').val();
     46                                                                jQuery(vars_#ID_TRADLANG).each(function(i,elt){
     47                                                                        if(!trad_#ID_TRADLANG.match(elt,'g')){
     48                                                                                tradlang_errors_variables_[(#ID_TRADLANG_MODULE)].push('#ID_TRADLANG');
     49                                                                                error_tradlang_variables_[(#ID_TRADLANG_MODULE)] = true;
     50                                                                                break;
     51                                                                        }
     52                                                                }
     53                                                        }
     54                                                        if((new_contenu_#ID_TRADLANG != contenu_orig_#ID_TRADLANG) && (newstatut_#ID_TRADLANG != 'OK')){
     55                                                                /**
     56                                                                 * On remplit les erreurs si besoin
     57                                                                 */
     58                                                                error_tradlang_statut_#ID_TRADLANG_MODULE = true;
     59                                                                tradlang_errors_statut_#ID_TRADLANG_MODULE.push('#ID_TRADLANG');
     60                                                        }
     61                                                });
     62                                        </script>
     63                                </div
     64                        </li>
     65                        </BOUCLE_nb_tradlangs_affiche>
     66                </ul>
     67                <p class="boutons">
     68                        <input type='submit' class="submit" />
     69                </p>
     70        </form>
    6971</div>
    7072</B_nb_tradlangs>
     
    7880         * On déplace le bouton de submit du formulaire au scroll si le formulaire est grand
    7981         */
    80         var boutons = $('#formulaire_tradlang_tous_[(#ENV{id_tradlang_module})] .boutons');
    81         var boutons_width = boutons.width();
     82        var boutons = $('#formulaire_tradlang_tous_[(#ENV{id_tradlang_module})] .boutons'),
     83                boutons_width = boutons.width();
    8284        $(window).scroll(function() {
    83                 var offset = $('#formulaire_tradlang_tous_[(#ENV{id_tradlang_module})]').offset();
    84                 var limite_haut = offset.top;
    85                 var limite_bas = limite_haut+$('#formulaire_tradlang_tous_[(#ENV{id_tradlang_module})]').height();
     85                var offset = $('#formulaire_tradlang_tous_[(#ENV{id_tradlang_module})]').offset(),
     86                        limite_haut = offset.top,
     87                        limite_bas = limite_haut+$('#formulaire_tradlang_tous_[(#ENV{id_tradlang_module})]').height();
    8688                if(($(window).scrollTop() >= limite_haut) || (($(window).scrollTop()+$(window).height()) <= limite_bas)){
    8789                        if(!boutons.hasClass('boutons_float'))
     
    9698         */
    9799        $('#formulaire_tradlang_tous_#ENV{id_tradlang_module}').bind('submit',function(){
    98                 $('li.erreur .erreur_message').detach();
    99                 $('li.erreur').removeClass('erreur');
     100                $('li.erreur').removeClass('erreur').find('.erreur_message').detach();
    100101                if(error_tradlang_variables_[(#ID_TRADLANG_MODULE)]){
    101102                        for (var i=0; i<tradlang_errors_variables_[(#ID_TRADLANG_MODULE)].length; i++) {
    102103                                erreur = tradlang_errors_variables_[(#ID_TRADLANG_MODULE)][i];
    103                                 $('#str_'+erreur).parent('li').addClass('erreur');
    104                                 $('#str_'+erreur).parent('li').prepend('<span class="erreur_message">'+erreur_variable+'<\/span>');
     104                                $('#str_'+erreur).parent('li').addClass('erreur').prepend('<span class="erreur_message">'+erreur_variable+'<\/span>');
    105105                        }
    106106                        tradlang_errors_variables_[(#ID_TRADLANG_MODULE)] = [];
    107107                        error_tradlang_variables_[(#ID_TRADLANG_MODULE)] = false;
    108                         jQuery('li.erreur').eq(0).positionner(true,true);
     108                        $('li.erreur').eq(0).positionner(true,true);
    109109                        return false;
    110110                }
     
    113113                                for (var i=0; i<tradlang_errors_statut_#ID_TRADLANG_MODULE.length; i++) {
    114114                                        erreur = tradlang_errors_statut_[(#ID_TRADLANG_MODULE)][i];
    115                                 $('#statut_'+erreur).parent('li').addClass('erreur');
    116                                 $('#statut_'+erreur).parent('li').prepend('<span class="erreur_message">'+erreur_statut+'<\/span>');
     115                                $('#statut_'+erreur).parent('li').addClass('erreur').prepend('<span class="erreur_message">'+erreur_statut+'<\/span>');
    117116                                }
    118117                                tradlang_errors_statut_#ID_TRADLANG_MODULE = [];
    119118                                error_tradlang_statut_#ID_TRADLANG_MODULE = false;
    120119                                $('li.erreur select').change(function(){
    121                                         if($(this).val() == 'OK'){
    122                                                 $(this).parent('.erreur').find('.erreur_message').detach();
    123                                                 $(this).parent('.erreur').removeClass('erreur');
    124                                         }
     120                                        if($(this).val() == 'OK')
     121                                                $(this).parent('.erreur').removeClass('erreur').find('.erreur_message').detach();
    125122                                });
    126                                 jQuery('li.erreur').eq(0).positionner(true,true);
     123                                $('li.erreur').eq(0).positionner(true,true);
    127124                                return false;
    128125                        }
  • _plugins_/trad-lang/trunk/paquet.xml

    r75329 r75748  
    22        prefix="tradlang"
    33        categorie="outil"
    4         version="2.1.4"
     4        version="2.1.5"
    55        etat="stable"
    66        compatibilite="[3.0.0;3.1.*]"
  • _plugins_/trad-lang/trunk/tradlang_autoriser.php

    r71071 r75748  
    7878        $utiliser_defaut = true;
    7979
    80         if(!function_exists('lire_config')){
     80        if(!function_exists('lire_config'))
    8181                include_spip('inc/config');     
    82         }
    83        
     82
    8483        $type = lire_config('tradlang/autorisations/configurer_type');
    8584        if($type){
     
    9190                        case 'par_statut':
    9291                                // Traitement spécifique pour la valeur 'tous'
    93                                 if(in_array('tous',lire_config('tradlang/autorisations/configurer_statuts',array('0minirezo')))){
     92                                if(in_array('tous',lire_config('tradlang/autorisations/configurer_statuts',array('0minirezo'))))
    9493                                        return true;
    95                                 }
    9694                                // Autorisation par statut
    9795                                $autorise = in_array($qui['statut'], lire_config('tradlang/autorisations/configurer_statuts',array()));
     
    102100                                break;
    103101                }
    104                 if($autorise == true){
     102                if($autorise == true)
    105103                        return $autorise;
    106                 }
    107104                $utiliser_defaut = false;
    108105        }
     
    117114                else if ($liste['auteur'])
    118115                        $autorise = in_array($qui['id_auteur'], $liste['auteur']);
    119                
    120116                return $autorise;
    121117        }
     
    123119         * Si vraiment on n'a rien, on utilise une fonction par défaut
    124120         */
    125         else{
     121        else
    126122                return autoriser('configurer', 'lang');
    127         }
    128123}
    129124
     
    160155        if(!function_exists('lire_config'))
    161156                include_spip('inc/config');
    162        
     157
    163158        $type = lire_config('tradlang/modifier_type');
    164159        if($type){
     
    170165                        case 'par_statut':
    171166                                // Traitement spécifique pour la valeur 'tous'
    172                                 if(in_array('tous',lire_config('tradlang/modifier_statuts',array()))){
     167                                if(in_array('tous',lire_config('tradlang/modifier_statuts',array())))
    173168                                        return true;
    174                                 }
    175169                                // Autorisation par statut
    176170                                $autorise = in_array($qui['statut'], lire_config('tradlang/modifier_statuts',array('0minirezo')));
     
    198192
    199193/**
     194 * Autorisation de modification des modules dans tradlang
     195 * Utilisée aussi par le crayon d'édition multiple
     196 *
     197 * @param string $faire
     198 * @param string $type
     199 * @param int $id
     200 * @param array $qui
     201 * @param array $opt
     202 * @return boolean
     203 */
     204function autoriser_tradlangmodule_modifier_dist($faire, $type, $id, $qui, $opt){
     205        $autorise = false;
     206        $utiliser_defaut = true;
     207       
     208        /**
     209         * Si on est autoriser à configurer tradlang, on est autorisé à modifier la chaîne
     210         */
     211        if(autoriser_tradlang_configurer_dist($faire, $type, $id, $qui, $opt))
     212                return autoriser_tradlang_configurer_dist($faire, $type, $id, $qui, $opt);
     213       
     214        if(!function_exists('lire_config'))
     215                include_spip('inc/config');
     216       
     217        $type = lire_config('tradlang/modifier_type');
     218        if($type){
     219                switch($type) {
     220                        case 'webmestre':
     221                                // Webmestres uniquement
     222                                $autorise = ($qui['webmestre']=='oui');
     223                                break;
     224                        case 'par_statut':
     225                                // Traitement spécifique pour la valeur 'tous'
     226                                if(in_array('tous',lire_config('tradlang/modifier_statuts',array())))
     227                                        return true;
     228                                // Autorisation par statut
     229                                $autorise = in_array($qui['statut'], lire_config('tradlang/modifier_statuts',array('0minirezo')));
     230                                break;
     231                        case 'par_auteur':
     232                                // Autorisation par id d'auteurs
     233                                $autorise = in_array($qui['id_auteur'], lire_config('tradlang/modifier_auteurs',array()));
     234                                break;
     235                }
     236                if($autorise == true)
     237                        return $autorise;
     238       
     239                $utiliser_defaut = false;
     240        }
     241       
     242        // Si $utiliser_defaut = true, on utilisera les valeurs par défaut
     243        // Sinon on ajoute la possibilité de régler par define
     244        $liste = definir_autorisations_tradlang('modifier',$utiliser_defaut);
     245        if ($liste['statut'])
     246                $autorise = in_array($qui['statut'], $liste['statut']);
     247        else if ($liste['auteur'])
     248                $autorise = in_array($qui['id_auteur'], $liste['auteur']);
     249        return $autorise;
     250}
     251
     252/**
    200253 * Autorisation de voir l'interface de tradlang
    201254 *
     
    213266        if(autoriser_tradlang_modifier_dist($faire, $type, $id, $qui, $opt))
    214267                return autoriser_tradlang_modifier_dist($faire, $type, $id, $qui, $opt);
    215        
     268
    216269        if(!function_exists('lire_config'))
    217270                include_spip('inc/config');
    218        
     271
    219272        $type = lire_config('tradlang/voir_type');
    220273        if($type){
     
    226279                        case 'par_statut':
    227280                                // Traitement spécifique pour la valeur 'tous'
    228                                 if(in_array('tous',lire_config('tradlang/voir_statuts',array()))){
     281                                if(in_array('tous',lire_config('tradlang/voir_statuts',array())))
    229282                                        return true;
    230                                 }
    231283                                // Autorisation par statut
    232284                                $autorise = in_array($qui['statut'], lire_config('tradlang/voir_statuts',array('0minirezo','1comite')));
Note: See TracChangeset for help on using the changeset viewer.