
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