function cs_parse_code_js($code) { global $metas_vars, $cs_variables; // parse d'abord [[%toto%]] pour le code reel de la variable $code = cs_parse_code_php($code, '\[\[%', '%\]\]'); // parse ensuite %%toto%% pour la valeur reelle de la variable while(preg_match(',%%([a-zA-Z_][a-zA-Z0-9_]*)%%,U', $code, $matches)) { // la valeur de la variable n'est stockee dans les metas qu'au premier post if(isset($metas_vars[$matches[1]])) { // la valeur de la variable est directement inseree dans le code js $rempl = $metas_vars[$matches[1]]; } else { // tant que le webmestre n'a pas poste, on prend la valeur (dynamique) par defaut $rempl = cs_retire_guillemets(cs_get_defaut($matches[1])); } $code = str_replace($matches[0], $rempl, $code); } return $code; }
function description_outil_une_variable($index, &$outil, &$variable, &$label, &$modif) { global $cs_variables, $metas_vars; $actif = $outil['actif']; // la valeur de la variable n'est stockee dans les metas qu'au premier post $valeur = isset($metas_vars[$variable])?$metas_vars[$variable]:cs_get_defaut($variable); $valeur = cs_retire_guillemets($valeur); //cs_log(" -- description_outil_une_variable($index) - Traite %$variable% = $valeur"); $cs_variable = &$cs_variables[$variable]; // autorisations de variables include_spip('inc/autoriser'); $cs_variable['disabled'] = $disab = autoriser('configurer', 'variable', 0, NULL, array('nom'=>$cs_variable['nom'], 'outil'=>$outil))?'':' disabled="disabled"'; // si ce n'est qu'une simple initialisation, on sort if(!$modif) return ''; $nombre = @$cs_variable['format']==_format_NOMBRE; // calcul du commentaire if($actif && isset($cs_variable['commentaire'])) { eval('$comment = '.str_replace('%s',cs_php_format($valeur, !$nombre),$cs_variable['commentaire']).';'); if($comment) $comment = "<p>$comment</p>"; } else $comment = ''; // si la variable necessite des boutons radio if(is_array($radios = &$cs_variable['radio'])) { if(!$actif) { $code = _T($radios[$valeur]); return "<input type=\"hidden\" name=\"$variable\" class=\"cs_hidden_checkbox\" value=\"$code\" />" . $label . (strlen($valeur)?ucfirst($code):' -'); } $res = "$label <ul>"; $i = 0; $nb = isset($cs_variable['radio/ligne'])?intval($cs_variable['radio/ligne']):0; foreach($radios as $code=>$traduc) { $br = (($nb>0) && ( ++$i % $nb == 0))?'</ul><ul>':''; $res .= "<li><label><input id=\"label_{$variable}_$code\" class=\"cs_input_checkbox\" type=\"radio\"" .($valeur==$code?' checked="checked"':'')." value=\"$code\" name=\"$variable\"$disab />" .($valeur==$code?'<b>':'')._T($traduc).($valeur==$code?'</b>':'') ."</label></li>$br"; } return $res.'</ul>'.$comment._VAR_OUTIL; } // si la variable necessite un select elseif(is_array($select = &$cs_variable['select'])) { if(!$actif) { $code = _T($select[$valeur]); return "<input type=\"hidden\" name=\"$variable\" class=\"cs_hidden_checkbox\" value=\"$code\" />" . $label . (strlen($valeur)?ucfirst($code):' -'); } $res = "$label <select name=\"$variable\"$disab>"; foreach($select as $code=>$traduc) { $res .= "<option" .($valeur==$code?' selected="selected"':'')." value=\"$code\">" ._T($traduc)."</option>"; } return $res.'</select>'.$comment._VAR_OUTIL; } // ... ou une case a cocher elseif(isset($cs_variable['check'])) { if(!$actif) return $label._T($cs_variable['check'])._T($valeur?'couteauprive:2pts_oui':'couteauprive:2pts_non'); return $label.'<label><input type="checkbox" '.($valeur?' checked="checked"':'')." value=\"1\" name=\"$variable\" $disab/>" .($valeur?'<b>':'')._T($cs_variable['check']).($valeur?'</b>':'').'</label>' . $comment._VAR_OUTIL; } // ... ou un textarea ... ou une case input if(!$actif) return $label.'<html>'.(strlen($valeur)?nl2br(echapper_tags($valeur)):' '._T('couteauprive:variable_vide')).'</html>'; $len = $nombre?6:0; $width = $len?'':'style="width:100%;" '; $lignes = !isset($cs_variable['lignes']) || $nombre?0:strval($cs_variable['lignes']); return $label . ( $lignes < 2 // <html></html> empechera SPIP de modifier le contenu des <input> ou <textarea> ?"<html><input name='$variable' value=\"" . htmlspecialchars($valeur) . "\" type='text' size='$len' $width $disab/></html>" :"<html><textarea rows='$lignes' name='$variable' $width$disab>" . htmlspecialchars($valeur) . '</textarea></html>' ) . $comment._VAR_OUTIL; }