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); }
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); }
/** * 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); }
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; }
/** * @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()); } } } }
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; }
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); }
/** * 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}"); }
function get_bloque_perfiles() { $bloque = array(); $doc = array(); $metodo = new toba_codigo_metodo_php('get_perfiles_funcionales', array(), $doc); $metodo->set_contenido('return array();'); $bloque[] = $metodo; $doc = array(); $metodo = new toba_codigo_metodo_php('get_restricciones_funcionales', array('$perfiles = null'), $doc); $metodo->set_contenido('return array();'); $bloque[] = $metodo; $doc = array(); $metodo = new toba_codigo_metodo_php('get_perfil_datos', array(), $doc); $bloque[] = $metodo; return $bloque; }
/** * @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; }