function cargar_info($editable = null) { //Carga el EDITABLE que se va a manejar dentro de la ZONA $sql = ' SELECT o.*, o.subclase_archivo as archivo, c.icono as clase_icono, c.editor_proyecto as clase_editor_proyecto, c.editor_item as clase_editor, c.instanciador_proyecto as clase_instanciador_proyecto, c.instanciador_item as clase_instanciador, c.archivo as clase_archivo, c.plan_dump_objeto as clase_plan_sql, c.vinculos as clase_vinculos FROM apex_objeto o, apex_clase c WHERE o.clase = c.clase AND o.proyecto=' . quote($this->editable_id[0]) . ' AND o.objeto=' . quote($this->editable_id[1]); $rs = consultar_fuente($sql); if (empty($rs)) { echo ei_mensaje('ZONA-OBJETO: El editable solicitado no existe', 'info'); return false; } else { $this->editable_info = current($rs); $this->editable_id = array($this->editable_id[0], $this->editable_id[1]); $this->editable_cargado = true; return true; } }
function generar_layout() { $solicitud = $this->controlador->get_solicitud(); if (isset($solicitud)) { $this->mostrar_solicitud($this->controlador->get_solicitud()); } else { echo ei_mensaje('No hay solicitudes cronometradas', 'info'); } }
function analizar() { toba_editor::iniciar_contexto_proyecto_cargado(); require_once $this->meta_clase->get_clase_archivo(); $this->archivo->incluir(); try { $molde = $this->meta_clase->get_molde_subclase(); $molde->set_muestra_analisis(new ReflectionClass($this->nombre())); return $molde->get_analisis(); } catch (Exception $e) { echo ei_mensaje("No se encuentra la clase " . $this->nombre() . " en este archivo.", "error"); } }
function cargar_info($editable = null) { //Carga el EDITABLE que se va a manejar dentro de la ZONA $sql = ' SELECT * FROM apex_usuario WHERE usuario=' . quote($this->editable_id); $rs = toba::db()->consultar($sql); if (!$rs) { echo ei_mensaje('ZONA-USUARIO: El editable solicitado no existe', 'info'); return false; } else { $this->editable_info = $rs[0]; //ei_arbol($this->editable_info,"EDITABLE"); return true; } }
function cargar_info($editable = null) { //Carga el EDITABLE que se va a manejar dentro de la ZONA $sql = ' SELECT i.* FROM apex_item i WHERE i.proyecto=' . quote($this->editable_id[0]) . ' AND item=' . quote($this->editable_id[1]) . ';'; $rs = toba::db()->consultar($sql); if (!$rs) { echo ei_mensaje('ZONA-ITEM: El editable solicitado no existe', 'info'); return false; } else { $this->editable_info = $rs[0]; //ei_arbol($this->editable_info,"EDITABLE"); $this->editable_id = array($this->editable_id[0], $this->editable_id[1]); $this->editable_cargado = true; return true; } }
function cargar_info($editable = null) { //Carga el EDITABLE que se va a manejar dentro de la ZONA $sql = ' SELECT descripcion FROM apex_fuente_datos WHERE proyecto=' . quote($this->editable_id[0]) . ' AND fuente_datos=' . quote($this->editable_id[1]) . ';'; //echo $sql; $rs = toba::db()->consultar($sql); if (!$rs) { echo ei_mensaje('ZONA-FUENTE: El editable solicitado no existe', 'info'); return false; } else { $this->editable_info = $rs[0]; //ei_arbol($this->editable_info,"EDITABLE"); $this->editable_cargado = true; return true; } }
/** * Genera el html que el cuadro muestra cuando no tiene datos cargados * @param string $texto Texto a mostrar en base a la definición del componente */ function html_mensaje_cuadro_vacio($texto) { $this->_cuadro->resetear_claves_enviadas(); $info_cuadro = $this->_cuadro->get_informacion_basica_cuadro(); $colapsado = $this->_cuadro->es_cuadro_colapsado(); $objeto_js = $this->_cuadro->get_id_objeto_js(); $this->html_generar_campos_hidden(); $ancho = isset($info_cuadro["ancho"]) ? $info_cuadro["ancho"] : ""; //-- Tabla BASE $ancho = convertir_a_medida_tabla($ancho); echo "\n<table class='ei-base ei-cuadro-base' {$ancho}>\n"; echo "<tr><td style='padding:0;'>\n"; echo $this->get_html_barra_editor(); $this->generar_html_barra_sup(null, true, "ei-cuadro-barra-sup"); $ancho = isset($info_cuadro["ancho"]) ? $info_cuadro["ancho"] : ""; $colapsado = isset($colapsado) && $colapsado ? "display:none;" : ''; echo "<div class='ei-cuadro-scroll ei-cuadro-cuerpo' style='width: {$ancho}; {$colapsado}' id='cuerpo_{$objeto_js}'>\n"; echo ei_mensaje($texto); if ($this->_cuadro->hay_botones() && $this->_cuadro->botonera_abajo()) { $this->generar_botones(); } echo '</div></td></tr></table>'; }
function obtener_html($mostrar_cabecera = true, $titulo = null) { //Reproduccion del titulo if (isset($titulo)) { $this->memoria["titulo"] = $titulo; $this->memorizar(); } else { if (isset($this->memoria["titulo"])) { $titulo = $this->memoria["titulo"]; $this->memorizar(); } } //Manejo del EOF if ($this->filas == 0) { //La consulta no devolvio datos! if ($this->info_cuadro["eof_invisible"] != 1) { if (trim($this->info_cuadro["eof_customizado"]) != "") { echo ei_mensaje($this->info_cuadro["eof_customizado"]); } else { echo ei_mensaje("La consulta no devolvio datos!"); } } } else { if (!($ancho = $this->info_cuadro["ancho"])) { $ancho = "80%"; } //echo "<br>\n"; //--Scroll if ($this->info_cuadro["scroll"]) { $ancho = isset($this->info_cuadro["ancho"]) ? $this->info_cuadro["ancho"] : "500"; $alto = isset($this->info_cuadro["alto"]) ? $this->info_cuadro["alto"] : "auto"; echo "<div style='overflow: scroll; height: {$alto}; width: {$ancho}; border: 1px inset; padding: 0px;'>"; // echo "<table class='tabla-0'>\n"; } else { $ancho = isset($this->info_cuadro["ancho"]) ? $this->info_cuadro["ancho"] : "100"; // echo "<table width='$ancho' class='tabla-0'>\n"; } echo "<table class='objeto-base' width='{$ancho}'>\n\n\n"; if ($mostrar_cabecera) { echo "<tr><td>"; $this->barra_superior(null, true, "objeto-ei-barra-superior"); echo "</td></tr>\n"; } if ($this->info_cuadro["subtitulo"] != "") { echo "<tr><td class='lista-subtitulo'>" . $this->info_cuadro["subtitulo"] . "</td></tr>\n"; } echo "<tr><td>"; echo "<TABLE width='100%' class='tabla-0'>"; //------------------------ Genero los titulos echo "<tr>\n"; for ($a = 0; $a < $this->cantidad_columnas; $a++) { if (isset($this->info_cuadro_columna[$a]["ancho"])) { $ancho = " width='" . $this->info_cuadro_columna[$a]["ancho"] . "'"; } else { $ancho = ""; } echo "<td class='lista-col-titulo' {$ancho}>\n"; $this->cabecera_columna($this->info_cuadro_columna[$a]["titulo"], $this->info_cuadro_columna[$a]["valor_sql"], $a); echo "</td>\n"; } //-- Evento FIJO de seleccion echo "<td class='lista-col-titulo'>\n"; echo "</td>\n"; echo "</tr>\n"; //------------------------------------------------------------------------- //----------------------- Genero VALORES del CUADRO ----------------------- //------------------------------------------------------------------------- for ($f = 0; $f < $this->filas; $f++) { $resaltado = ""; $clave_fila = $this->get_clave_fila($f); //$this->clave_seleccionada //$resaltado = "_s"; echo "<tr>\n"; for ($a = 0; $a < $this->cantidad_columnas; $a++) { //----------> Comienzo una CELDA!! //*** 1) Recupero el VALOR if (isset($this->info_cuadro_columna[$a]["valor_sql"])) { $valor = $this->datos[$f][$this->info_cuadro_columna[$a]["valor_sql"]]; //Hay que formatear? if (isset($this->info_cuadro_columna[$a]["valor_sql_formato"])) { $funcion = "formato_" . $this->info_cuadro_columna[$a]["valor_sql_formato"]; //Formateo el valor $valor = $funcion($valor); } //Hay que hacer un formateo externo if (trim($this->info_cuadro_columna[$a]["valor_proceso_parametros"]) != "") { $funcion = $this->info_cuadro_columna[$a]["valor_proceso_parametros"]; //Formateo el valor $valor = $funcion($valor); } } elseif (isset($this->info_cuadro_columna[$a]["valor_fijo"])) { $valor = $this->info_cuadro_columna[$a]["valor_fijo"]; } else { $valor = ""; } //*** 2) PRoceso la columna //Esto no se utiliza desde el instanciador if (!$this->solicitud->hilo->entorno_instanciador()) { if (isset($this->info_cuadro_columna[$a]["valor_proceso"])) { $metodo_procesamiento = $this->info_cuadro_columna[$a]["valor_proceso"]; $valor = $this->{$metodo_procesamiento}($f, $valor); } } //*** 3) Generacion de VINCULOS! if (trim($this->info_cuadro_columna[$a]["vinculo_indice"]) != "") { $id_fila = $this->get_clave_fila($f); //Genero el VINCULO $vinculo = $this->solicitud->vinculador->get_vinculo_de_objeto($this->id, $this->info_cuadro_columna[$a]["vinculo_indice"], $id_fila, true, $valor); //El vinculador puede no devolver nada en dos casos: //No hay permisos o el indice no existe if (isset($vinculo)) { $valor = $vinculo; } } //*** 4) Genero el HTML echo "<td class='" . $this->info_cuadro_columna[$a]["estilo"] . $resaltado . "'>\n"; echo $valor; echo "</td>\n"; //----------> Termino la CELDA!! } //-- Evento FIJO de seleccion echo "<td class='lista-col-titulo'>\n"; echo toba_form::image($this->submit . $clave_fila, toba_recurso::imagen_toba("doc.gif"), "onClick='seleccionar(\"{$this->datos[$f]['id']}\", \"{$this->datos[$f]['descripcion']}\")';"); echo "</td>\n"; //---------------------------- echo "</tr>\n"; } //----------------------- Genero totales?? $this->generar_html_totales(); echo "</table>\n"; echo "</td></tr>\n"; echo "</table>\n"; //Y por cierto......... si esto tenia scroll, cierro el div !!! if ($this->info_cuadro["scroll"]) { echo "</div>"; } //echo "<br>\n"; } }
function generar_layout() { $selecciones = $this->controlador->get_selecciones(); echo "<div style='background-color: white; border: 1px solid black; text-align: left; padding: 15px'>"; try { //Se construye un suite por categoria que tenga test seleccionados foreach (toba_test_lista_casos::get_categorias() as $categoria) { $test = new GroupTest($categoria['nombre']); $hay_uno = false; foreach (toba_test_lista_casos::get_casos() as $caso) { if ($caso['categoria'] == $categoria['id'] && in_array($caso['id'], $selecciones['casos'])) { $hay_uno = true; require_once $caso['archivo']; $test->addTestCase(new $caso['id']($caso['nombre'])); } } if ($hay_uno) { //--- COBERTURA DE CODIGO (OPCIONAL) ---- if (function_exists('xdebug_start_code_coverage')) { xdebug_start_code_coverage(); } //------- $test->run(new toba_test_reporter()); //--- COBERTURA DE CODIGO (OPCIONAL) ---- $arch = 'PHPUnit2/Util/CodeCoverage/Renderer.php'; $existe = toba_manejador_archivos::existe_archivo_en_path($arch); if (function_exists('xdebug_start_code_coverage') && $existe) { require_once $arch; $cubiertos = xdebug_get_code_coverage(); //Se limpian las referencias a simpletest y a librerias de testing en gral. $archivos = array(); foreach (array_keys($cubiertos) as $archivo) { if (!strpos($archivo, 'simpletest') && !strpos($archivo, 'PHPUnit') && !strpos($archivo, 'testing_automatico/') && !strpos($archivo, '/test_')) { $archivos[$archivo] = $cubiertos[$archivo]; } } $cc = PHPUnit2_Util_CodeCoverage_Renderer::factory('HTML', array('tests' => $archivos)); $path_temp = toba::proyecto()->get_path_temp_www(); $salida = $path_temp['real'] . '/cobertura.html'; $cc->renderToFile($salida); echo "<a href='{$path_temp['browser']}/cobertura.html' target='_blank'>Ver cobertura de código</a>"; } //------- } } } catch (Exception $e) { if (method_exists($e, 'mensaje_web')) { echo ei_mensaje($e->mensaje_web(), 'error'); } else { echo $e; } } echo '</div><br>'; $this->dep('lista_archivos')->generar_html(); }
function ei_arbol($arbol, $identificador = "DUMPEO de VALORES", $ancho = "50%", $colapsado = false) { //Me estan llamando por consola?? if (toba::solicitud() != null && toba::solicitud()->get_tipo() == 'consola') { //echo "<pre>"; print_r($arbol); //echo "</pre>"; return; } //Javascript de colapsado de niveles (esto no es bello, pero funciona) static $js = 0; // Para que entre una sola vez if ($js == 0) { echo "<script language='javascript'>function ei_arbol_colapsar_nivel(id, img){\n\t\t\t\t\tnodo = document.getElementById(id);\n\t\t\t\t\tif(nodo.style.display == 'none'){\n\t\t\t\t\t\t//Abrir\n\t\t\t\t\t\tnodo.style.display = '';\n\t\t\t\t\t\timg.src = '" . toba_recurso::imagen_toba('nucleo/contraer.gif', false) . "';\n\t\t\t\t\t}else{\n\t\t\t\t\t\t//Cerrar\n\t\t\t\t\t\tnodo.style.display = 'none';\n\t\t\t\t\t\timg.src = '" . toba_recurso::imagen_toba('nucleo/expandir.gif', false) . "';\n\t\t\t\t\t}\n\t\t\t\t}</script>"; } $js++; //Es un array? if (is_array($arbol)) { echo "<div align='center'><br>"; echo "<table class='tabla-0' width='{$ancho}'>"; echo "<tr><td class='arbol-titulo'><b>{$identificador}</b></td></tr>\n"; echo "<tr><td class='arbol-valor-array'>\n"; ei_arbol_nivel($arbol, $colapsado); echo "</td></tr>\n"; echo "</table>\n"; echo "</div><br>"; } elseif (is_object($arbol)) { echo ei_mensaje("CLASE <b>" . get_class($arbol) . "</b>", null, $identificador); } else { echo ei_mensaje($arbol, null, $identificador); } }
function generar_html_fs() { if (!$this->controlador->existe_archivo_log()) { echo ei_mensaje('No hay logs registrados para el proyecto ' . "<strong>{$this->controlador->get_proyecto()}</strong>"); return; } $seleccion = $this->controlador->s__seleccion; $niveles = toba::logger()->get_niveles(); $niveles = array_reverse($niveles); $res = $this->controlador->get_analizador()->get_pedido($seleccion); $encabezado = $this->controlador->get_analizador()->analizar_encabezado($res); ///CON ESTO PUEDO SACAR OPERACION, PROYECTO, IP, USUARIO ETC //--- Opciones $selec = $seleccion == 'ultima' ? 'Última solicitud' : "Solicitud {$seleccion}"; echo '<div>'; echo "<span class='logger-proyecto' title='{$this->controlador->get_analizador()->get_archivo_nombre()}' style='text-align:right;'>"; echo ucfirst($this->controlador->get_proyecto()); echo "<span class='logger-selec'>{$selec}</span>"; //--- Botones anterior/siguiente if ($seleccion != 1) { $this->generar_boton('anterior'); } if ($seleccion != 'ultima') { $this->generar_boton('siguiente'); $this->generar_boton('ultima'); } echo '</span>'; echo "<br><div id='logger_info_operacion'>"; echo $this->generar_html_info_operacion($res); echo '</div>'; $valor_check = 0; if ($this->controlador->get_estado_encabezados() === true) { $valor_check = 1; } $check = toba_form::checkbox('con_encabezados', $valor_check, 1, 'ef-checkbox', " onclick=\"{$this->objeto_js}.evt__con_encabezados__click(this)\" "); echo "<label>{$check} Ver Encabezados</label><br>"; echo "</div><hr style='clear:both' />"; echo "<div style='clear:both;width:100%;overflow:auto;'>\n"; list($detalle, $cant_por_nivel) = $this->generar_html_detalles($res); $display_encabezados = 'none'; if ($this->controlador->get_estado_encabezados() === true) { $display_encabezados = ''; } //--- Encabezado echo "<ul id='logger_encabezados' style='display:{$display_encabezados};list-style-type: none;padding: 0;margin: 0'>"; echo $this->generar_html_encabezado($res); echo '</ul>'; //---- Niveles echo "<div style='clear:both;float:right;margin-left:10px;text-align:center;'>"; echo '<strong>Niveles</strong>'; echo "<ul class='logger-opciones'>"; foreach ($niveles as $nivel) { $img = toba_recurso::imagen_proyecto('logger/' . strtolower($nivel) . '.gif', true, null, null, "Filtrar el nivel: {$nivel}"); $cant = $cant_por_nivel[$nivel] != 0 ? "[{$cant_por_nivel[$nivel]}]" : ''; echo "<li id='nivel_{$nivel}'><a href='#' onclick='mostrar_nivel(\"{$nivel}\")'>{$img}</a> "; echo "<span id='nivel_cant_{$nivel}'>{$cant}</span></li>\n"; } echo '</ul>'; echo '</div>'; $proyecto_actual = $this->controlador->get_proyecto(); $mostrar = $this->controlador->get_seleccion_modo_detalle(); $lista_valida = array($proyecto_actual => ucfirst($proyecto_actual), 'toba' => 'Nucleo', 'no_seteado' => 'Todos'); //echo toba_recurso::imagen_proyecto('logger/ver_texto.gif', true, 16, 16, "Ver el texto original del log"); echo "<div style='clear:both;float:right;margin-left:10px;text-align:center;'><br>"; echo '<strong>Mostrar mensajes</strong>'; echo "<ul id='logger_proyectos' class='logger-opciones'>"; echo '<li>' . toba_form::select('opciones_proyectos', $mostrar, $lista_valida, null, "onchange='{$this->objeto_js}.mostrar_proyecto()'") . '</li>'; echo '</ul>'; echo '</div>'; //--- Detalles echo "<ol id='logger_detalle' style='list-style-type:none;padding:0;margin:0;margin-top:10px;'>"; echo $detalle; echo "</ol>\n"; echo '</div>'; }
$boton_post = 'asignar_permisos'; $boton_post_nombre = 'Guardar'; $prefijo_items = 'item_'; //Prefijo de los checkbox if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST[$boton_post])) { if ($_POST[$boton_post] == $boton_post_nombre) { //SI hay un POST, y estuvo disparado por este formulario $items = array(); foreach ($_POST as $etiqueta => $valor) { if (substr($etiqueta, 0, strlen($prefijo_items)) == $prefijo_items) { $nodo = trim(substr($etiqueta, strlen($prefijo_items))); $items[] = $nodo; } } $arbol->cambiar_permisos($items, $grupo); echo ei_mensaje('Los permisos han sido actualizados correctamente'); } } //-------------------------------------------------------------------------- //--------------< INTERFACE DE ASIGNACION de PERMISOS >------------------- //-------------------------------------------------------------------------- echo "<br>\n"; echo "<div align='center'>\n"; ?> <form enctype='application/x-www-form-urlencoded' name='<?php echo $formulario; ?> ' method='POST' action='<?php echo toba::vinculador()->generar_solicitud(null, null, null, true); ?> '>
/** * Carga los datos de una fila específica a partir de los valores de los efs de esa fila * @ignore */ protected function cargar_ef_a_registro($id_registro) { $this->_id_fila_actual = $id_registro; foreach ($this->_lista_ef as $ef) { //Aplano el estado del EF en un array $dato = $this->_elemento_formulario[$ef]->get_dato(); $estado = $this->_elemento_formulario[$ef]->get_estado(); if (is_array($dato)) { //El EF maneja DATO COMPUESTO if (count($dato) != count($estado)) { //Error de consistencia interna del EF echo ei_mensaje("Error de consistencia\tinterna en el EF etiquetado: " . $this->_elemento_formulario[$ef]->get_etiqueta(), "error"); } for ($x = 0; $x < count($dato); $x++) { $this->_datos[$id_registro][$dato[$x]] = $estado[$dato[$x]]; } } else { //El EF maneja un DATO SIMPLE $this->_datos[$id_registro][$dato] = $estado; } } }