Esempio n. 1
0
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;
}
Esempio n. 2
0
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):'&nbsp;-');
		}
		$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):'&nbsp;-');
		}
		$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)):'&nbsp;'._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;
}