!C99Shell v. 2.1 [PHP 8 Update] [02.02.2022]!

Software: Apache/2.4.53 (Unix) OpenSSL/1.1.1o PHP/7.4.29 mod_perl/2.0.12 Perl/v5.34.1. PHP/7.4.29 

uname -a: Linux vps-2738122-x 4.15.0-213-generic #224-Ubuntu SMP Mon Jun 19 13:30:12 UTC 2023 x86_64 

uid=1(daemon) gid=1(daemon) grupos=1(daemon) 

Safe-mode: OFF (not secure)

/opt/apex_led/php/nucleo/componentes/interface/   drwxrwxr-x
Free 13.79 GB of 61.93 GB (22.27%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     toba_ei_arbol.php (20.13 KB)      -rwxrwxr-x
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

/**
 * Muestra un Arbol donde el usuario puede colapsar/descolapsar niveles
 * Estos niveles se pueden cargar por adelantado o hacer una cargar AJAX
 * Cada nodo debe implementar la interfaz toba_nodo_arbol
 *
 * @see toba_nodo_arbol
 * @package Componentes
 * @subpackage Eis
 * @jsdoc ei_arbol ei_arbol
 * @wiki Referencia/Objetos/ei_arbol
 */
class toba_ei_arbol extends toba_ei
{
    protected 
$_prefijo 'arbol';
    protected 
$_nodos_inicial;
    protected 
$s__nodos_inicial;
    protected 
$_item_propiedades = array();
    protected 
$_nivel_apertura 1;
    protected 
$_datos_apertura;
    protected 
$_todos_abiertos false;
    protected 
$_mostrar_utilerias true;
    protected 
$_mostrar_propiedades_nodos true;
    protected 
$_mostrar_filtro_rapido false;
    protected 
$_frame_destino null;
    protected 
$ids = array();
    protected 
$chequear_ids_unicos false;
    protected 
$_mostrar_ayuda true;
    protected 
$_ancho_nombres 30;
    protected 
$_ids_enviados = array();
    protected 
$_chequear_id_nodos true;
    protected 
$_id_persistidor_sesion;

    final function 
__construct($datos)
    {
        
parent::__construct($datos);
    }

    function 
inicializar($parametros = array())
    {
        
parent::inicializar($parametros);
        
//Creo un identificador unico para almacenar la lista de nodos enviados al cliente.
        
$this->_id_persistidor_sesion $this->_canal 'ei_arbol_ids_enviados';
        if (isset(
$this->s__nodos_inicial)) {
            
$this->_nodos_inicial $this->s__nodos_inicial;
        }
        
$ids toba::memoria()->get_dato_operacion($this->_id_persistidor_sesion);
        if (! 
is_null($ids)) {
            
$this->_ids_enviados $ids;
        }
    }

    function 
destruir()
    {
        
$this->_ids_enviados array_unique($this->_ids_enviados);        //Saco los repetidos por si acaso
        
toba::memoria()->set_dato_operacion($this->_id_persistidor_sesion$this->_ids_enviados);
        
//toba::logger()->var_dump($this->_ids_enviados);
        
parent::destruir();
    }

    
/**
     * @ignore
     */
    
protected function cargar_eventos()
    {
        
$this->cargar_lista_eventos();
    }

    
/**
     * @ignore
     * Permite desactivar temporalmente el chequeo de ids de los nodos
     * util para el toba_editor
     */
    
function desactivar_chequeo_nodos()
    {
        
$this->_chequear_id_nodos false;
    }

    
/**
     * Fuerza a que determinados nodos se encuentren abiertos o cerrados
     * @param array $datos_apertura array('id_nodo' => boolean, ...)
     */
    
function set_apertura_nodos($datos_apertura)
    {
        
$this->_datos_apertura $datos_apertura;
        if (isset(
$this->_nodos_inicial)) {
            foreach (
$this->_nodos_inicial as $nodo) {
                
$this->set_apertura_nodo($nodo);
            }
        }
    }
    
/**
     * Se comunica la apertura a un nodo y se invoca el método recursivamente a sus hijos
     * @param toba_nodo_basico $nodo
     */
    
function set_apertura_nodo($nodo)
    {
        if ((
$nodo instanceof toba_nodo_arbol_form) && isset($this->_datos_apertura[$nodo->get_id()])) {
            
$nodo->set_apertura($this->_datos_apertura[$nodo->get_id()]);
        }
        foreach (
$nodo->get_hijos() as $hijo) {
            
$this->set_apertura_nodo($hijo);
        }
    }
    
    
/**
     * Determina el ancho máximo de un nombre de un nodo, a partir de ese tamaño se utilizan puntos suspensivos
     * @param integer $caracteres
     */
    
function set_ancho_nombres($caracteres)
    {
        
$this->_ancho_nombres $caracteres;
    }

    
/**
     * Cambia el nivel inicial de apertura grafico de los nodos
     * @param integer $nivel
     */
    
function set_nivel_apertura($nivel)
    {
        
$this->_nivel_apertura $nivel;
    }

    
/**
     * Fuerza a que todos los nodos se muestren abiertos
     */
    
function set_todos_abiertos()
    {
        
$this->_todos_abiertos true;
    }

    
/**
     * Determina si se muestran o no las utilerias de cada nodo
     * @param boolean $mostrar
     */
    
function set_mostrar_utilerias($mostrar)
    {
        
$this->_mostrar_utilerias $mostrar;
    }

    
/**
     * @ignore
     * @param boolean $mostrar
     */
    
function set_mostrar_propiedades_nodos($mostrar)
    {
        
$this->_mostrar_propiedades_nodos $mostrar;
    }

    
/**
     * @ignore
     * @param boolean $mostrar
     */
    
function set_mostrar_ayuda($mostrar)
    {
        
$this->_mostrar_ayuda $mostrar;
    }

    
/**
     * @ignore
     * @param boolean $mostrar
     */
    
function set_mostrar_filtro_rapido($mostrar)
    {
        
$this->_mostrar_filtro_rapido $mostrar;
    }

    
/**
     * Determina la propiedad TARGET del tag <A> html de los vinculos de cada nodo
     * @param string $frame
     */
    
function set_frame_destino($frame)
    {
        
$this->_frame_destino $frame;
    }

    
/**
     * Cambia los nodos del arbol, suministrandole nuevos nodo/s raiz
     * @param array $nodos Arreglo de nodos raiz del arbol
     */
    
function set_datos($nodos$mantener_en_sesion=false)
    {
        
$this->_nodos_inicial $nodos;
        if (
$mantener_en_sesion) {
            
$this->s__nodos_inicial $nodos;
        }
    }

    function 
get_datos()
    {
        return 
$this->_nodos_inicial;
    }

    
/**
     * Devuelve los ids de los nodos enviados al cliente
     */
    
function get_ids_nodos_enviados()
    {
        
$resultado = array();
        if (isset(
$this->_ids_enviados)) {
            
$resultado $this->_ids_enviados;
        }
        return 
$resultado;
    }
    
    
//----------------------------------------------------------------------------------------------------------------------------------------------//
    
    /**
     * Carga la lista de eventos definidos desde el administrador
     * La redefinicion filtra solo aquellos utilizados en esta pantalla
     * y agrega los tabs como eventos
     * @ignore
     */
    
protected function cargar_lista_eventos()
    {
        
parent::cargar_lista_eventos();
        
$this->_eventos['cambio_apertura'] = array();
        
$this->_eventos['ver_propiedades'] = array('maneja_datos' => true);
        
$this->_eventos['cargar_nodo'] = array();
    }

    
/**
     * @ignore
     */
    
protected function disparar_cambios_apertura()
    {        
        if (isset(
$_POST[$this->_submit.'__apertura_datos'])) {
            
$nodos = array();
            
$pares explode('||'$_POST[$this->_submit.'__apertura_datos']);            
            foreach (
$pares as $par) {
                
$par explode('='$par);
                if (
count($par) == 2) {
                    list(
$id$visible) = $par;
                    if (
$this->validar_id_nodo_recibido($id)) {
                            
$nodos[$id] = $visible;
                    }
                }
            }
            
$this->_datos_apertura $nodos;
            
//Se reporta el cambio de layout al padre
            
$this->reportar_evento_interno('cambio_apertura'$this->_datos_apertura);
        }        
    }
    
    
/**
     * @ignore
     */
    
protected function disparar_eventos_propios()
    {    
        if(isset(
$_POST[$this->_submit]) && $_POST[$this->_submit] !='') {
            
$evento $_POST[$this->_submit];
            
//El evento estaba entre los ofrecidos?
            
if(isset($this->_memoria['eventos'][$evento]) ) {
                
$parametros null;
                
$existe_seleccion = (isset($_POST[$this->_submit.'__seleccion']));
                
$evento_propiedades = ($evento == 'ver_propiedades');

                if ( 
$evento_propiedades && $existe_seleccion &&
                    (
$this->validar_id_nodo_recibido($_POST[$this->_submit.'__seleccion']))) {
                            
$this->reportar_evento_interno$evento$_POST[$this->_submit.'__seleccion'] );
                }
            }
        }            
    }
        
    
/**
     * Se cargan los datos del nodo, se le comunica la apertura
     * y se disparan los eventos de los hijos del nodo.
     * @param toba_nodo_basico $nodo
     */
    
protected function disparar_eventos_nodo($nodo)
    {
        
//Le paso al nodo una referencia al js del arbol que lo contiene
        
if (method_exists($nodo'set_js_ei_arbol')) {            
            
$nodo->set_js_ei_arbol$this->get_id_objeto_js());
        }
        
$id $this->_submit.'_'.$nodo->get_id();
        
// Se le pide al nodo que cargue su estado a partir del post
        
$nodo->cargar_estado_post($id);
        
// Se le comunica al nodo si esta abierto o no
        
if (isset($this->_datos_apertura) && isset($this->_datos_apertura[$nodo->get_id()])) {
            
$nodo->set_apertura($this->_datos_apertura[$nodo->get_id()]);
        }
        foreach (
$nodo->get_hijos() as $hijo) {
            
$this->disparar_eventos_nodo($hijo);
        }
    }

    
