Le 30 juin 2011 09:51, Thomas <[email protected]> a écrit : > > > Le 30 juin 2011 09:47, Dsls <[email protected]> a écrit : > > > 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... >> > > Certes, tu as raison. Je vais faire la modif :) >
Yo Bruno! Voilà, je me rappelle pourquoi j'avais fait comme ça est c'est une super bonne raison: la rétro compatibilité! :D Vu que je viens de déclarer la classe adminGenericList en abstrait, tous les plugins qui l'utilisent (comme daInstaller) doivent obligatoirement modifier leurs codes pour ajouter la fonction abstraite setColumns() avant le déploiement de la 2.4 sinon: BOOOOOM! Tu vois le truc? ;) -- Tomtom aka Thomas
_______________________________________________ Dev mailing list [email protected] http://ml.dotclear.org/listinfo/dev
