====== 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);