示例#1
0
 function get_molde_subclase()
 {
     $molde = $this->get_molde_vacio();
     $molde->agregar_bloque($this->get_molde_eventos_js());
     $molde->agregar_bloque($this->get_molde_eventos_sobre_fila());
     // Cortes de control
     $molde->agregar(new toba_codigo_separador_php('Configuracion de cortes de control', 'Pantallas'));
     $datos_cortes = rs_ordenar_por_columna($this->datos['_info_cuadro_cortes'], 'orden');
     foreach ($datos_cortes as $corte) {
         //-- Sumarizar cc
         $comentario_param = 'Reemplazar esta línea para cambiar el titulo de la sumarizacion!';
         $comentario = 'Ventana que dado un conjunto de filas de un corte de control permite sumarizarlas de forma personalizada';
         $extra = 'Reemplazar "propia" con algún otro identificador, para distinguir la sumarizacion y poder realizar una por método ';
         $parametros = '@param $filas Arreglo de filas tipo recordset';
         $metodo = new toba_codigo_metodo_php('sumarizar_cc__' . $corte['identificador'] . '__propia', array('$filas'), array($comentario_param, $comentario, $extra, $parametros));
         $metodo->set_doc($comentario);
         $molde->agregar($metodo);
         $molde->ultimo_elemento()->set_contenido('return 0;');
         //-- Cabecera de corte
         $comentario = 'Ventana que permite determinar el titulo cabecera de un corte de control';
         $metodo = new toba_codigo_metodo_php('html_cabecera_cc_contenido__' . $corte['identificador'], array('&$nodo'), array($comentario));
         $metodo->set_doc($comentario);
         $molde->agregar($metodo);
         $molde->ultimo_elemento()->set_contenido('echo \'descripcion\';');
         $molde->agregar(new toba_codigo_metodo_php('html_pie_cc_contenido__' . $corte['identificador'], array('&$nodo')));
         $molde->ultimo_elemento()->set_contenido('echo \'descripcion\';');
         $molde->agregar(new toba_codigo_metodo_php('html_pie_cc_cabecera__' . $corte['identificador'], array('&$nodo')));
         $molde->ultimo_elemento()->set_contenido('return \'descripcion\';');
     }
     return $molde;
 }
 function get_molde_subclase()
 {
     $molde = new toba_codigo_clase($this->get_subclase_nombre(), $this->get_clase_nombre());
     //-- Ini
     $doc = 'Se ejecuta al inicio de todos los request en donde participa el componente';
     $metodo = new toba_codigo_metodo_php('ini', array(), array($doc));
     $metodo->set_doc($doc);
     $molde->agregar($metodo);
     //-- Pre Sinc
     $doc = "Ventana para incluír validaciones (disparar una excepcion) o disparar procesos previo a sincronizar";
     $comentarios = array($doc, "La transacción con la bd ya fue iniciada (si es que hay)");
     $metodo = new toba_codigo_metodo_php('evt__pre_sincronizacion', array(), $comentarios);
     $metodo->set_doc($doc);
     $molde->agregar($metodo);
     //-- Post Sinc
     $doc = "Ventana para incluír validaciones (disparar una excepcion) o disparar procesos posteriores a la sincronización";
     $comentarios = array($doc, "La transacción con la bd aún no fue terminada (si es que hay)");
     $metodo = new toba_codigo_metodo_php('evt__post_sincronizacion', array(), $comentarios);
     $metodo->set_doc($doc);
     $molde->agregar($metodo);
     //-- Pre Elim
     $doc = "Ventana para incluír validaciones (disparar una excepcion) o disparar procesos previo a la eliminación";
     $comentarios = array($doc, "La transacción con la bd ya fue iniciada (si es que hay)");
     $metodo = new toba_codigo_metodo_php('evt__pre_eliminacion', array(), $comentarios);
     $metodo->set_doc($doc);
     $molde->agregar($metodo);
     //-- Post Elim
     $doc = "Ventana para incluír validaciones (disparar una excepcion) o disparar procesos posteriores a la eliminación";
     $comentarios = array($doc, "La transacción con la bd ya fue iniciada (si es que hay)");
     $metodo = new toba_codigo_metodo_php('evt__post_eliminacion', array(), $comentarios);
     $metodo->set_doc($doc);
     $molde->agregar($metodo);
     return $molde;
 }
