> Si on faisait comme tu le préconises, cela veux dire que lorsque quelqu'un
> crée une nouvelle liste, il devra y placer son constructeur ainsi que ne pas
> oublier de créer son behavior. D'une, ça fait plus de code pour le dev (bon
> c'est une ligne je sais :P) et de deux, il peux très bien oublier de le
> faire et ainsi priver d'autres plugins de rajouter leurs propres colonnes.
>
> Tu vois l'idée?
Oui, mais ça ne me plaît pas... une classe générique doit rester
générique. Si elle contient des spécificités de chacun de ses
héritiers, ça casse le modèle.
On peut faire différemment : dans ton constructeur admingeneric list, tu fais :
public function __construct($core,$rs,$rs_count)
{
$this->core =& $core;
$this->rs =& $rs;
$this->rs_count = $rs_count;
$this->context = get_class($this);
$this->columns = array();
$this->form_prefix = 'col_%s';
$this->form_trigger = 'add_filter';
$this->html_prev = __('«prev.');
$this->html_next = __('next»');
$this->setColumns();
$core->callBehavior('adminGenericListConstruct',$this);
$this->setColumnsVisibility();
}
abstract protected function setColumns() {}
et chaque classe fille surcharge alors setColumns en ajoutant ses
propres colonnes. On garde alors le behavior générique (on peut même
l'appeler plus simplement adminListConstruct), et tout baigne...
--
Bruno
_______________________________________________
Dev mailing list
[email protected]
http://ml.dotclear.org/listinfo/dev