Ressources Spip-Agora Clever Age

Gestion de contraintes sur les Champs du Back-Office, le 23 septembre 2004

Une nouvelle fonctionnalité existe dans spip-agora, elle impacte le Back Office. Elle permet d’appliquer des conditions sur les champs des articles et rubriques au moment de leur saisie. Ces règles ne sont pas bloquantes dans la conception d’un article, mais indiquent à chaque visualisation qu’il existe un problème si toutes les règles ne sont pas respectées.

Une liste de règles est fournies de base :
- le contrôle du nombre de caractères d’un champs
- l’obligation de renseigner les champs le renseignement d’un champs

Cette liste n’est pas exhaustive et il est assez simple d’en créer de nouvelles.

La définition d’une nouvelle règle se fait par l’implementation d’une nouvelle classe héritée de la classe Filtre. Cette dernière doit implémenter les fonctions _applyRule et _getErrMsg.

_applyRule est la méthode qui applique la règle
_getErrMsg est la méthode qui renvoi le bon message d’erreur en fonction du résultat de l’application de la règle

Exemple avec le fichier required.php dans ecrire/include/typologie/ :
<?php
require_once dirname(__FILE__)."/Filter.php";

class 
Required extends Filter {
    
         
    
// {{{ Constructor
    
    
function Required() {
    }
    
// }}}
    
    
    // {{{ applyRule
    
function _applyRule() {
        if(!
$this->_ruleValue) {
            return 
true;
        } else {
            if (
$this->_fieldContent == "") {
                return 
false;
            } else {
                return 
true;
            }
        }
    }
    
    
// }}}
    
    // {{{ _getErrMsg
    
function _getErrMsg() {
        return 
_T("err_required",array("fieldName"=>$this->_fieldName));
    }
    
// }}}
}
?>

Le fichier mes_contraintes.php contient l’ensemble des règles à appliquer, dans un tableau

Exemple :
<?php
$GLOBALS
['aConstraints'] = 
array(
"article"=>array(
  
"all"=>array(
    
"Surtitre"=>array("Required"=>true,"Size"=>"sup20"),
    
"Titre"=>array("Required"=>true,"Size"=>"sup20"),
    )                        
  ),
  
"-1"=>array(
    
"Surtitre"=>array("Required"=>false,"Size"=>"sup20"),
    
"Titre"=>array("Required"=>true,"Size"=>"sup25")
  )
);
?>

Cette fonctionnalité est disponible depuis la version 1.2.2 de SPIP-AGORA