예제 #1
0
 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;
 }
예제 #2
0
 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;
 }