!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_tdfonline/proyectos/toba_usuarios/php/menu/   drwxr-xr-x
Free 14.55 GB of 61.93 GB (23.5%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     pant_armado.php (7.91 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
class pant_armado extends toba_ei_pantalla
{
    function 
generar_layout()
    {
        
$this->enviar_estilos();
        echo 
'<table><tr><td>';
        
$this->dep('form_armado')->generar_html();
        echo 
'</td><td><div style=\'height:400px;overflow:auto\'>';
        
$this->dep('arbol_origen')->generar_html();        
        echo 
'</div></td></tr></table>';
    }
    
    function 
get_consumo_javascript()
    {
        
$consumo_js parent::get_consumo_javascript();
        
$consumo_js[] = 'utilidades/jquery-ui.min';
        return 
$consumo_js;
    }
    
    function 
extender_objeto_js()
    {            
        echo 
'$(function() {';
        
$this->codigo_generador_subitem();                 
        
$this->codigo_generador_item_carpeta();
        echo 
"    
            //Seteo los elementos del ei_arbol como draggeables
            $('.menu-origen').draggable({
                helper: 'original',
                revert: true});\n"
;
            
        
$this->codigo_accion_zona_dropeo();
        if (
$this->controlador()->es_edicion()) {
            
$this->generar_codigo_arbol_cliente();
        } 
        
        echo 
"});\n";
    }
    
    protected function 
codigo_accion_zona_dropeo()
    {
        
//Define las acciones que efectua la dropzone cuando cae un elemento
        
echo "
            $('div.menu').droppable({ 
                greedy: true, 
                accept: '.menu-origen', 
                drop: function (event, ui) {
                    var    es_carpeta = false,
                        \$ui = ui.helper,                        
                        id_elem = \$ui.attr('id_nodo'),
                        nomb_cont = id_elem + '__contenedor';        //Este sera el contenedor del nuevo menu

                    var \$ul = $(this).find('ul');                        
                    if (\$ul.find('#' + nomb_cont).length) {            //Verifica que no exista ya.
                            return;
                    }    
                    
                    if (\$ui.find('ul').attr('carpeta')  == 'true') {
                        es_carpeta = true;
                    }

                    //Creo el contenedor para el submenu si llega a existir
                    var contenedor = $('<li/>', { class: 'menu-contenedor', 
                                                  id: nomb_cont
                                    }).appendTo(\$ul);

                    guardar_primer_nivel(id_elem);

                    //Elimino el texto de los hijos para obtener solo el primer nivel
                    var texto = \$ui.text();
                    if (\$ui.find('ul.menu-origen').length) {        //Revisar                
                        var texto_hijos = \$ui.find('ul.menu-origen').first().text(),
                                  fin = texto.indexOf(texto_hijos);                                  
                        texto = texto.slice(0, fin);
                    }
                    
                    //Hago un DL para el menu de primer nivel
                    var nuevo = newdl(id_elem, texto, es_carpeta);
                    //Creo un span que contenga el icono de eliminacion y su accion.
                    var spn_ctrl = $('<span/>', {class: 'control'}).append($('<span/>', {class: 'close-btn', text: 'X'})
                                                                .on('click', function() { 
                                                                            var \$this = $(this);
                                                                            var id_elem = \$this.closest('dl').attr('id');
                                                                            eliminar_primer_nivel(id_elem);
                                                                            \$this.closest('li').remove();})
                                                            );                    
                    nuevo.append(spn_ctrl).appendTo(contenedor);
                }
            }); \n"
;
    }
    
    
    protected function 
codigo_generador_item_carpeta()
    {
        
//Crea efectivamente el elemento visual que representa a un item de nivel cero o una carpeta
        
echo "
            newdl = function (id_elem, texto, es_carpeta) {
                var clase = (es_carpeta)? 'menu-item carpeta' : 'menu-item';
                var nuevo = $('<dl/>', { class: clase, 
                                id: id_elem,
                                carpeta: es_carpeta});
                                
                $('<span/>', {class: 'titulo', text: texto}).appendTo(nuevo);
                
                nuevo.draggable({ helper:'original', revert: 'invalid'});
                nuevo.droppable({                            //Se agrega el comportamiento para cuando dropean otro elemento en este.
                        greedy:true,
                        accept: 'dl.menu-item',
                        drop: function (event, ui) {
                            var \$ui = ui.helper,
                                \$this = $(this);

                            if (\$this.attr('carpeta') != 'true') {
                                \$ui.draggable({revert: true});
                                return;
                            } else {
                                \$ui.draggable({revert: 'invalid'});
                            }

                            if (\$ui.find('dt.menu-subitem').length) { 
                                \$ui.closest('li')
                                   .remove()
                                   .end()
                                   .remove();
                                return;
                            }
                            //Creo el submenu
                            var id_padre = \$this.attr('id'),        //<dl> destino
                                id_elem = \$ui.attr('id'),        //<dl> origen                                                        
                                dt = newdt(id_elem, \$ui.find('span.titulo').text(), id_padre);    
                                
                            \$this.append(dt);
                            \$ui.closest('li').remove();                                    
                        }
                });
                return nuevo;
            };\n"
;
    }
    
    protected function 
codigo_generador_subitem()
    {    
//Creo el subitem del elemento que representa una carpeta
        
echo "
            newdt = function(id_elem, texto, id_padre) {                
                var dt = $('<dt/>', {
                            class: 'menu-subitem',
                            id: id_elem});

                $('<span/>', {class: 'titulo', text:texto}).appendTo(dt);
                
                var spn_ctrl = $('<span/>', {class: 'control'});

                $('<span/>', {class: 'close-btn', text:'X'})                    //Elemento con icono de eliminacion +  accion
                    .on('click', function() { 
                        var \$spn = $(this),                                                
                            id_padre = \$spn.closest('dl').attr('id'),        //<dl> padre                                                
                            \$dt = \$spn.closest('dt'),
                            id_subitem = \$dt.attr('id');                //<dt> submenu
                        \$spn.remove();
                        \$dt.remove();
                        quitar_subnivel(id_padre, id_subitem);
                        })
                    .appendTo(spn_ctrl);
                
                dt.append(spn_ctrl);
                agregar_subnivel(id_padre, id_elem);    
                return dt;
            };\n"
;
    }
    
    protected function 
generar_codigo_arbol_cliente()
    {
        
//Genero el evt para el drop y las funciones que se encargan de ejecutarlo
        
echo "    var evt = jQuery.Event('drop');
                var cont = $('div.menu');
                var pos = {left:'-500', top:'-70'}, offs= cont.position();
                var dropfn = cont.droppable('option', 'drop');
                var elem, ui;\n 
                
                simular_drop_item = function(item) {
                    var elem = $('li[id_nodo=\"'+item+'\"]');
                    var ui = {draggable: elem, helper: elem, position: pos, offset: offs};
                         dropfn.call(cont,evt, ui);\n
                };
                
                simular_drop_carpeta = function(item, padre) {
                    var carpeta = $('dl[id=\"' + padre + '\"]');
                    var offs= carpeta.position();
                    var dropsmfn = carpeta.droppable('option', 'drop');
                           
                    var elem = $('dl[id=\"' + item + '\"]');
                    var ui = {draggable: elem, helper: elem, position: pos, offset: offs};
                    dropsmfn.call(carpeta,evt, ui);\n
                };\n"
;
        
        
//Genero el codigo que dispara los drops y crea la parte visual
        
$datos $this->controlador()->buscar_datos_persistidos();
        
$aux_arbol $this->controlador()->get_arreglo_js();
        foreach (
$datos as $fila) {
            echo  
"simular_drop_item('"$fila['item'] . "');\n";                
            if (
$fila['carpeta'] != && isset($aux_arbol[$fila['padre']])) {
                echo 
"simular_drop_carpeta('"$fila['item'] . "', '"$fila['padre'] . "');\n";
            }
        }            
    }
    
    protected function 
enviar_estilos()
    {    
//TODO:Esto quizas podria estar en el css del proyecto toba_usuarios... analizar!!
        
echo '<style>
                .menu {
                        position: relative;
                        background-color: #FFF;
                        float: right;
                        padding: 3px;
                        border: 1px solid #CCC;
                        width: 750px;
                        height: 400px;
                }        
                .menu-origen {                        
                        padding: 2px;
                }        
                .menu-contenedor {
                        /*float: left;
                        clear: both;*/
                        position: relative;
                        margin-right: 5px;
                }
                .menu-item {
                        border: 1px solid #dfdfdf;
                        /*position: relative;*/
                        padding: 0 25px 0 15px;
                        width:400px;
                        height: auto;
                        line-height: 30px;
                        overflow: hidden;
                        word-wrap: break-word;
                        background-color: #fafafa;
                        -webkit-box-shadow: 0 1px 1px rgba(0,0,0,.04);
                        box-shadow: 0 1px 1px rgba(0,0,0,.04);
                        /*float: left;*/                        
                }        
                .menu-item.carpeta {
                        background-color: #FBEDBF;
                }
                .menu-subitem {
                        background-color: #fff;
                        padding: 4px;
                        border: 1px dashed #dfdfdf;
                        font-weight: 600;
                        font-size: 13px;
                        width: 300px;
                        margin-bottom: 10px;
                        line-height: 20px;
                        position: relative;
                }
                .menu-subitem .titulo {
                        display: block;
                        margin-right: 22px;
                        padding: 0 5px;
                }
                .control {
                        font-size: 12px;
                        position: absolute;
                        right: 5px;
                        top: 0;
                        display: block;
                }
                .close-btn{
                        cursor: pointer;
                        position: absolute;
                        right: 5px;
                        top: 1px;
                }            
            </style>'
;
    }
}
?>

:: 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.6028 ]--