示例#3
0
 function generar_layout()
 {
     //El archivo original esta en formato Windows CR/LF
     $nombre = toba::proyecto()->get_path_php() . '/varios/line_endings/archivo_windows.php';
     //Verifico que el archivo original tiene el CR
     assert(strrchr(file_get_contents($nombre), 13) !== false);
     $archivo = new toba_archivo_php($nombre);
     $archivo->edicion_inicio();
     $codigo_actual = $archivo->contenido();
     //Verifico que el codigo original no tiene CR al ser cargado en toba_archivo_php
     assert(strrchr($codigo_actual, 13) === false);
     $metodo = new toba_codigo_metodo_php('extender_objeto_js');
     $metodo->set_contenido("alert('soy un alert nuevo'); \n alert(4);");
     $nuevo_codigo = $archivo->codigo_agregar_metodo($codigo_actual, $metodo->get_codigo());
     $archivo->insertar($nuevo_codigo);
     $archivo->insertar_al_final("function cargo_algo(\$id) \n { echo 'Ingrese \$id'; \n}");
     //Verifico que el nuevo codigo que obtuve tampoco tiene CR antes de ser grabado
     assert(strrchr($archivo->contenido(), 13) === false);
     //Aca grabe el archivo
     $archivo->edicion_fin();
     assert(strrchr(file_get_contents($nombre), 13) === false);
     assert(strrchr(file_get_contents($nombre), PHP_EOL) !== false);
     echo 'El test parece que funco!, revirtiendo archivo....';
     $tsvn = new toba_svn();
     $tsvn->revert($nombre);
 }
示例#4
0
 function get_molde_subclase()
 {
     $molde = new toba_codigo_clase($this->get_subclase_nombre(), $this->get_clase_nombre());
     //-- Ini
     $doc = 'Se ejecuta al inicio de todos los request en donde participa el componente';
     $metodo = new toba_codigo_metodo_php('ini', array(), array($doc));
     $metodo->set_doc($doc);
     $molde->agregar($metodo);
     //-- Pre Sinc
     $doc = "Ventana para incluír validaciones (disparar una excepcion) o disparar procesos previo a sincronizar";
     $comentarios = array($doc, "La transacción con la bd ya fue iniciada (si es que hay)");
     $metodo = new toba_codigo_metodo_php('evt__pre_sincronizacion', array(), $comentarios);
     $metodo->set_doc($doc);
     $molde->agregar($metodo);
     //-- Post Sinc
     $doc = "Ventana para incluír validaciones (disparar una excepcion) o disparar procesos posteriores a la sincronización";
     $comentarios = array($doc, "La transacción con la bd aún no fue terminada (si es que hay)");
     $metodo = new toba_codigo_metodo_php('evt__post_sincronizacion', array(), $comentarios);
     $metodo->set_doc($doc);
     $molde->agregar($metodo);
     //-------------------------------------
     $doc = "Ventana de extensión previo a la inserción de un registro durante una sincronización con la base";
     $comentarios = array($doc, '@param mixed $id_registro Clave interna en la estructura $this->datos');
     $metodo = new toba_codigo_metodo_php('evt__pre_insert', array('$id_registro'), $comentarios);
     $metodo->set_doc($doc);
     $molde->agregar($metodo);
     //-------------------------------------
     $doc = "Ventana de extensión posterior a la inserción de un registro durante una sincronización con la base";
     $comentarios = array($doc, '@param mixed $id_registro Clave interna en la estructura $this->datos');
     $metodo = new toba_codigo_metodo_php('evt__post_insert', array('$id_registro'), $comentarios);
     $metodo->set_doc($doc);
     $molde->agregar($metodo);
     //-------------------------------------
     $doc = "Ventana de extensión previo a la actualización de un registro durante una sincronización con la base";
     $comentarios = array($doc, '@param mixed $id_registro Clave interna en la estructura $this->datos');
     $metodo = new toba_codigo_metodo_php('evt__pre_update', array('$id_registro'), $comentarios);
     $metodo->set_doc($doc);
     $molde->agregar($metodo);
     //-------------------------------------
     $doc = "Ventana de extensión posterior a la actualización de un registro durante una sincronización con la base";
     $comentarios = array($doc, '@param mixed $id_registro Clave interna en la estructura $this->datos');
     $metodo = new toba_codigo_metodo_php('evt__post_update', array('$id_registro'), $comentarios);
     $metodo->set_doc($doc);
     $molde->agregar($metodo);
     //-------------------------------------
     $doc = "Ventana de extensión previa al borrado de un registro durante una sincronización con la base";
     $comentarios = array($doc, '@param mixed $id_registro Clave interna en la estructura $this->datos');
     $metodo = new toba_codigo_metodo_php('evt__pre_delete', array('$id_registro'), $comentarios);
     $metodo->set_doc($doc);
     $molde->agregar($metodo);
     //-------------------------------------
     $doc = "Ventana de extensión posterior al borrado de un registro durante una sincronización con la base";
     $comentarios = array($doc, '@param mixed $id_registro Clave interna en la estructura $this->datos');
     $metodo = new toba_codigo_metodo_php('evt__post_delete', array('$id_registro'), $comentarios);
     $metodo->set_doc($doc);
     $molde->agregar($metodo);
     return $molde;
 }
 function get_molde_subclase()
 {
     $molde = $this->get_molde_vacio();
     //-- Validacion
     $doc = "Ventana para validaciones de toda la relación, se ejecuta justo antes de la sincronización";
     $comentarios = array($doc, "El proceso puede ser abortado con un toba_error, el mensaje se muestra al usuario");
     $metodo = new toba_codigo_metodo_php('evt__validar', array(), $comentarios);
     $metodo->set_doc($doc);
     $molde->agregar($metodo);
     return $molde;
 }
