configuration globale du bolc

configuration globale du bolc

par UVT menel,
Nombre de réponses : 6
salut à tous ,
je m'adresse surtout aux développeurs des blocs,
mon bloc contient la fonction suivante:

function instance_config_save($data)
{ global $CFG;
if(!empty($CFG->block_recommandation_strict))
{ $data['text'] = strip_tags($data['text']); }
return parent::instance_config_save($data);
}

cette fonction a pour rôle normalement de récupérer les paramètres configurés du bloc


mon fichier config_global.html contient le code suivant:

<div style="text-align: center;">
Sliding Window:
<input type="text" name="block_recommandation_sliding_window" size=4>
<p><input type="submit" value="<?php print_string('savechanges'); ?>" /></p>
</div>

cela affiche dans la zone de configuration globale du bloc un champ texte que doit contenir un entier différent de "0".

mes problèmes:
- quand je met une valeur dans de champ texte et valide par "enregistrer" et je reviens pour vérifier je trouve que le champ texte est vide.
- en plus j'ai pas de vérification que la valeur entrée est un entier non nul.

mes questions:
-comment je peut sauvegarder cette valeur? est ce que la fonction que je viens de citer est suffisante pour le faire? ou bien elle contient des erreurs?
- est ce que je peut intégrer du javascript dans ce fichier pour vérifier la valeur entrée dans ce champ? ou bien quelle est l'autre solution?




Moyenne des évaluations  -
En réponse à UVT menel

Re: configuration globale du bolc

par Jean FRUITET,
Pour moi il y a déjà une erreur dans le code de cette fonction.


function instance_config_save($data)
{ global $CFG;
if(!empty($CFG->block_recommandation_strict))
{
// ERREUR
$data['text'] = strip_tags($data['text']);
// A REMPLACER PAR
$data['block_recommandation_sliding_window'] = strip_tags($data['block_recommandation_sliding_window']);
}
return parent::instance_config_save($data);
}

Quant à faire des vérifications de format vous devez le faire après avoir récupéré la valeur saisie... Ce peut être bien sûr avec un javascript côté client ou une fonction PHP côté serveur.

Dernière recommandation, donnez une valeur par défaut
<input type="text" name="block_recommandation_sliding_window" size=4 value="0" />
ce qui fait que si la valeur n'est pas positive stricte le progrmme pourra renvoyer un message d'erreur.
En réponse à Jean FRUITET

Re: configuration globale du bolc

par Valery Fremaux,

Tout à fait d'accord, $data contient un tableau associatif des valeurs de paramètres de cofiguration du bloc récolté dans le formulaire, ainsi que quelques clefs supplémentaires pour identifier le contexte.

$data['text'] ne correspond donc à rien par rapport à l'exemple de formulaire fourni.

Cette fonction est un "hook" intervenant juste avant la phase de sauvegarde des paramètres. On peut y imposer une valeur par défaut d'un paramètre manquant, aussi bien que comme le propose Jean, dans le formulaire côté client.

En réponse à Valery Fremaux

Re: configuration globale du bolc

par UVT menel,
merci pour votre aide ,

j'ai bien remplacé le code par votre code recommandé (avec la valeur par défaut...), mais j'ai encore le problème que la nouvelle valeur que je tape dans le formulaire de configuration globale n'est pas sauvegardée incertain

En réponse à UVT menel

Re: configuration globale du bolc

par Jean FRUITET,

C'est donc la fonction de sauvegarde qui n'est pas correcte.

Comment est donc écrite la fonction parente que vous appelez dans votre fonction de sauvegarde modifiée ?

En réponse à Jean FRUITET

Re: configuration globale du bolc

par UVT menel,
bonjour ,
voilà mes fonctions:

function config_save($data) {
// Default behavior: save all variables as $CFG properties
foreach ($data as $name => $value) {
set_config($name, $value);
}
return true;
}

et
function instance_config_save($data) {
// Clean the data if we have to
global $CFG;
if(!empty($CFG->block_recommandation_strict)) {
$data['block_recommandation_sliding_window'] = strip_tags($data['block_recommandation_sliding_window']);
$data['block_recommandation_keywords'] = strip_tags($data['block_recommandation_keywords']);
$data['block_recommandation_temps_min'] = strip_tags($data['block_recommandation_temps_min']);
}

// And now forward to the default implementation defined in the parent class
return parent::instance_config_save($data);

}

mon "config_global.html" contient 3 paramètres (champs de texte) à configurer et qui sont cités dans la fonctions précédantes.
Merci pour votre aide
En réponse à UVT menel

Re: configuration globale du bolc

par UVT menel,
une question:

la variable $CFG->block_recommandation_strict, pourquoi elle utilisée, est ce qu'on peut la remplacer par une autre variable?