PHP: Enviar post a Twitter

Author: Adrià Cidre  |  Category: PHP

Os dejo una función para enviar mensajes a Twitter desde PHP.


function tweet($message, $username, $password)
{
  $context = stream_context_create(array(
    'http' => array(
      'method'  => 'POST',
      'header'  => sprintf("Authorization: Basic %s\r\n", base64_encode($username.':'.$password)).
                   "Content-type: application/x-www-form-urlencoded\r\n",
      'content' => http_build_query(array('status' => $message)),
      'timeout' => 5,
    ),
  ));
  $ret = file_get_contents('http://twitter.com/statuses/update.xml', false, $context);

  return false !== $ret;
}

JQuery – Reset de un formulario

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

A continuación se muestra como extender el núcleo de JQuery para poder hacer uso de la función reset() de un formulario en JQuery

	$.fn.extend({
		reset: function() {
	   	return this.each(function() {
				$(this).is('form') && this.reset();
	   	});
		}
	});

PHP: Aspectratio, redimension de imagenes al vuelo.

Author: Adrià Cidre  |  Category: PHP

Buenas a todos,

En uno de los comentarios de uno de los posts de este blog, Víctor nos comentaba como podía redimensionar imágenes con PHP, hace años que utilizo esta técnica, y personalmente la llamo aspectratio.

El script en cuestión recibe tres parámetros:

p: el path donde está la imagen original, puede ser una url o un fichero en el servidor.
w: el ancho máximo que queremos que tenga la imagen final
h: el alto máximo que queremos que tenga la imagen final.


$datos = getimagesize($nombre);
if($datos[2]==1){$img = @imagecreatefromgif($nombre);}
if($datos[2]==2){$img = @imagecreatefromjpeg($nombre);}
if($datos[2]==3){$img = @imagecreatefrompng($nombre);} 

$ratio = ($datos[0] / $anchura);
$altura = ($datos[1] / $ratio); 

if($altura>$hmax){$anchura2 = $hmax*$anchura/$altura;$altura=$hmax;$anchura=$anchura2;}
$thumb = imagecreatetruecolor($anchura,$altura); 

if($datos[2]==1)
	{
	$trnprt_indx  = imagecolortransparent($img);
	$trnprt_color = imagecolorsforindex($img, $trnprt_indx);
	$trnprt_indx  = imagecolorallocate($thumb, $trnprt_color['red'], $trnprt_color['green'], $trnprt_color['blue']);

	imagefill($thumb, 0, 0, $trnprt_indx);
	imagecolortransparent($thumb, $trnprt_indx);
	}
elseif ($datos[2]==3)
	{
	imagealphablending($thumb, false);
	$color = imagecolorallocatealpha($thumb, 0, 0, 0, 127);
	imagefill($thumb, 0, 0, $color);
	imagesavealpha($thumb, true);
	}

imagecopyresampled($thumb, $img, 0, 0, 0, 0, $anchura, $altura, $datos[0], $datos[1]); 

if($datos[2] == 1){header("Content-type: image/gif"); imagegif($thumb);}
if($datos[2] == 2){header("Content-type: image/jpeg"); imagejpeg($thumb);}
if($datos[2] == 3){header("Content-type: image/png"); imagepng($thumb); } 

imagedestroy($thumb); 

Este script escupe por pantalla la imagen, con lo que podemos llamarla para que nos convierta imágenes al vuelo.

Esta es una opción muy válida si no tienes acceso a instalar librerías en tu hosting. Si puedes hacerlo, deberías echarle un ojo a ImageMagick que ofrece unos resultados infinitamente mejores que no la librería GD (más extendida en hostings).

Javascript – Crear un Bookmark

Author: Adrià Cidre  |  Category: Java Script

Bueno como no podia ser de otra manera, Firefox, IE y Opera se lo montan diferente a la hora de gestionar los bookmarks, por lo que será necesario la siguiente función para poder crear un enlace que nos permita añadir un bookmark en cualquiera de los tres navegadores anteriores.


function CreateBookmarkLink(title, url) {
	if (window.sidebar) { // Mozilla Firefox Bookmark
		window.sidebar.addPanel(title, url,"");
	} else if( window.external ) { // IE Favorite
		window.external.AddFavorite( url, title); }
	else if(window.opera && window.print) { // Opera Hotlist
		return true; }
 }

ExtJS – ComboBox opción por defecto

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

Quizá soy yo no he sido capaz de encontrar la solución correcta pero me parece que una cosa tan simple como tener una opción seleccionada por defecto en un desplegable, no debería ser una tarea tan y tan complicada.

