Changeset 64972 in spip-zone


Ignore:
Timestamp:
Aug 18, 2012, 10:30:11 PM (9 years ago)
Author:
patfr@…
Message:
  • Quelques bugs corrigés.
  • Une nouvelle catégorie pour les outils : Développement
  • Possibilité d'agir sur la variable nouvellement entrée par l'administrateur (paramètre 'action')
  • Boutons radio : éviter la traduction automatique grâce au caractère '_' (paramètre 'radio', utile pour deux outils)
  • Champs texte simples : nouveau paramètre 'taille'
  • Description d'un outil : possibilité de fusionner un champ texte dans une liste de radios : radio->%ma_variable%?
  • Renforcement de la fonction cs_canonicalize() permettant de canoniser un chemin
  • Nouvelle fonction cs_root_canonicalize() permettant d'optenir un chemin à la racine du site

Quelques applis de ces changements dans le commit précédent.

Location:
_plugins_/couteau_suisse
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/couteau_suisse/action/description_outil.php

    r42657 r64972  
    3939                if (in_array($var, $metas_vars['_nombres'])) $final = intval($final);
    4040                spip_log("Outil du Couteau Suisse ($outil). Demande de modification sur une variable par l'auteur id=$connect_id_auteur : %$var% = $final");
    41                 // et on modifie les metas !
    42                 if(!isset($cs_variables[$var]['externe'])) $metas_vars[$var] = $final;
     41                // pas de modification de variable si l'outil utilise une variable externe
     42                $ok_modif = !isset($cs_variables[$var]['externe']);
     43                // action eventuelle apres validation
    4344                if(isset($cs_variables[$var]['action'])) {
    44                         $action = str_replace('%s', $final, $cs_variables[$var]['action']);
     45                        $action = '$_CS_DATA = '.var_export($final, 1)."; ";
     46                        $action = ($ok_modif?$action:"/* Variable non modifiable : $action */ ")
     47                                . str_replace('%s', '$_CS_DATA', $cs_variables[$var]['action']);
    4548                        spip_log("Outil du Couteau Suisse ($outil). Demande d'action sur cette variable : ".$action);
    4649                        eval($action);
     50                        $final = $_CS_DATA;
    4751                }
     52                // et on modifie les metas !
     53                if($ok_modif) $metas_vars[$var] = $final;
    4854                       
    4955        } else
  • _plugins_/couteau_suisse/cout_define.php

    r62203 r64972  
    5050// Montrer le fichier mes_options.php en cours
    5151function show_file_options() {
    52         return cs_canonicalize(str_replace("../", "", _DIR_RESTREINT_ABS).cs_spip_file_options(3));
     52        return cs_root_canonicalize(cs_spip_file_options(3));
    5353}
    5454
  • _plugins_/couteau_suisse/cout_lancement.php

    r64422 r64972  
    190190
    191191// retourne un chemin canonique a partir d'un chemin contenant des ../
    192 function cs_canonicalize($address) {
    193         $address = str_replace('\\', '/', str_replace('//', '/', $address));
    194         $address = explode('/', $address);
    195         $keys = array_keys($address, '..');
    196         foreach($keys as $keypos => $key) array_splice($address, $key - ($keypos * 2 + 1), 2);
    197         $address = implode('/', $address);
    198         return preg_replace(',([^.])\./,', '\1', $address);
     192function cs_canonicalize($file) {
     193        $file = str_replace('//', '/', str_replace('\\', '/', $file));
     194        $file = explode('/', $file);
     195        $keys = array_keys($file, '..');
     196        foreach($keys as $keypos => $key) if($key) array_splice($file, $key - ($keypos * 2 + 1), 2);
     197        $file = implode('/', $file);
     198        return preg_replace(',([^.])\./,', '\1', $file);
     199}
     200
     201// retourne un chemin canonique base sur la racine du site
     202// $relatif est le chemin relatif dans lequel on veut situer $file
     203function cs_root_canonicalize($file, $relatif='') {
     204        static $root, $lenroot;
     205//echo " ($file => ";
     206        $file = cs_canonicalize($file);
     207//echo "$file) ";
     208        if(!isset($root)) $lenroot = strlen($root = cs_canonicalize(_ROOT_RACINE));
     209        // complet sur la racine du serveur
     210        if(strncmp($file, $root, $lenroot)===0) return substr($file, $lenroot);
     211        // complet sur la racine du site
     212        if(strncmp($file, '/', 1)===0) return substr($file, 1);
     213        // relatif
     214        $file = cs_canonicalize(getcwd().'/'.$relatif.'/'.$file);
     215        if(strncmp($file, $root, $lenroot)===0) return substr($file, $lenroot);
     216        return $file;
    199217}
    200218
  • _plugins_/couteau_suisse/inc/description_outil.php

    r61585 r64972  
    5151                foreach($radios as $code=>$traduc) {
    5252                        $br = (($nb>0) && ( ++$i % $nb == 0))?'</ul><ul>':'';
     53                        $traduc = strncmp($traduc, '_', 1)===0?substr($traduc, 1):_T($traduc);
    5354                        $res .=
    5455                                "<li><label><input id=\"label_{$variable}_$code\" class=\"cs_input_checkbox\" type=\"radio\""
    5556                                .($valeur==$code?' checked="checked"':'')." value=\"$code\" name=\"$variable\"$disab />"
    56                                 .($valeur==$code?'<b>':'')._T($traduc).($valeur==$code?'</b>':'')
     57                                .($valeur==$code?'<b>':'').$traduc.($valeur==$code?'</b>':'')
    5758                                ."</label></li>$br";
    5859                }
     
    8586        if(!$actif)
    8687                return $label.'<html>'.(strlen($valeur)?nl2br(echapper_tags($valeur)):'&nbsp;'.couteauprive_T('variable_vide')).'</html>';
    87         $len = $nombre?6:0;
     88        $len = $nombre?6:(isset($cs_variable['taille'])?$cs_variable['taille']:0);
    8889        $width = $len?'':'style="width:98.8%;" ';
    8990        $lignes = !isset($cs_variable['lignes']) || $nombre?0:strval($cs_variable['lignes']);
     
    105106        // retour a la ligne : [[-->qq chose]]
    106107        if($matches[1]=='-') return "<fieldset> <div>$matches[2]</div></fieldset>";
     108        // fusion dans un <li> de boutons radio : [[radio->qq chose]]
     109        elseif($matches[1]=='radio') return "<fusionradio>$matches[2]</li></ul></div></fieldset>";
    107110        // format complet : [[label->qq chose]]
    108111        return "<fieldset><legend>$matches[1]</legend><div>$matches[2]</div></fieldset>";
     
    248251        // remplacement des blocs avec style. ex : <q2>bla bla</q2>
    249252        $res = preg_replace(',</q(\d)>,','</div>', preg_replace(',<q(\d)>,','<div class="q$1">', $res));
    250         // remplacement des inputs successifs sans label : [[%var1%]][[->%var2%]] ou [[%var1%]][[-->%var2%]]
     253        // remplacement des inputs successifs sans label : [[%var1%]][[radio->%var2%]] ou [[%var1%]][[-->%var2%]]
    251254        $res = preg_replace(',(<br />)?</fieldset><fieldset>( ?<div>),', '$2', $res);
     255        // fusion dans <li> : [[%var1%]][[radio->%var2%]] (var1 doit etre de type radio !)
     256        $res = str_replace('</li></ul></div></fieldset><fusionradio>', '', $res);
    252257        // remplacement de diverses constantes
    253258        $res = str_replace(array('@puce@', '@_CS_CHOIX@','@_CS_ASTER@','@_CS_PLUGIN_JQUERY192@'),
  • _plugins_/couteau_suisse/outils/devdebug_config.php

    r42512 r64972  
    2525        'contrib' => 3572,
    2626        'auteur' => 'Piero Wbmstr',
    27         'categorie' => 'divers',
     27        'categorie' => 'devel',
    2828                'code:options' => "%%devdebug_mode%%%%devdebug_espace%%%%devdebug_niveau%%devdebug_charger_debug();\n",
    2929                'autoriser' => "autoriser('webmestre')",
Note: See TracChangeset for help on using the changeset viewer.