/**
     * @ignore
     */
    
function disparar_eventos()
    {
        
//Actualiza el estado de los nodos
        
if (isset($this->_nodos_inicial)) {
            foreach (
$this->_nodos_inicial as $nodo) {
                if (
$nodo instanceof toba_nodo_arbol_form) {
                        
$this->disparar_eventos_nodo($nodo);
                }
            }
        }
                
        
$this->disparar_cambios_apertura();        //Se guarda el layout del arbol actual
        
$this->disparar_eventos_propios();
        
$this->borrar_memoria_eventos_atendidos();
    }
    
    
/*
     * Valida que el id del nodo haya sido enviado al cliente
     * @ignore
     */
    
protected function validar_id_nodo_recibido($id_nodo)
    {
        if (
$this->_chequear_id_nodos && ! in_array($id_nodo$this->_ids_enviados)) {
            
toba::logger()->debug("Se intenta acceder al nodo con id $id_nodo , pero no fue enviado al cliente");
            throw new 
toba_error('Se intenta acceder a un nodo que no existe.');
        }
        return 
true;
    }
    
    
/**
     * Determina si un nodo es visible fijandose en la apertura de nodos
     * @ignore
     */
    
protected function nodo_es_visible($nodo$nivel)
    {
        if (
$nodo instanceof toba_nodo_arbol_form) {
            return 
$nodo->get_apertura();
        }

        
$cargado_parcial = (!$nodo->es_hoja() && $nodo->tiene_hijos_cargados());
        if (
$this->_todos_abiertos) {
            return 
$cargado_parcial;
        }
        if (isset(
$this->_datos_apertura[$nodo->get_id()])) {
            return 
$this->_datos_apertura[$nodo->get_id()] && $cargado_parcial;
        }
        
//Si no esta se determina por el nivel de apertura estandar
        
return ($nivel $this->_nivel_apertura) && $cargado_parcial;
    }
    
    
