ExtJS – Desplegables

Author: Adrià Cidre  |  Category: EXT JS, Java Script

Es sencillo crear un desplegable con extJS, siempre y cuando tengas claro como, hoy vamos a ver un ejemplo muy básico de como hacerlo.

Primero tenemos que crear una variable que contenga el array representativo del del contenido del desplegable.

	var misDatos = [
     [1, 'item1'],
     [2, 'item2']
	];

A continuación creamos el desplegable, y le asignamos esta variable mediante la propiedad store.

	var combo = new Ext.form.ComboBox({
    store: new Ext.data.SimpleStore({
         id:0
        ,fields:
            [
                'myId',   //numeric value is the key
                'myText' //the text value is the value
            ]
        ,data: misDatos
    })
    ,valueField:'myId'
    ,displayField:'myText'
    ,mode:'local'
    // rest of config
});

Aparentemente eso es todo, otro día veremos ejemplos más elaborados.

Aqui podéis encontrar varios ejemplos que os pueden ayudar a comprender mejor el elemento ComboBox.

AJAX Entre Dominios – Proxy PHP

Author: Adrià Cidre  |  Category: Java Script, PHP

Javascript tiene una limitación por la que no se permite hacer llamadas AJAX entre dos dominios distintos. Como todas las limitaciones se ha superado de una forma u otra.

Hoy vamos a ver como superar esta limitación mediante un proxy PHP, y en los siguientes días veremos como hacerlo con CSSHTTPrequest y con JSONP.

Bien, vamos al trapo. Para empezar tenemos que desarrollar un proxy en PHP que haga las peticiones entre dominios en el lugar de Javascript, de este modo podemos llamar desde Javascript a nuestro script ‘proxy.php’ sin salir del dominio actual.

	define ('HOSTNAME', 'http://www.dominiodestino.com/');
	$path = ($_POST['path']) ? $_POST['path'] : $_GET['path'];
	$url = HOSTNAME.$path;
	$session = curl_init($url);

	if ($_POST['path'])
		{
		$postvars = '';
		while (list($clau, $valor) = each($_POST))
			{
			$postvars .= $clau.'='.$valor.'&';
			}
		curl_setopt ($session, CURLOPT_POST, true);
		curl_setopt ($session, CURLOPT_POSTFIELDS, $postvars);
		}
	curl_setopt($session, CURLOPT_HEADER, false);
	curl_setopt($session, CURLOPT_RETURNTRANSFER, true);

	$xml = curl_exec($session);
	header ("content-type: text/xml");

	echo $xml;
	curl_close($session);

Podemos hacer peticiones AJAX a este script como si se las hiciéramos al dominio de destino, simplemente teniendo en cuenta que debemos pasar la variable path con el path del dominio de destino.

En prototype la petición sería:

	new Ajax.Request("proxy.php", {
	  method: 'post',
	  parameters: "&path=index.php&text=hola",
	  onSuccess: function(transport){
	  	alert(transport.responseText);
	  }
	});

Es una solución funcional pero deja bastante que desear, puesto que no solo estamos consumiendo ancho de banda del cliente, sino que además lo estamos haciendo de nuestro servidor, por lo que las peticiones tardarán ‘el doble’ en responder.
Afortunadamente y como comentaba antes no es la única solución, por eso veremos cuales són las otras en los siguientes posts.

Javascript – Alert a medida

Author: Adrià Cidre  |  Category: Java Script

Bueno, hoy vamos a ver como podemos sobrescribir, el ‘horrible’ alert de javascript por uno más ‘moderno’, o por lo menos poder aplicarle estilos.

Para ello reaprovecharemos la función del último post:

function $(objID){
	return document.getElementById(objID);
}

Creamos entonces la clase que va a sustituir la que tiene por defecto JavaScript,


	function MyAlert( sAlert ) {
		var alt;
		if ((this.NS4) || (this.NS6)) {//[ Netscape ]//
			alt = window.pageYOffset;
		} else {
			alt = document.documentElement.scrollTop;
		}
		resizeMessage();

		myAlert = $("myAlert");
		if(!myAlert){
			var myAlert = document.createElement("div");
			myAlert.id = 'myAlert';
			document.body.appendChild(myAlert);

			var inMyAlert = document.createElement("div");
			inMyAlert.className = 'myAlert';
			myAlert.appendChild(inMyAlert);

			var myAlertText = document.createElement("div");
			myAlertText.id = 'myAlertText';
			inMyAlert.appendChild(myAlertText);

			var closeAlert = document.createElement("div");
			closeAlert.className = 'closeAlert';
			closeAlert.onclick = function(){closeMessage();}
			inMyAlert.appendChild(closeAlert);
		}
	  $("myAlertText").innerHTML = sAlert;
	  myAlert.style.display = "block";  

		myAlert.style.marginTop = alt+"px";
		myAlert.style.display = 'block';
	}

y luego claro está le decimos a la página que a partir de ahora esta será la función alert por defecto.

	window.alert = MyAlert;

