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.

La nostra messagebox ora ben si presta ad essere usata in applicazioni.

Tuttavia ancora ha un difetto non indifferente: posso creare una sola istanza (ovvero, i metodi di callback accedono genericamente all'oggetto msgBox, senza avere una possibilità di identificarne l'origine).

Quindi: per poter posizionare dinamicamente la messagebox a seconda delle necessità dovrò invocare il metodo di posizionamento ad ogni chiamata: isolo la funzione e mi creo un paio di proprietà per accedere all'allineamento dal metodo esterno:

	this.horizontalAlign = "center"
this.verticalAlign = "center"

E creo la nuova funzione setDivAlign() che verrà invocata automaticamente da show()

_msgBox.prototype.setDivAlign = function()
{
with (this)
{
// centro il message box
var aLayerWidth = divMsgBox.style.width;
var aLayerHeight = divMsgBox.style.height;

var cleft = parseInt(windowWidth)/2-parseInt(aLayerWidth)/2+'px';
var ctop = parseInt(windowHeight)/2-parseInt(aLayerHeight)/2+'px';

switch (horizontalAlign)
{
case "left":
cleft = "1px";
break;
case "right":
cleft = "" + parseInt(windowWidth)-parseInt(aLayerWidth) + "px";
break;
}


switch (verticalAlign)
{
case "top":
ctop = "1px";
break;
case "bottom":
ctop = "" + parseInt(windowHeight)-parseInt(aLayerHeight) + "px";
break;
}

divMsgBox.style.left = cleft;
divMsgBox.style.top = ctop;
}
}

Ecco fatto. Ora ho un workaround per il problema (posso usare un'unica msgBox e visualizzarla in posizioni diverse; sarà sufficiente posizionarla con 

		msgBox.horizontalAlign = 'center';
msgBox.ask('dormi?', elaboraRisposta, 'una domanda')

prima dell'invocazione.

 


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