//-------------------------------------------------------------------------------------------------------
    //--    Generacion de HTML
    //-------------------------------------------------------------------------------------------------------
    
    
protected function generar_campos_hidden()
    {
        echo 
toba_form::hidden($this->_submit'');
        echo 
toba_form::hidden($this->_submit.'__apertura_datos''');
        echo 
toba_form::hidden($this->_submit.'__seleccion''');        
    }
    
    
/**
     * @ignore
     */
    
protected  function generar_barras_grales()
    {
        echo 
$this->get_html_barra_editor();
        
$this->generar_html_barra_sup(nulltrue,'ei-arbol-barra-sup');
        if (
$this->_mostrar_filtro_rapido) {
            
$this->generar_html_filtro_rapido();
        }
        
$this->generar_html_barra_especifica();
    }    
    
    
/**
     * @ignore
     */
    
protected function generar_barra_navegacion()
    {
        
$camino '';
        if (
count($this->_nodos_inicial) > 0) {
            
$nodo $this->_nodos_inicial[0];
            while (
$nodo->get_padre() != null) {
                
$nodo $nodo->get_padre();
                
$nodo_barra "<a href='#' onclick='{$this->objeto_js}.ver_propiedades(\"{$nodo->get_id()}\");'";
                
$nodo_barra .= "class='ei-arbol-ver-prop'>"$this->acortar_nombre($nodo->get_nombre_corto(), 20).'</a>';
                
$camino $nodo_barra ' > '$camino;
                
$this->_ids_enviados[] = $nodo->get_id();                                                            //Agrego los nodos de la barra del path
            
}
            if (
$camino != '') {
                echo 
"<div class='ei-arbol-barra-path'>$camino</div>";
            }                
        }
    }
    
    
