From 9ccabb513a590157e33309c39b8e152c953ceecc Mon Sep 17 00:00:00 2001 From: "rastapopoulos@spip.org" <> Date: Fri, 27 May 2011 07:38:15 +0000 Subject: [PATCH] =?UTF-8?q?Une=20page=20d'aide=20permettant=20de=20g=C3=A9?= =?UTF-8?q?n=C3=A9rer=20les=20r=C3=A9f=C3=A9rences=20comme=20pour=20le=20p?= =?UTF-8?q?lugin=20Saisies.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Et une nouvelle vérification nommée "comparaison_champ" qui permet de comparer une valeur avec un champ du _request(). Je ne sais pas si c'est la meilleure manière de faire, donc pour l'instant je n'ai pas décris le YAML, c'est à tester... --- .gitattributes | 3 ++ aide/verifier.html | 73 ++++++++++++++++++++++++++++++++++ aide/verifier_fonctions.php | 39 ++++++++++++++++++ lang/verifier_fr.php | 6 +++ plugin.xml | 2 +- verifier/comparaison_champ.php | 45 +++++++++++++++++++++ 6 files changed, 167 insertions(+), 1 deletion(-) create mode 100644 aide/verifier.html create mode 100644 aide/verifier_fonctions.php create mode 100644 verifier/comparaison_champ.php diff --git a/.gitattributes b/.gitattributes index f85ef98..4158eff 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,4 +1,6 @@ * text=auto !eol +aide/verifier.html -text +aide/verifier_fonctions.php -text images/icones-infos.txt -text images/verifier-128.png -text inc/is_email.php -text @@ -15,6 +17,7 @@ lang/verifier_pt_br.php -text /plugin.xml -text test/verifier.html -text verifier/code_postal.php -text +verifier/comparaison_champ.php -text verifier/date.php -text verifier/date.yaml -text verifier/decimal.php -text diff --git a/aide/verifier.html b/aide/verifier.html new file mode 100644 index 0000000..36b9adb --- /dev/null +++ b/aide/verifier.html @@ -0,0 +1,73 @@ + +#SET{infos,#VAL|verifier_generer_aide} +#SET{verifications,#GET{infos}|table_valeur{verifications}} +#SET{options,#GET{infos}|table_valeur{options}} + +[(#ENV{format}|=={brut}|oui)<textarea style="width:100%; height:100%;">] + +Sauter à : <a href="#liste_verifications">Toutes les vérifications</a>, <a href="#liste_options_verifications">Toutes les options</a> + +<h2 class="h2 spip">Utilisation des options</h2> +<B_options_tableau> +<div style="overflow:auto;"> +<table class="spip"> +<thead> + <tr class="first_row"> + <th>Options \ Vérifications</th> + <BOUCLE_verifications_tableau_th(POUR){tableau #GET{verifications}}> + <th><a href="#verification_#CLE">#CLE</a></th> + </BOUCLE_verifications_tableau_th> + </tr> +</thead> +<tbody> + <BOUCLE_options_tableau(POUR){tableau #GET{options}}> + <tr class="tr_liste [(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})]"> + <th><a href="#option_#CLE">#CLE</a></th> + <BOUCLE_verifications_tableau(POUR){tableau #GET{verifications}}> + <td>[(#CLE|in_array{[(#_options_tableau:VALEUR|table_valeur{utilisee_par})]}|?{'X','-'})]</td> + </BOUCLE_verifications_tableau> + </tr> + </BOUCLE_options_tableau> +</tbody> +</table> +</div> +</B_options_tableau> + +<h2 class="h2 spip" id="liste_verifications">Toutes les vérifications</h2> +<BOUCLE_verifications(POUR){tableau #GET{verifications}}> +<h3 class="h3 spip" id="verification_#CLE">[(#VALEUR|table_valeur{titre})] (#CLE)</h3> +<p class="description"> + <strong>Description :</strong> [(#VALEUR|table_valeur{description})] +</p> +<p class="options"> + <strong>Options :</strong> + <BOUCLE_options_verification(POUR){tableau #VALEUR|table_valeur{options}}{", "}><a href="#option_#CLE">#CLE</a></BOUCLE_options_verification> +</p> +</BOUCLE_verifications> + +<h2 class="h2 spip" id="liste_options_verifications">Toutes les options</h2> +<BOUCLE_options(POUR){tableau #GET{options}}> +[(#SET{label, [(#VALEUR|table_valeur{label}|sinon{[(#VALEUR|table_valeur{label_case})]})]})] +<h3 class="h3 spip" id="option_#CLE">[(#GET{label}|?{#GET{label} [ ((#CLE))], #CLE})]</h3> +[<p class="description"> + <strong>Description :</strong> (#VALEUR|table_valeur{explication}|sinon{[(#VALEUR|table_valeur{label}|?{[(#VALEUR|table_valeur{label_case})]})]}) +</p>] +<B_utilisee_par> +<p class="utilisee_par"> + <strong>Utilisée par :</strong> + <BOUCLE_utilisee_par(POUR){tableau #VALEUR|table_valeur{utilisee_par}}{", "}><a href="#verification_#VALEUR">#VALEUR</a></BOUCLE_utilisee_par> +</p> +</B_utilisee_par> +<B_choix> +<p class="choix_possibles"> + <strong>Choix possibles :</strong> + <ul class="spip"> + <BOUCLE_choix(POUR){tableau #VALEUR|table_valeur{datas}}> + <li>"#CLE" : #VALEUR</li> + </BOUCLE_choix> + </ul> +</p> +</B_choix> +</BOUCLE_options> + +[(#ENV{format}|=={brut}|oui)</textarea>] diff --git a/aide/verifier_fonctions.php b/aide/verifier_fonctions.php new file mode 100644 index 0000000..79d7ab5 --- /dev/null +++ b/aide/verifier_fonctions.php @@ -0,0 +1,39 @@ +<?php + +// Sécurité +if (!defined('_ECRIRE_INC_VERSION')) return; + +include_spip('inc/verifier'); +include_spip('inc/saisies'); + +/* + * Génère une page d'aide listant toutes les saisies et leurs options + */ +function verifier_generer_aide(){ + // On a déjà la liste par saisie + $verifications = verifier_lister_disponibles(); + + // On construit une liste par options + $options = array(); + foreach ($verifications as $type_verif=>$verification){ + $options_verification = saisies_lister_par_nom($verification['options'], false); + foreach ($options_verification as $nom=>$option){ + // Si l'option n'existe pas encore + if (!isset($options[$nom])){ + $options[$nom] = _T_ou_typo($option['options']); + } + // On ajoute toujours par qui c'est utilisé + $options[$nom]['utilisee_par'][] = $type_verif; + } + ksort($options_verification); + $verifications[$type_verif]['options'] = $options_verification; + } + ksort($options); + + return array( + 'verifications' => $verifications, + 'options' => $options + ); +} + +?> diff --git a/lang/verifier_fr.php b/lang/verifier_fr.php index cefdf9f..9be8a77 100644 --- a/lang/verifier_fr.php +++ b/lang/verifier_fr.php @@ -7,6 +7,12 @@ $GLOBALS[$GLOBALS['idx_lang']] = array( // E 'erreur_code_postal' => 'Ce code postal est incorrect.', + 'erreur_comparaison_egal' => 'La valeur doit être égale au champ "@nom_champ@"', + 'erreur_comparaison_egal_type' => 'La valeur doit être égale et de même type que le champ "@nom_champ@"', + 'erreur_comparaison_grand' => 'La valeur doit être supérieure au champ "@nom_champ@"', + 'erreur_comparaison_grand_egal' => 'La valeur doit être supérieure ou égale au champ "@nom_champ@"', + 'erreur_comparaison_petit' => 'La valeur doit être inférieure au champ "@nom_champ@"', + 'erreur_comparaison_petit_egal' => 'La valeur doit être inférieure ou égale au champ "@nom_champ@"', 'erreur_date' => 'La date n\'est pas valide.', 'erreur_date_format' => 'Le format de la date n\'est pas accepté.', 'erreur_decimal' => 'La valeur doit être un nombre décimal.', diff --git a/plugin.xml b/plugin.xml index 4399ea0..aaed1bb 100644 --- a/plugin.xml +++ b/plugin.xml @@ -5,7 +5,7 @@ [en]Control API </multi> </nom> - <auteur>RastaPopoulos</auteur> + <auteur>[Les Développements Durables->http://www.ldd.fr]</auteur> <icon>images/verifier-128.png</icon> <licence>GPL v3</licence> <version>0.1.9</version> diff --git a/verifier/comparaison_champ.php b/verifier/comparaison_champ.php new file mode 100644 index 0000000..8acde76 --- /dev/null +++ b/verifier/comparaison_champ.php @@ -0,0 +1,45 @@ +<?php + +// Sécurité +if (!defined("_ECRIRE_INC_VERSION")) return; + +/** + * Compare la valeur avec un autre champ du _request(). + * + * @param string $valeur La valeur à vérifier. + * @param array $option Un éventuel tableau d'options. + * @return string Retourne une chaine vide si c'est valide, sinon une chaine expliquant l'erreur. + */ +function verifier_comparaison_champ_dist($valeur, $options=array()){ + include_spip('inc/filtres'); + + // On vérifie qu'on a bien un champ à comparer + if (!$champ = $options['champ'] or !is_scalar($champ)) return true; + else $valeur_champ = _request($champ); + + // On cherche le nom du champ + $nom_champ = $options['nom_champ'] ? $options['nom_champ'] : $champ; + + switch ($options['comparaison']){ + case 'petit': + return $valeur < $valeur_champ ? '' : _T('verifier:erreur_comparaison_petit', array('nom_champ'=>$nom_champ)); + break; + case 'petit_egal': + return $valeur <= $valeur_champ ? '' : _T('verifier:erreur_comparaison_petit_egal', array('nom_champ'=>$nom_champ)); + break; + case 'grand': + return $valeur > $valeur_champ ? '' : _T('verifier:erreur_comparaison_grand', array('nom_champ'=>$nom_champ)); + break; + case 'grand_egal': + return $valeur >= $valeur_champ ? '' : _T('verifier:erreur_comparaison_grand_egal', array('nom_champ'=>$nom_champ)); + break; + case 'egal_type': + return $valeur === $valeur_champ ? '' : _T('verifier:erreur_comparaison_egal_type', array('nom_champ'=>$nom_champ)); + break; + case 'egal': + case default: + return $valeur == $valeur_champ ? '' : _T('verifier:erreur_comparaison_egal', array('nom_champ'=>$nom_champ)); + break; + } +} + -- GitLab