示例#6
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;
 }
示例#7
0
 function crear_extension()
 {
     $clase = 'ci' . $this->molde['prefijo_clases'];
     $this->ci->extender($clase, $clase . '.php');
     $metodo = new toba_codigo_metodo_php('ini__operacion');
     $metodo->set_contenido("\$this->dep('datos')->cargar();");
     $this->ci->php()->agregar($metodo);
     $metodo = new toba_codigo_metodo_php('evt__guardar');
     $metodo->set_contenido(array("\$this->dep('datos')->sincronizar();", "\$this->dep('datos')->resetear();", "\$this->dep('datos')->cargar();"));
     $this->ci->php()->agregar($metodo);
     $metodo = new toba_codigo_metodo_php('evt__formulario__modificacion', array('$datos'));
     $metodo->set_contenido("\$this->dep('datos')->procesar_filas(\$datos);");
     $this->ci->php()->agregar($metodo);
     $metodo = new toba_codigo_metodo_php('conf__formulario', array('toba_ei_formulario_ml $componente'));
     $metodo->set_contenido("\$componente->set_datos(\$this->dep('datos')->get_filas());");
     $this->ci->php()->agregar($metodo);
 }
示例#8
0
 /**
  * Permite modificar la forma en que se grafica la pantalla, por defecto un componente sobre el otro
  */
 function generar_layout()
 {
     $nombre = toba::proyecto()->get_path_php() . '/varios/line_endings/archivo_linux.php';
     //Verifico que no tiene el CHR 13 de movida
     assert(strrchr(file_get_contents($nombre), 13) === false);
     $archivo = new toba_archivo_php($nombre);
     $archivo->edicion_inicio();
     $codigo_actual = $archivo->contenido();
     assert(strrchr($codigo_actual, 13) === false);
     $metodo = new toba_codigo_metodo_php('extender_objeto_js');
     $metodo->set_contenido("echo \"alert('soy un alert nuevo');" . "\n" . "alert(4);\"");
     $nuevo_codigo = $archivo->codigo_agregar_metodo($codigo_actual, $metodo->get_codigo());
     $archivo->insertar(toba_archivo_php::codigo_sacar_tags_php($nuevo_codigo));
     //Verifico que el nuevo codigo que obtuve tampoco tiene CR antes de ser grabado
     assert(strrchr($archivo->contenido(), 13) === false);
     //Aca grabe el archivo
     $archivo->edicion_fin();
     assert(strrchr(file_get_contents($nombre), 13) === false);
     assert(strrchr(file_get_contents($nombre), PHP_EOL) !== false);
     $archivo->mostrar();
     echo 'El test parece que funco!, revirtiendo archivo....';
     $tsvn = new toba_svn();
     $tsvn->revert($nombre);
 }
示例#9
0
 function get_bloque_acciones()
 {
     $bloque = array();
     $doc = array();
     $metodo = new toba_codigo_metodo_php('registrar_error_login', array('$usuario', '$ip', '$texto'), $doc);
     $metodo->set_tipo_funcion('static');
     $bloque[] = $metodo;
     $doc = array();
     $metodo = new toba_codigo_metodo_php('bloquear_ip', array('$ip'), $doc);
     $metodo->set_tipo_funcion('static');
     $bloque[] = $metodo;
     $doc = array();
     $metodo = new toba_codigo_metodo_php('bloquear_usuario', array('$usuario'), $doc);
     $metodo->set_tipo_funcion('static');
     $bloque[] = $metodo;
     return $bloque;
 }