/**
     * @ignore
     */
    
protected function generar_cuerpo()
    {
        
$id_div '';
        
$id "id='{$this->objeto_js}_nodo_raiz'";                                
        if (
count($this->_nodos_inicial) > 1) {
            
$id_div $id;
            
$id '';        
        }            

        echo 
"<div class='ei-cuerpo ei-arbol-cuerpo' $id_div>\n";
        foreach (
$this->_nodos_inicial as $nodo_inicial) {
            echo 
"\n<ul $id class='ei-arbol-raiz'>";
            echo 
$this->recorrer_recursivo($nodo_inicialtrue);
            echo 
'</ul>';
            
$id null;    //El id lo tiene solo el primer nodo
        
}
        echo 
'</div>';    
    }
    
    
/**
     * Genera el HTML del arbol
     */
    
public function generar_html()
    {
        
$this->generar_campos_hidden();                    //Genero los campos a usar para la comunicacion
        
$this->_ids_enviados = array();                    //Reinicio el arreglo para que guarde solo el pedido actual
        
        
echo "<div class='ei-base ei-arbol-base'>";
        
$this->generar_barras_grales();        
        echo 
"<div id='cuerpo_{$this->objeto_js}'>";
        
        if (isset(
$this->_nodos_inicial)) {                    //Si hay nodos            
            
$this->generar_barra_navegacion();            // Se incluye la barrita que contiene el path actual
            
$this->generar_cuerpo();    
        }
        
$this->generar_botones();        
        echo 
'</div>
            </div>'
;
    }

    
/**
     * @ignore
     */
    
public function recorrer_hijos($nodo$nivel)
    {
        
$salida '';
        foreach (
$nodo->get_hijos() as $nodo_hijo) {
            
$salida .= $this->recorrer_recursivo($nodo_hijofalse$nivel);
        }
        return 
$salida;
    }
    
    
/**
     * @ignore
     */
    
public function recorrer_recursivo($nodo$es_raiz false$nivel 0$solo_contenido=false)
    {
        
//Le paso al nodo una referencia al js del arbol que lo contiene
        
if (method_exists($nodo'set_js_ei_arbol')) {            
            
$nodo->set_js_ei_arbol$this->get_id_objeto_js());
        }
        
$id_nodo $nodo->get_id();
        
$this->_ids_enviados[] = $id_nodo;
        
//Verifico que no haya un mismo id perteneciente a clases diferentes
        
if ($this->chequear_ids_unicos) {            
            if (isset(
$this->ids[$id_nodo])) {
                
$clase get_class($nodo);
                
$clase_vieja $this->ids[$id_nodo];
                throw new 
toba_error("Error al procesar el nodo '$id_nodo' de clase '$clase'. Ya existe el mismo id de clase '$clase_vieja'");
            }
            
$this->ids[$id_nodo] = get_class($nodo);
        }
        
        
//Genero el html para el nodo
        
$salida_generada $this->generar_fila_nodo($nodo$nivel);
        
        
//Diferencio la salida segun corresponda        
        
if (! $solo_contenido) { 
            
$estilo_li '';                            //Configuracion del estilo del nodo
            
$clase_li 'ei-arbol-nodo ';            
            if (
method_exists($nodo'get_estilo_css_li')) {
                
$estilo_li .= $nodo->get_estilo_css_li();
            }
            if (
method_exists($nodo'get_clase_css_li')) {
                
$clase_li .= $nodo->get_clase_css_li();
            }
            
            
$salida "\n\t<li class='$clase_li' id_nodo='{$nodo->get_id()}' style='$estilo_li' >";                    
            
$salida .= $salida_generada;
            
$salida .= "</li>\n";
        } else {
            
$salida $salida_generada;
        }
        
        return 
$salida;
    }
    
    
/**
     * @ignore
     * @param mixed $nodo
     * @param smallint $nivel
     * @return string $salida
     */
    
