FasterJoomla

Joomla security and optimization

Visita il nuovo sito FasterJoomla che raccoglie i nostri articoli ed estensioni per Joomla!

Si parla di sicurezza, velocità, sviluppo di estensioni per Joomla.

Trovate pubblicate anche le nostre guide pratiche.

Il funzionamento di un oggetto richiede che anche la comunicazione iniziata dall'oggetto verso il programma chiamante sia gestita dall'interno dell'oggetto. In inglese si usa il termina CALLBACK per indicare una seconda funzione passata come parametro da una prima funzione, e che verrà invocata dalla prima funzione quando si saranno verificati eventi.

L'analogo in un linguaggio di programmazione che dispone di una IDE è il controllo bottone, che ha una proprietà onclick: là collegheremo una nostra funzione. Al verificarsi dell'evento la funzione collegata alla proprietà onclick verrà invocata.

In javascript non abbiamo grossi problemi a passare la funzione, basta passarla per nome.

Per comodità la registro in una variabile.

 

Quindi qui ho definito una prima procedura che collega gli eventi ai bottoni: e già che c'è gli assegna anche i valori standard per il testo ed il messaggio di risposta che dovranno fornire; Quindi assegna come proprietà dell'oggetto     this.callBackFunction la funzione che andrà invocata quando l'utente chiude il message box.

Il funzionamento è piuttosto lineare: assegno a buttonXDiv il <DIV> corrispondente, e lo trovo usando il suo ID; 

_msgBox.prototype.attachEvents = function (aCallBackFunction)
{
    if (!this.button1Div)
        this.button1Div = document.getElementById("msgBox1");
    if (!this.button2Div)
        this.button2Div = document.getElementById("msgBox2");

Questa è simpatica: questa istruzione può tradursi: if (this.button1) return "inline" else return "none". Molto sintetica, permette di ridurre le dimensioni del codice aumentando la leggibilità. Se ne usate più di una nella stessa riga, commentate e spiegate cosa state facendo: altrimenti lo capirete solo voi.

    this.button1Div.style.display=(this.button1?"inline":"none");
    this.button2Div.style.display=(this.button2?"inline":"none");
    this.callBackFunction = aCallBackFunction

    // assegnare testi e funzioni ai pulsanti. L'evento deve prima essere de-assegnato altrimenti man mano che questa funzione viene eseguita, mi ritroverò ad eseguire l'evento onclick 2,3,4 volte per ciascun click.

 

    if (this.button1)
    {
        this.button1Div.detachEvent('onclick', this.buttonEvent);
        this.button1Div.attachEvent('onclick', this.buttonEvent);
        this.button1Div.msgResult = this.button1Result;
    }
    if (this.button2)
    {
        this.button2Div.detachEvent('onclick', this.buttonEvent);
        this.button2Div.attachEvent('onclick', this.buttonEvent);
        this.button2Div.msgResult = this.button2Result;
    }
}

 

 


I file descritti in questo articolo si possono scaricare dall'introduzione