!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/proyectos/toba_referencia/php/tutorial/   drwxrwxr-x
Free 13.99 GB of 61.93 GB (22.6%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     pant_javascript.php (4.79 KB)      -rwxrwxr-x
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php 
require_once("tutorial/pant_tutorial.php");

//--------------------------------------------------------------
class pant_introduccion extends pant_tutorial
{
    function 
generar_layout()
    {
        
$api toba_parser_ayuda::parsear_api_js('index''documentación javascript''toba_editor');                
        
$codigo_ej '<?php
class ci_X extends toba_ci
{        
        function extender_objeto_js()
        {
            echo "
                {$this->objeto_js}.evt__guardar = function() {
                    return prompt(\"Desea Guardar?\");
                }
            ";
        }
}
?>
'
;        
        echo 
"
            <p>
                En el capítulo de componentes se utilizó la extensión PHP
                para personalizar su comportamiento. Dentro de la extensión en PHP
                es posible modificar el comportamiento del componente en el cliente utilizando 
                javascript. En este capítulo se va trabajar exclusivamente con la parte Javascript
                de los componentes, para esto Toba cuenta con una jerarquía de clases
                similar a la que existe en PHP, para profundizar sobre la API está disponible la 
$api.
            </p>
            
            <p>
                Es importante tener en cuenta la forma en la cual se extiende un componente en javascript.
                A continuación se muestra un código muy simple que agrega una confirmación en el cliente 
                cuando el usuario clickea Guardar: 
            </p>
        "
;
        echo 
mostrar_php($codigo_ej);
        echo 
"
            <p>
                El código muestra que el método PHP a extender es <strong>extender_objeto_js()</strong>
                dentro del cual es necesario insertar el código Javascript. Este lenguaje no
                soporta clases en la forma convencional de los lenguajes Java o PHP, por lo cual
                no se <em>hereda</em> del componente sino que directamente se lo cambia, esto es 
                por ejemplo si se quiere agregar un método a un objeto <em>mi_componente</em>
                se hace definiendo <em>mi_componente.tal_metodo = function() { var i = 20; ...}</em>.
            </p>
            <p>
                Entonces en la extensión PHP, se extiende la <strong>clase</strong> (por ejemplo
                toba_ei_formulario) mientras que en la de Javascript se extiende el <strong>
                objeto</strong> puntual. El nombre de este objeto es desconocido al programador
                (se compone del id del componente) por lo que es necesario pedirselo a la clase PHP
                por eso se hace    <em>{\$this->objeto_js}.metodo = ...</em>.
            </p>
            <p>
                Finalmente cabe recalcar que las extensiones javascript se hacen dentro del mismo
                componente por motivos de orden y modularidad, pero no es necesariamente la única forma
                ya que el javascript en definitiva forma parte del HTML resultante de la operación, si
                se mira el código fuente de la página HTML se podrá ver la extensión y su entorno.
            </p>
        "
;
    }
}


//--------------------------------------------------------------
class pant_eventos extends pant_tutorial
{
    function 
generar_layout()
    {
        
$codigo '{$this->objeto_js}.evt__sacar_foto = function() {
    this._parametros = prompt("Nombre de la foto","nombre de la foto");
    if (this._parametros != "" && this._parametros != null) {
        return true;
    }
    return false;
}'
;
        echo 
"
            <p>
                Así como el evento en PHP significa la interacción del usuario con el servidor, en 
                Javascript existe el mismo criterio, sólo que es la previa de esta interacción.
                Un evento antes de viajar al servidor escucha un <em>listener</em> en javascript.
                Por ejemplo si un formulario dispara un evento <em>modificacion</em>, en la extensión
                del mismo formulario se puede atrapar el método <em>evt__modificacion</em> y 
                retornar true/false para permitir o no la ejecución del evento (entre otras cosas que se 
                pueden hacer).
            </p>
            <p>
                Un ejemplo real es el siguiente javascript perteneciente al catalogo de items
                del editor, la idea es que cuando el usuario presiona el botón <em>Sacar Foto</em>
                se le pregunte en Javascript el nombre que toma la foto y luego se tome la foto
                en el servidor. En this._parametros se guarda el valor del parámetro
                que termina en el servidor (en este caso el método evt__X__sacar_foto(\$nombre_foto))
            </p>
        "
;
        echo 
mostrar_php($codigo);
    }    
}


//--------------------------------------------------------------
class pant_metodos extends pant_tutorial
{
    function 
generar_layout()
    {
        
$codigo '{$this->objeto_js}.iniciar_viejo = {$this->objeto_js}.iniciar;

{$this->objeto_js}.iniciar = function() {
    //Extensión
    this.iniciar_viejo(); //Llamada al original
    //Extensión
}'
;        
        echo 
"
            <p>
                La opción a atrapar eventos predefinidos es redefinir el comportamiento
                de métodos ya existentes. En general no es una metodología recomendada
                pero a veces es necesaria para casos no contemplados.
            </p>
            <p>
                Al no existir la herencia clásica, la redefinición del método tiene
                que simularla manualmente, esto es guardar el método viejo y definir el
                nuevo llamando cuando sea necesario al viejo. Vemos un ejemplo:
            </p>
        "
;
        echo 
mostrar_php($codigo);
    }    
}


?>

:: 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: 1.0497 ]--