function generar_fila_nodo($nodo$nivel)
    {
        
//Determina si el nodo es visible en la apertura
        
$es_visible $this->nodo_es_visible($nodo$nivel);
        
$salida $this->mostrar_nodo($nodo$es_visible);

        
//Recursividad
        
if (! $nodo->es_hoja()) {    
            
//Configuracion del estilo del nodo
            
$clase_ul 'ei-arbol-rama ';            
            if (
method_exists($nodo'get_clase_css_ul')) {
                
$clase_ul .= $nodo->get_clase_css_ul();
            }
            
            
$estilo_ul = ($es_visible) ? '' 'display:none ';
            if (
method_exists($nodo'get_estilo_css_ul')) {
                
$estilo_ul .= $nodo->get_estilo_css_ul();
            }
            
$estilo = ($estilo_ul != '') ? "style='$estilo_ul'" '';
            
            
$salida .= "\n<ul id_nodo='{$nodo->get_id()}' class='$clase_ul$estilo>";            
            if (
$nodo->tiene_hijos_cargados()) {
                
$nivel ++;
                
$salida .= $this->recorrer_hijos($nodo$nivel);
            }
            
$salida .= '</ul>';
        }        
        return 
$salida;
    }

    
/**
     * @ignore
     */
    
public function mostrar_nodo(toba_nodo_arbol $nodo$es_visible)
    {
        
$salida $this->mostrar_utilerias($nodo);
        
$salida .= $this->mostrar_cambio_expansion($nodo$es_visible);
        
$salida .= $this->mostrar_iconos($nodo);

        
//Nombre y ayuda
        
$corto $this->acortar_nombre($nodo->get_nombre_corto());
        
$id $nodo->get_id();
        
$largo $nodo->get_nombre_largo();
        
$extra $nodo->get_info_extra();

        if(
$this->_mostrar_ayuda && ($largo || $id || $extra)) {
            
$title"<b>Nombre</b>: $largo<br /><b>Id</b>:  $id";
            if (
$extra != '') {
                
$title .= "<hr />$extra";
            }
            
$ayuda toba_recurso::ayuda(null,  $title'ei-arbol-nombre');
            if (
get_class($nodo) == 'toba_ci_pantalla_info') {
                
$nombre"<span $ayuda>$id</span>";
            } else {
                
$nombre"<span $ayuda>$corto</span>";
            }
        } else {
            
$nombre $corto;
        }
        
        if (
$this->_mostrar_propiedades_nodos && $nodo->tiene_propiedades()) {
            
$salida .= "<a href='#' onclick='{$this->objeto_js}.ver_propiedades(\"".$nodo->get_id()."\");' ".
                        
"class='ei-arbol-ver-prop'>$nombre</a>";            
        } else {
            
$salida .= $nombre;
        }
        return 
$salida;
    }

    
/**
     * @ignore
     */
    
function generar_html_filtro_rapido()
    {
        echo 
"<div class='ei-arbol-filtro'>";
        
$eventos "onkeyup='{$this->objeto_js}.filtro_cambio()' onblur='{$this->objeto_js}.filtro_salir()' onfocus='{$this->objeto_js}.filtro_foco()'";
        echo 
"<input id='{$this->_submit}_filtro_rapido' type='text' value='Buscar...' $eventos />";
        echo 
'</div>';
    }

    
/**
     * Ventana para generar una barra especifica para el componente
     */
    
function generar_html_barra_especifica(){}

    
/**
     * @ignore
     */
    
protected function mostrar_cambio_expansion($nodo$es_visible)
    {
        if (
$this->_mostrar_propiedades_nodos && ! $nodo->es_hoja()) {            //Muestro el icono para cambiar la expansion
            
if ($es_visible) {
                
$img_exp_contr toba_recurso::imagen_toba('nucleo/contraer.gif'false);
            } else {
                
$img_exp_contr toba_recurso::imagen_toba('nucleo/expandir.gif'false);
            }
            
$salida "<img src='$img_exp_contr' onclick='{$this->objeto_js}.cambiar_expansion(this);'
            class='ei-arbol-exp-contr' alt='' /> "
;
        } else {
            
$salida gif_nulo(14,1);
        }
        return 
$salida;
    }
    
    
/**
     * @ignore
     */
    
protected function mostrar_iconos($nodo)
    {
        
$salida '';
        foreach (
$nodo->get_iconos() as $icono) {
            
$ayuda toba_parser_ayuda::parsear($icono['ayuda']);
            
$js = isset($icono['javascript']) ? $icono['javascript'] : '';
            
$img toba_recurso::imagen($icono['imagen'], nullnull$ayudanull$js);
            if (isset(
$icono['vinculo'])) {
                
$salida .= "<a target='{$this->_frame_destino}' href='".$icono['vinculo']."'>$img</a>\n";
            } else {
                
$salida .= $img."\n";
            }
        }
        return 
$salida;
    }

    