Creamos un botón para cerrar el alert:

	function closeMessage(){
		$("message").style.display = 'none';
		$("myAlert").style.display = 'none';
	}

Hasta aquí ya lo tenemos pero debemos tener cuidado con la capa gris transparente del fondo hay que hacer que ocupe el máximo de la página, para ello tenemos la siguiente función.

	function resizeMessage(){
		var body = document.getElementsByTagName("body")[0];
		var message = $('message')

		if(!message){
			var message = document.createElement("div");
			message.className = 'message';
			message.id = 'message';
			document.body.appendChild(message);
		}

		message.style.display = 'block';

		var isIE = '\v' == 'v';
		if (isIE){
			var body = document.getElementsByTagName("body")[0];
			message.style.height = body.offsetHeight-4+"px";
			message.style.width = body.offsetWidth-20+"px";
		} else {
			message.style.height = window.offsetHeight+"px";
			message.style.width = window.offsetWidth+"px";
		}
	}

Incluimos en la cabecera algún CSS para hacerlo bonito


			

y para llamar a la función.


Si queréis descargaros el código podéis hacerlo desde aqui.

5 sencillas formas de mostrar imagenes transparentes en IE6

Author: Adrià Cidre  |  Category: Java Script

Cuantas veces te ha pasado que has creado un sitio perfecto en photoshop, o en mi caso fireworks, lo desarrollas perfectamente con pngs y cuando ya lo tienes finalizado y queda perfectamente, compruebas que todo funcione bien en IE6 i plas!!! no te coge las transparencias de los pngs.

Os voy a mostrar 5 modos sencillos de evitar esta problemática de Internet explorer.

Unit PNG Fix

Imagen 2.png

Desventajas: No os va a mostrar correctamente las transparencias que tengáis en imágenes enlazadas desde un background.
Podéis descargarlo desde aqui

DD_BelatedPNG Fix

Imagen 3.png

Desventajas: ninguna aparentemente, probablemente es la mejor solución a este bug de IE6.
Podéis descargarlo desde aqui

IE7.js Fix

7E33E727-9C62-43F5-BDE5-8F3B0060BBD7.jpg

Desventajas: Seguramente observarás que este plugin es más pesado que los anteriores, esto es porqué corregir la transparencia de IE6 es solo una de las cosas que hace, además soluciona algunos otros inconvenientes de nuestro ‘navegador favorito’.
Podéis descargarlo desde aqui

Twin Helix Fix (from Angus Turnbull)

9FC1B43B-63C4-47F4-A856-15525099C1D3.jpg

Desventajas: En lugar de hacer referencia a un archivo JavaScript, esta revisión requiere el uso de la propiedad CSS “behavior”.
Podéis descargarla desde aqui

Lo lo arregles
Si ninguno de estas soluciones os convence siempre podéis hacer una simple condición en javascript.

if ($.browser.msie && $.browser.version == 6.0) {
alert("Por favor actualiza tu navegador!);
}

Puedes ver el artículo original en NETUTS incluyendo un videotutorial.

Pixastic: manipulación de imágenes con Java Script

Author: Adrià Cidre  |  Category: Java Script

Pixastic es una librería escrita en Javascript que nos permite modificar las imágenes sin necesidad de subirlas al servidor, con lo que podemos hacer modificaciones como reducir el tamaño antes de procesar la imagen.

Imagen 1.png

Es realmente sorprendente la cantidad de funciones que podemos encontrar en esta librería como por ejemplo Cortar, Redimensionar, Brillo/Contraste, Invertir etc… Es prácticamente un miniPhotoshop, en JS.

La compatibilidad con exploradores es prácticamente total puesto que es compatible con las últimas versiones de IE, FireFox, Safari u Opera.

Podéis ver una demo aqui o consultar su documentación aqui

Google Syntax Highlighter

Author: Adrià Cidre  |  Category: Java Script

Es un tema que se ha tratado mil y una veces, pero la verdad es que me ha costado un rato instalarlo en wordpress. Así que lo voy a relatar paso a paso para que no me vuelva a pasar

Google Syntax Highlighter es una librería Java Script que básicamente permite poder colorear el código fuente que colgamos en nuestras páginas web.

Antes de nada hay que descargar el código fuente desde aquí . Una vez lo tengáis descomprimido deberíais subirlo al directorio ‘wp-content/plugins/’ de vuestra instalación de wordpress.

El siguiente paso es enlazarlas librerías del Google Syntax Highlighter en nuestra plantilla HTML, como sugería en la página oficial de este proyecto, he colocado el siguiente código hacia el final del documento. Para ello he abierto el fichero “wp-content/themes/myTema/footer.php” y justo antes de la etiqueta body he insertado el siguiente código:








Como básicamente voy a postear código PHP, Mysql, HTML, XML, o CSS pues he añadido dichas librerías.

Una vez echo esto solo tienes que escribir en uno de tus posts el siguiente código:

  ... Mi código ...

De este modo podrás presentar trozos de código como lo he hecho yo en esta página.