====== Widgets definidos por adaptación ====== Aunque waine dispone de una importante cantidad de widgets predefinidos, también permite a los desarrolladores la implementación de sus propios widgets. Existen dos formas para hacerlo: - [[waine:doc:widgets_definidos_por_adaptación | por adaptación]] - mediante la herencia Cualquiera que sea el método elegido los nuevos widgets se definirán o serán incluidos en el fichero [[waine:file:conf:cpm:userwdg.inc]] ===== Procedimiento general para creación de widgets por herencia ===== El procedimiento para crear un nuevo widget utilizando la herencia consta de los siguientes pasos: - Crear una nueva clase de widget heredando de una de las clases ya existentes, bien una clase básica widget, mwidget, bien de cualquier otro widget definido mediante una clase. - Crear un objeto de la neva clase definida - Registrar el nuevo objeto en el pool de widget disponibles. ==== 1. Crear una nueva clase de widget heredando de una clase existente ==== La herencia en PHP se define empleando la palabra reservada extends. La nueva clase reescribiría los métodos necesarios de la clase padre para definir un nuevo comportamiento. class mleditbox extends widget { function RenderR($IN_name, $IN_value, $IN_fld, $IN_lstval) { return($this->DefaultRender($this->strh,$IN_name, $IN_value, $IN_fld, $IN_lstval).waine_mlstr($IN_value)); } function RenderL($IN_name, $IN_value, $IN_fld, $IN_lstval) { return($this->DefaultRender($this->strl,$IN_name, waine_mlstr($IN_value), $IN_fld, $IN_lstval)); } } ==== 2. Crear un objeto de la nueva clase definida ==== Los objetos en PHP se crean empleando el operador new. Una forma simple de crear un nuevo objeto sería la siguiente: $newwdg=new mleditbox() ; ==== 3. Registrar el nuevo objeto en el pool de widget disponibles ==== Por último queda poner a disposición del sistema el widget creado. Para ello hay que registrar el objeto creado en el pool de widgets del sistema. Esta acción se realiza con la siguiente instrucción: $WDGPOOL->add('mleditbox',$newwdg);