function get_molde_subclase($multilinea = false) { $molde = $this->get_molde_vacio(); // Redefinicion del LAYOUT $ayuda = "Permite modificar la forma en que se grafica el formulario, por defecto un ef sobre el otro"; $doc = array($ayuda); $metodo = new toba_codigo_metodo_php('generar_layout', array(), $doc); $metodo->set_doc($ayuda); $molde->agregar($metodo); $php = array(); foreach ($this->datos['_info_filtro_col'] as $ef => $info) { $php[] = '$this->generar_html_ef(\'' . $info['nombre'] . '\');'; } $molde->ultimo_elemento()->set_contenido($php); //--Javascript $molde->agregar_bloque($this->get_molde_eventos_js()); $molde->agregar(new toba_codigo_separador_js('Validacion general')); //Validar datos $doc = array("Validación general del formulario", "Retornar true/false para controlar la validación", "Usar notificacion.agregar() para mostrar mensajes al usuario"); $metodo = new toba_codigo_metodo_js('evt__validar_datos', array(), $doc); $metodo->set_doc("Validación general del formulario"); $molde->agregar($metodo); if (count($this->datos['_info_filtro_col'])) { //-- Procesamiento de EFs $doc = array("Método que se invoca al cambiar el valor del ef en el cliente", "Se dispara inicialmente al graficar la pantalla, enviando en true el primer parámetro"); $molde->agregar(new toba_codigo_separador_js('Procesamiento de EFs')); foreach ($this->datos['_info_filtro_col'] as $ef => $info) { $parametros = array('es_inicial'); if ($multilinea) { $parametros[] = 'fila'; } $metodo = new toba_codigo_metodo_js('evt__' . $info['nombre'] . '__procesar', $parametros, $doc); $metodo->set_doc("Método que se invoca al cambiar el valor del ef en el cliente"); $molde->agregar($metodo); } //-- Validacion de EFs $molde->agregar(new toba_codigo_separador_js('Validacion de EFs')); $doc = array("Validación puntual de un ef en el cliente", "Retornar true/false para controlar la validación", "Usar this.ef(id).set_error(mensaje) para mostrar un error contextual al campo"); foreach ($this->datos['_info_filtro_col'] as $ef => $info) { $parametros = $multilinea ? array('fila') : array(); $metodo = new toba_codigo_metodo_js('evt__' . $info['nombre'] . '__validar', $parametros, $doc); $metodo->set_doc("Validación puntual de un ef en el cliente"); $molde->agregar($metodo); } } return $molde; }
function get_molde_eventos_js() { $bloque_molde[] = new toba_codigo_separador_js('Eventos'); foreach ($this->eventos_predefinidos() as $evento => $info) { //$info['info'] no esta seteado en los eventos predefinidos agregados a mano if (isset($info['info']) && !$info['info']['implicito']) { //Excluyo los implicitos // Atrapar evento en JS if ($info['info']['accion'] == 'V') { //Vinculo $metodo = new toba_codigo_metodo_js('modificar_vinculo__' . $evento, array('id_vinculo')); $metodo->set_doc("Permite modificar el destino o parámetros de un vínculo en javascript. [wiki:Referencia/Eventos/Vinculo#ExtensionenJavascript Ver doc]"); $bloque_molde[] = $metodo; } else { $metodo = new toba_codigo_metodo_js('evt__' . $evento); $metodo->set_doc("Atrapa en javascript la interacción del usuario con el evento. \n\t\t\t\t\t\t\t\t\t\tSe puede parar la propagación del evento retornando <strong>false</strong> en la extensión.\n\t\t\t\t\t\t\t\t\t\t[wiki:Referencia/Eventos#Listeners Ver más]"); $bloque_molde[] = $metodo; } } } return $bloque_molde; }