Aquí tenéis el código para poder tener una opción seleccionada por defecto en un desplegable con EXTJS

{
	xtype		: 'combo',
        fieldLabel	        : 'Sexo',

	hiddenName	: 'sexo',
        name		: 'sexo',

	mode		: 'local',
        width		: 250,
	displayField     : 'name',
	valueField	        : 'id',
	store                : new Ext.data.SimpleStore({
	        id		: 0 ,
	        fields	: [  'id', 'name' ],
	        data	: [
			    [1, 'Hombre'],
			    [2, 'Mujer']
			]
	    }),
	listeners	: {
		beforerender: function(combo){
			combo.setValue(1);// El ID de la opción por defecto
		}
	},
},

Si bien es cierto que podemos ponerle un valor por defecto con la propiedad value, Nos pone como valor el nombre es decir ‘Hombre’ o ‘Mujer’ y no el ID ‘1′ o ‘2′.

Lo ‘único‘ que hay que hacer entonces es utilizar la propiedad ‘hiddenName‘ y poner en el listenerbeforerender‘, que se ejecuta una vez se ha cargado el store, una función que nos cargue como valor el ID que queramos.
Me ha costado encontrar como hacerlo, espero que no perdáis tanto rato como yo, si tenéis dudas preguntad :-)

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.

Javascript – urlencode

Author: Adrià Cidre  |  Category: PHP

Hay veces en que la función de javascript escape() no es suficiente, como por ejemplo si hay que codificar ‘?’. No sé exactamente cuando ni donde encontré esta función que imita el urldecode de PHP pero migrada a javascript, espero que os sea tan útil como a mi.


function urlencode( str ) {

    var histogram = {}, histogram_r = {}, code = 0, tmp_arr = [];
    var ret = str.toString();

    var replacer = function(search, replace, str) {
        var tmp_arr = [];
        tmp_arr = str.split(search);
        return tmp_arr.join(replace);
    };

    // The histogram is identical to the one in urldecode.
    histogram['!']   = '%21';
    histogram['%20'] = '+';

    // Begin with encodeURIComponent, which most resembles PHP's encoding functions
    ret = encodeURIComponent(ret);

    for (search in histogram) {
        replace = histogram[search];
        ret = replacer(search, replace, ret) // Custom replace. No regexing
    }

    // Uppercase for full PHP compatibility
    return ret.replace(/(\%([a-z0-9]{2}))/g, function(full, m1, m2) {
        return "%"+m2.toUpperCase();
    });

    return ret;
}

EXT JS – Hola Mundo!

Author: Adrià Cidre  |  Category: EXT JS

Hoy vamos a ver como empezar con EXT JS, para empezar hay que descargar la librería desde su página oficial. Una vez descomprimida, creamos un fichero como este:

<html>
<head>
<link rel="stylesheet" type="text/css" href="../ext-2.2/resources/css/ext-all.css" />
<script type="text/javascript" src="../ext-2.2/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="../ext-2.2/ext-all.js"></script>
<script language=''>
 Ext.onReady(function(){
        alert('Hola Mundo');
 });
</script>
</head>
<body>



Tener en cuenta que las librerías deben estar linkadas correctamente. Esto nos mostrará una especie de alert() al esilo javascript pero mucho más moderno….

imagen-11

No está mal para solo una linea de código verdad?

EXTJS – Empecemos

Author: Adrià Cidre  |  Category: PHP

 

 

Estos días he estado metido con EXTJS, y he decidido abrir una nueva sección dedicada a este framework.

ExtJS

En un principio pensé que EXTJS era una librería más como prototype, jquery o motools, sin embargo es algo completamente distinto. EXTJS es un framework que te permite desarrollar herramientas de gestión al estilo las del escritorio de toda la vida, pero a través de web.

Sinceramente creo que es un aspecto muy interesante, el desarrollar aplicaciones más tradicionales vía web, puesto que el usuario está mas familiarizado con estas que con cualquier otra.

Os dejo un video con una demo para que veáis de que es capaz esta maravilla.

Plantillas Email HTML gratis

Author: Adrià Cidre  |  Category: HTML

Email templateCuando estamos desarrollando por ejemplo un gestor de newsletter, es un coñazo tener que probar si el HTML que intentamos enviar es válido para todos los navegadores, y probablemente perdamos más tiempo del necesario.

He encontrado una página con unas cuantas plantillas para enviar emails en formato HTML sin necesidad de rompernos la cabeza.

Espero que os sea de utilidad.

Link: 30+ Free HTML email templates