示例#10
0
 /**
  * @todo: Falta implementar el reemplazo
  */
 function generar_codigo_js($codigo_existente = '')
 {
     $nombre_metodo_php = 'extender_objeto_js';
     $javascript = '';
     foreach ($this->elementos_js as $elemento) {
         if ($javascript) {
             $javascript .= "\n";
         }
         $javascript .= $elemento->get_codigo();
     }
     if ($javascript) {
         if (!toba_archivo_php::codigo_tiene_metodo($codigo_existente, $nombre_metodo_php)) {
             //--Crea el metodo php
             $separador = new toba_codigo_separador_php('JAVASCRIPT', null, 'grande');
             $separador->identar(1);
             $php = 'echo "' . "\n";
             $php .= $javascript;
             $php .= '";';
             $metodo = new toba_codigo_metodo_php('extender_objeto_js');
             $metodo->set_contenido($php);
             $metodo->identar(1);
             $codigo = $separador->get_codigo() . "\n" . $metodo->get_codigo();
             $this->codigo_php = toba_archivo_php::codigo_agregar_metodo($this->codigo_php, $codigo);
         } else {
             //--Agrega al metodo existente
             $metodo = new toba_codigo_metodo_php('extender_objeto_js');
             $codigo_actual = toba_archivo_php::codigo_get_metodo($this->codigo_php, $nombre_metodo_php);
             //Busca el cerrado del string de javascript
             $pos = strrpos($codigo_actual, '";');
             if ($pos !== false) {
                 $php = toba_archivo_php::codigo_quitar_identacion(substr($codigo_actual, 0, $pos), 2);
                 $php .= $javascript;
                 $php .= toba_archivo_php::codigo_quitar_identacion(substr($codigo_actual, $pos), 2);
                 $metodo->set_contenido($php);
                 $metodo->identar(1);
                 $this->codigo_php = toba_archivo_php::reemplazar_metodo($this->codigo_php, $nombre_metodo_php, $metodo->get_codigo());
             }
         }
     }
 }
示例#11
0
 function get_bloque_css()
 {
     $bloque = array();
     $doc = array();
     $metodo = new toba_codigo_metodo_php('plantillas_css', array(), $doc);
     $metodo->set_contenido('parent::plantillas_css();');
     $bloque[] = $metodo;
     $doc = array();
     $metodo = new toba_codigo_metodo_php('estilos_css', array(), $doc);
     $metodo->set_contenido('parent::estilos_css();');
     $bloque[] = $metodo;
     return $bloque;
 }
示例#12
0
 function get_bloque_cuerpo()
 {
     $bloque = array();
     $doc = array();
     $metodo = new toba_codigo_metodo_php('get_items_vecinos', array(), $doc);
     $metodo->set_contenido("\$items = array();\n" . "foreach(\$this->items_vecinos as \$item) {\n" . "\t\$items[] = array('item_proyecto' => \$item['objeto_proyecto'], 'item' => \$item['item'], 'orden' => \$item['orden']);\n" . "}\nreturn \$items;");
     $bloque[] = $metodo;
     $doc = array();
     $metodo = new toba_codigo_metodo_php('desactivar_items', array('$condiciones'), $doc);
     $metodo->set_contenido("\$items_restantes = \$this->items_vecinos;\n" . "foreach (\$condiciones as \$condicion){\n" . "\tforeach(\$items_restantes as \$key => \$valor) {\n" . "\t\t\$coincide = array_intersect_assoc(\$valor, \$condicion);\n" . "\t\tif (! empty(\$coincide)){\n" . "\t\t\tunset(\$items_restantes[\$key]);\n" . "\t\t}\n" . "\t}\n" . "}\n\$this->items_vecinos = \$items_restantes;");
     $bloque[] = $metodo;
     return $bloque;
 }
示例#13
0
 function get_molde_eventos_sobre_fila()
 {
     $bloque_molde[] = new toba_codigo_separador_php('Config. EVENTOS sobre fila');
     foreach ($this->eventos_sobre_fila() as $evento => $info) {
         $ayuda = "Permite configurar el evento sobre una fila especifica para modificarlo o anularlo";
         $doc = array($ayuda, "@param toba_evento_usuario \$evento Evento diparado", "@param array \$fila Clave de la fila");
         $metodo = new toba_codigo_metodo_php('conf_evt__' . $evento, array('$evento', '$fila'));
         $metodo->set_doc($ayuda);
         $bloque_molde[] = $metodo;
     }
     return $bloque_molde;
 }
示例#14
0
 function get_molde_subclase()
 {
     $molde = new toba_codigo_clase($this->get_subclase_nombre(), $this->get_clase_nombre());
     $ayuda = "Permite modificar la forma en que se grafica la pantalla, por defecto un componente sobre el otro";
     $comentarios = array($ayuda);
     $metodo = new toba_codigo_metodo_php('generar_layout', array(), $comentarios);
     $metodo->set_doc($ayuda);
     $molde->agregar($metodo);
     $php = array();
     $existe_previo = 0;
     foreach ($this->get_lista_dependencias_asociadas() as $dep) {
         if ($existe_previo) {
             $php[] = "echo '<hr />';";
         }
         $php[] = '$this->dep(\'' . $dep . '\')->generar_html();';
         $existe_previo = 1;
     }
     $molde->ultimo_elemento()->set_contenido($php);
     return $molde;
 }