/**
     * @ignore
     */
    
protected function mostrar_utilerias($nodo)
    {
        
$salida '';
        if(
$nodo instanceof toba_nodo_arbol_form) {
            
$id $this->_submit'_'$nodo->get_id();
            
$salida .= '<span style=\'float:right;\'>'$nodo->get_input($id). '</span>';
        }
        
$utilerias $nodo->get_utilerias();
        if (
$this->_mostrar_utilerias && (count($utilerias) > 0)) {
            
$plegados '';
            
$despl '';
            
$salida .= '<span style=\'float:right;\'>';
            
$cant_plegados 0;
            foreach (
$utilerias as $utileria) {
                
$ayuda toba_parser_ayuda::parsear($utileria['ayuda']);
                
$js = isset($utileria['javascript']) ? $utileria['javascript'] : '';
                
$img toba_recurso::imagen($utileria['imagen'], nullnull$ayudanull$js);
                if (isset(
$utileria['vinculo'])) {
                    
$target = (isset($utileria['target'])) ? $utileria['target'] : $this->_frame_destino;
                    
$html "<a href=\"{$utileria['vinculo']}\" target='$target'>$img</a>\n";
                } else {
                    
$html $img;
                }
                if (isset(
$utileria['plegado']) && $utileria['plegado']) {
                    
$cant_plegados++;
                    
$plegados .= $html;                    
                } else {
                    
$despl .= $html;
                }
            }
            if (
$cant_plegados 0) {
                
$img toba_recurso::imagen_toba('nucleo/expandir_izq.gif',true);
                
$salida .= "<a href='#' style='padding-right:2px' onclick='toggle_nodo(this.nextSibling);return false'>$img</a>";
                
$salida .= "<span style='display:none'>$plegados</span>";
            }
            
$salida .= $despl;
            
$salida .= '</span>';
        }
        return 
$salida;
    }

    
/**
     * Formatea el nombre de un nodo para incluir en un listado
     * @param string $nombre Nombre del nodo
     * @param integer $limite Cantidad de caracteres a mostrar
     * @return string
     */
    
protected function acortar_nombre($nombre$limite=null)
    {
        if (! isset(
$limite)) {
            
$limite $this->_ancho_nombres;
        }
        if (
strlen($nombre) > $limite) {
            
$nombre substr($nombre0$limite)."...";
        }
        return 
texto_plano($nombre);
    }

    
//-------------------------------------------------------------------------------
    //---- JAVASCRIPT ---------------------------------------------------------------
    //-------------------------------------------------------------------------------

    /**
     * Respuesta al pedido AJAX de apertura de un nodo no cargado anteriormente
     * Dispara el evento cargar_nodo($id) para que se retorne el toba_nodo_arbol asociado
     */
    
function servicio__ejecutar()
    {
        
toba::memoria()->desactivar_reciclado();
        
$id_nodo toba::memoria()->get_parametro('id_nodo');
        
$nodo $this->reportar_evento_interno('cargar_nodo'$id_nodo);
        if (isset(
$nodo) && $nodo !== apex_ei_evt_sin_rpta) {
            
$html $this->recorrer_hijos(current($nodo), 0);
            echo 
$html;
        } else {
            
toba::logger()->warning("toba_ei_arbol: No se pudo obtener el nodo que representa al ID $id_nodo");
        }
    }


    
/**
     * @ignore
     */
    
protected function crear_objeto_js()
    {
        
$identado toba_js::instancia()->identado();
        
$opciones['servicio'] = 'ejecutar';
        
$opciones['objetos_destino'] = array($this->_id);
        
$autovinculo toba::vinculador()->get_url(nullnull''$opciones );
        echo 
$identado."window.{$this->objeto_js} = new ei_arbol('{$this->objeto_js}',
        '
{$this->_submit}', '$autovinculo');\n";
    }

    
/**
     * @ignore
     */
    
function get_consumo_javascript()
    {
        
$consumo parent::get_consumo_javascript();
        
$consumo[] = 'componentes/ei_arbol';
        return 
$consumo;
    }
    
}
?>

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.1 [PHP 8 Update] [02.02.2022] maintained byC99Shell Github | Generation time: 0.495 ]--