示例#15
0
 function get_molde_vacio()
 {
     $molde = new toba_codigo_clase($this->get_subclase_nombre(), $this->get_clase_extendida_nombre());
     //-- Ini
     $doc = 'Se ejecuta al inicio de todos los request en donde participa el componente';
     $metodo = new toba_codigo_metodo_php('ini', array(), array($doc));
     $metodo->set_doc($doc);
     $molde->agregar($metodo);
     return $molde;
 }
示例#16
0
 protected function generar_formulario($form)
 {
     $form->set_nombre($this->molde['nombre'] . ' - Form');
     //Creo las filas
     $filas = array();
     foreach ($this->molde_abms_fila as $fila) {
         if ($fila['en_form']) {
             $filas[] = $fila;
         }
     }
     $this->generar_efs($form, $filas);
     $this->ci->php()->agregar(new toba_codigo_separador_php('Formulario'));
     //--------------------------------------------------------
     //--- conf__formulario  ----------------------------------
     //--------------------------------------------------------
     $tabla_actual = $this->molde_abms['tabla'];
     $metodo = new toba_codigo_metodo_php('conf__formulario', array('toba_ei_formulario $form'));
     $contenido = array("if (\$this->dep('datos')->esta_cargada()) {", "\t\$form->set_datos(\$this->dep('datos')->tabla('{$tabla_actual}')->get());");
     if ($this->molde_abms['gen_separar_pantallas']) {
         $contenido[] = "} else {";
         $contenido[] = "\t\$this->pantalla()->eliminar_evento('eliminar');";
     }
     $contenido[] = "}";
     $metodo->set_contenido($contenido);
     $this->ci->php()->agregar($metodo);
     //--------------------------------------------------------
     //--- evt__formulario__alta ------------------------------
     //--------------------------------------------------------
     if (!$this->molde_abms['gen_separar_pantallas']) {
         $evento = $form->agregar_evento('alta');
         $evento->en_botonera();
         $evento->set_etiqueta('Alta');
         $evento->set_imagen('nucleo/agregar.gif');
         $evento->maneja_datos();
         $evento->set_predeterminado();
         $evento->set_grupos('no_cargado');
         $metodo = new toba_codigo_metodo_php('evt__formulario__alta', array('$datos'));
         $metodo->set_contenido(array("\$this->dep('datos')->tabla('{$tabla_actual}')->set(\$datos);", "\$this->dep('datos')->sincronizar();", "\$this->resetear();"));
         $this->ci->php()->agregar($metodo);
     }
     //--------------------------------------------------------
     //--- evt__formulario__modificacion ----------------------
     //--------------------------------------------------------
     $evento = $form->agregar_evento('modificacion');
     $evento->maneja_datos();
     $metodo = new toba_codigo_metodo_php('evt__formulario__modificacion', array('$datos'));
     if ($this->molde_abms['gen_separar_pantallas']) {
         $evento->implicito();
         $metodo->set_contenido(array("\$this->dep('datos')->tabla('{$tabla_actual}')->set(\$datos);"));
     } else {
         $evento->en_botonera();
         $evento->set_predeterminado();
         $evento->set_etiqueta('Modificar');
         $evento->set_imagen('refrescar.png');
         $evento->set_grupos('cargado');
         $metodo->set_contenido(array("\$this->dep('datos')->tabla('{$tabla_actual}')->set(\$datos);", "\$this->dep('datos')->sincronizar();", "\$this->resetear();"));
     }
     $this->ci->php()->agregar($metodo);
     //--------------------------------------------------------
     //--- evt__formulario__baja ------------------------------
     //--------------------------------------------------------
     if (!$this->molde_abms['gen_separar_pantallas']) {
         $evento = $form->agregar_evento('baja');
         $evento->set_etiqueta('Eliminar');
         $evento->en_botonera();
         $evento->set_imagen('borrar.gif');
         $evento->set_estilo('ei-boton-baja');
         $evento->set_confirmacion($this->confirmacion_eliminar);
         $evento->set_grupos('cargado');
         $metodo = new toba_codigo_metodo_php('evt__formulario__baja');
         $metodo->set_contenido(array("\$this->dep('datos')->eliminar_todo();", "\$this->resetear();"));
         $this->ci->php()->agregar($metodo);
     }
     //--------------------------------------------------------
     //--- evt__formulario__cancelar --------------------------
     //--------------------------------------------------------
     if (!$this->molde_abms['gen_separar_pantallas']) {
         $evento = $form->agregar_evento('cancelar');
         $evento->set_etiqueta('Cancelar');
         $evento->en_botonera();
         $evento->set_imagen('deshacer.png');
         if ($this->molde_abms['gen_separar_pantallas']) {
             $evento->set_grupos(array('cargado', 'no_cargado'));
         } else {
             $evento->set_grupos('cargado');
         }
         $metodo = new toba_codigo_metodo_php('evt__formulario__cancelar');
         $metodo->set_contenido(array("\$this->resetear();"));
         $this->ci->php()->agregar($metodo);
     }
     //--------------------------------------------------------
     //--- Metodo para resetear la operacion
     //--------------------------------------------------------
     $metodo = new toba_codigo_metodo_php('resetear');
     $php[] = "\$this->dep('datos')->resetear();";
     if ($this->molde_abms['gen_separar_pantallas']) {
         $php[] = "\$this->set_pantalla('pant_seleccion');";
     }
     $metodo->set_contenido($php);
     $this->ci->php()->agregar($metodo);
 }
示例#17
0
 /**
  * Crea un caso de test de personalización a partir de la salida de compara_foto_schema
  */
 function opcion__crear_caso_test()
 {
     $nombre = $this->consola->dialogo_ingresar_texto('Ingrese el nombre del caso de test');
     $archivo_fuente = self::get_path_comparacion();
     $array = $this->salida_como_array($archivo_fuente);
     $clase = new toba_codigo_clase("{$nombre}", "toba_pers_caso_test");
     $prop = new toba_codigo_propiedad_php('$sql', 'protected', '', $array);
     $metodo = new toba_codigo_metodo_php('get_descripcion', array(), array('Descripción del caso de test'));
     $metodo->set_contenido("return '';");
     $clase->agregar($prop);
     $clase->agregar($metodo);
     $path = toba_dir() . "/proyectos/toba_testing/personalizacion/tests/{$nombre}.php";
     $clase->guardar($path);
     $this->consola->mensaje("El caso de test se guardó en {$path}");
 }
示例#18
0
    function get_molde_subclase()
    {
        $molde = $this->get_molde_vacio();
        //************** Elementos PROPIOS *************
        //-- Ini operacion
        $doc = array();
        $doc[] = "Se ejecuta por única vez cuando el componente entra en la operación.";
        $doc[] = "Es útil por ejemplo para inicializar un conjunto de variables de sesion y evitar el chequeo continuo de las mismas";
        $doc[] = "Hay situaciones en las que su ejecución no coincide con el instante inicial de operación:";
        $doc[] = " - Si el componente es un ci dentro de otro ci, recién se ejecuta cuando entra a la operacion que no necesariamente es al inicio, si por ejemplo se encuentra en la 3er pantalla del ci principal.";
        $doc[] = " - Si se ejecuta una limpieza de memoria (comportamiento por defecto del evt__cancelar)";
        $metodo = new toba_codigo_metodo_php('ini__operacion', array(), $doc);
        $metodo->set_doc('[api:Componentes/Eis/toba_ci#ini__operacion Ver doc]');
        $molde->agregar($metodo);
        //-- Final
        $doc = "Ventana de extensión previa a la destrucción del componente, al final de la atención de los servicios";
        $metodo = new toba_codigo_metodo_php('fin', array(), array($doc));
        $metodo->set_doc($doc);
        $molde->agregar($metodo);
        $molde->agregar(new toba_codigo_separador_php('Configuraciones', 'Configuracion', 'grande'));
        //-- Conf
        $doc = array();
        $doc[] = "Ventana que se ejecuta al inicio de la etapa de configuración. Antes de la configuración de la pantalla y sus componentes";
        $doc[] = "Se utiliza por ejemplo para determinar qué pantalla mostrar, eliminar tabs, etc.";
        $metodo = new toba_codigo_metodo_php('conf', array(), $doc);
        $metodo->set_doc('[api:Componentes/Eis/toba_ci#conf Ver doc]');
        $molde->agregar($metodo);
        //-- Configuracion de pantallas -----------
        $datos_pantallas = rs_ordenar_por_columna($this->datos['_info_ci_me_pantalla'], 'orden');
        foreach ($datos_pantallas as $pantalla) {
            $doc = array();
            $doc[] = 'Ventana de extensión para configurar la pantalla. Se ejecuta previo a la configuración de los componentes pertenecientes a la pantalla ';
            $doc[] = 'por lo que es ideal por ejemplo para ocultarlos en base a una condición dinámica, ej. $pant->eliminar_dep("tal") ';
            $doc[] = '@param toba_ei_pantalla $pantalla';
            $metodo = new toba_codigo_metodo_php('conf__' . $pantalla['identificador'], array('toba_ei_pantalla $pantalla'), $doc);
            $metodo->set_doc(implode("\n", $doc));
            $molde->agregar($metodo);
            //Aca incluyo los metodos de entrada y salida de pantallas.
            $doc = array();
            $doc[] = 'Ventana de extension para ejecutar controles antes de entrar a la pagina.';
            $doc[] = 'Se ejecuta luego de lanzar los eventos del ci.';
            $doc[] = 'Si se lanza una excepcion se evita el cambio de pantalla.';
            $doc[] = '[wiki:Referencia/Objetos/ci#Controlandolaentradaylasalida Ver más]';
            $nombre_metodo_entrada = 'evt__' . $pantalla['identificador'] . '__entrada';
            $metodo = new toba_codigo_metodo_php($nombre_metodo_entrada, array(), $doc);
            $metodo->set_doc(implode("\n", $doc));
            $molde->agregar($metodo);
            $doc = array();
            $doc[] = 'Ventana de extension para ejecutar controles antes de salir de la pagina.';
            $doc[] = 'Se ejecuta luego de lanzar los eventos del ci.';
            $doc[] = 'Si se lanza una excepcion se evita el cambio de pantalla.';
            $doc[] = '[wiki:Referencia/Objetos/ci#Controlandolaentradaylasalida Ver más]';
            $nombre_metodo_salida = 'evt__' . $pantalla['identificador'] . '__salida';
            $metodo = new toba_codigo_metodo_php($nombre_metodo_salida, array(), $doc);
            $metodo->set_doc(implode("\n", $doc));
            $molde->agregar($metodo);
        }
        //-- Post Configurar
        $doc = "Ventana para insertar lógica de la configuración del ci y sus dependencias";
        $metodo = new toba_codigo_metodo_php('post_configurar', array(), array($doc));
        $metodo->set_doc($doc);
        $molde->agregar($metodo);
        //-- Eventos propios ----------------------
        if (count($this->eventos_predefinidos()) > 0) {
            $molde->agregar(new toba_codigo_separador_php('Eventos', null, 'grande'));
            foreach ($this->eventos_predefinidos() as $evento => $info) {
                if ($info['info']['accion'] != 'V') {
                    //No es Vinculo
                    if ($evento == 'cancelar') {
                        $doc = array("Originalmente este método limpia las variables y definiciones del componente, y en caso de exisitr un CN asociado ejecuta su cancelar. Para mantener este comportamiento llamar a parent::evt__cancelar");
                    } elseif ($evento == 'procesar') {
                        $doc = array("Originalmente este método si existe un CN asociado ejecuta su procesar. Para mantener este comportamiento llamar a parent::evt__procesar");
                    } else {
                        $doc = array("Atrapa la interacción del usuario a través del botón asociado. El método no recibe parámetros");
                    }
                    $metodo = new toba_codigo_metodo_php('evt__' . $evento, array(), $doc);
                    $metodo->set_doc(implode("\n", $doc));
                    $molde->agregar($metodo);
                }
            }
        }
        //-- Post Eventos
        $doc = "Ventana que se ejecuta una vez que todos los eventos se han disparado para este objeto";
        $metodo = new toba_codigo_metodo_php('post_eventos', array(), array($doc));
        $metodo->set_doc($doc);
        $molde->agregar($metodo);
        //**************** DEPENDENCIAS ***************
        if (count($this->subelementos) > 0) {
            foreach ($this->subelementos as $id => $elemento) {
                $es_ei = $elemento instanceof toba_ei_info && !$elemento instanceof toba_ci_info;
                $rol = $elemento->rol_en_consumidor();
                if ($es_ei) {
                    $molde->agregar(new toba_codigo_separador_php($rol, null, 'grande'));
                    //Metodo de CONFIGURACION
                    $tipo = $elemento->get_clase_nombre_final();
                    $nombre_instancia = $elemento->get_nombre_instancia_abreviado();
                    $metodo = new toba_codigo_metodo_php('conf__' . $rol, array($tipo . ' $' . $nombre_instancia), $elemento->get_comentario_carga());
                    $metodo->set_grupo($rol);
                    $ei = get_class($elemento);
                    $ei = substr($ei, 5, strlen($ei) - 10);
                    $metodo->set_doc("Ventana para configurar al componente. Por lo general se le brindan datos a través del método <pre>set_datos(\$datos)</pre>. \n\t\t\t\t\t\t\t\t\t\t[wiki:Referencia/Objetos/{$ei}#Configuraci%C3%B3n Ver más]");
                    $molde->agregar($metodo);
                    //Eventos predefinidos del elemento
                    if (count($elemento->eventos_predefinidos()) > 0) {
                        foreach ($elemento->eventos_predefinidos() as $evento => $info) {
                            $metodo = new toba_codigo_metodo_php('evt__' . $rol . '__' . $evento, $info['parametros'], $info['comentarios']);
                            $metodo->set_grupo($rol);
                            $metodo->set_doc('Atrapa la interacción del usuario con el botón asociado a la dependencia. 
												Recibe por parámetro los datos que acarrea el evento, por ejemplo si es un formulario los datos del mismo.
												[wiki:Referencia/Eventos#Listeners Ver más]');
                            $molde->agregar($metodo);
                            //Si es evento sobre fila brindo la oportunidad de configurarlo (caso ML y Cuadro)
                            if (isset($info['info']['sobre_fila']) && $info['info']['sobre_fila'] == 1) {
                                $nombre = 'conf_evt__' . $rol . '__' . $evento;
                                $parametros = array('toba_evento_usuario $evento', '$fila');
                                $doc = array();
                                $doc[] = 'Permite configurar el evento por fila.';
                                $doc[] = 'Útil para decidir si el evento debe estar disponible o no de acuerdo a los datos de la fila';
                                $doc[] = "[wiki:Referencia/Objetos/{$ei}#Filtradodeeventosporfila Ver más]";
                                //Agrego el metodo correspondiente para la configuracion del evento
                                $metodo = new toba_codigo_metodo_php($nombre, $parametros, $doc);
                                $metodo->set_doc(implode("\n", $doc));
                                $metodo->set_grupo($rol);
                                $molde->agregar($metodo);
                            }
                        }
                    }
                }
            }
        }
        //***************** JAVASCRIPT *****************
        $molde->agregar_bloque($this->get_molde_eventos_js());
        return $molde;
    }
示例#19
0
 function get_molde_subclase()
 {
     $molde = $this->get_molde_vacio();
     //-- Validar Ingreso
     $doc = "Ventana de validacion que se invoca cuando se crea o modifica una fila en memoria. Lanzar una excepcion en caso de error";
     $comentarios = array($doc, '@param array $fila Datos de la fila', '@param mixed $id Id. interno de la fila, si tiene (en el caso modificacion de la fila)');
     $metodo = new toba_codigo_metodo_php('evt__validar_ingreso', array('$fila', '$id=null'), $comentarios);
     $metodo->set_doc($doc);
     $molde->agregar($metodo);
     //-- Validar Foña
     $doc = "Ventana de validacion que se invoca antes de sincronizar una fila con la base";
     $comentarios = array($doc, "El proceso puede ser abortado con un toba_error, el mensaje se muestra al usuario", '@param array $fila Asociativo clave-valor de la fila a validar');
     $metodo = new toba_codigo_metodo_php('evt__validar_fila', array('$fila'), $comentarios);
     $metodo->set_doc($doc);
     $molde->agregar($metodo);
     return $molde;
 }
示例#20
0
 /**
  * @return toba_codigo_metodo_php
  */
 function crear_metodo_consulta($nombre, $sql, $parametros = null)
 {
     $param_metodo = isset($parametros) ? array('$filtro=array()') : array();
     $metodo = new toba_codigo_metodo_php($nombre, $param_metodo);
     $fuente = $this->get_fuente();
     $sentencia_consulta = "return toba::db('{$fuente}')->consultar(\$sql);";
     if (!isset($parametros)) {
         $php = "\$sql = \"{$sql}\";" . "\n" . $sentencia_consulta;
     } else {
         $php = "\$where = array();" . "\n";
         foreach ($parametros as $id => $operador) {
             $php .= "if (isset(\$filtro['{$id}'])) {" . "\n";
             if ($operador == 'LIKE' || $operador == 'ILIKE') {
                 $php .= "\t\$where[] = \"{$id} {$operador} \".quote(\"%{\$filtro['{$id}']}%\");" . "\n";
             } else {
                 $php .= "\t\$where[] = \"{$id} {$operador} \".quote(\$filtro['{$id}']);" . "\n";
             }
             $php .= "}" . "\n";
         }
         $php .= "\$sql = \"{$sql}\";" . "\n";
         $php .= "if (count(\$where)>0) {" . "\n";
         $php .= "\t\$sql = sql_concatenar_where(\$sql, \$where);" . "\n";
         $php .= "}" . "\n";
         $php .= $sentencia_consulta;
     }
     $metodo->set_contenido($php);
     return $metodo;
 }