Mootools Image Cropping
- 22/09/2008
- 8:31 pm
MooCrop es una utilidad para cortar imágenes de forma visual en web utilizando Mootools. Esta librería te permite seleccionar parte de una imagen de forma gráfica, esto unido a un script de servidor te permitirá cortar imágenes sin necesidad de programas adicionales.
Caracteristicas
MooCrop es altamente personalizable, entre las cualidades mas destacables tenemos:
- Completamente personalizable con CSS
- Permite enmascarar la imagen a cortar.
- Facilidad para escalar y mover las zonas a cortar.
- Eventos personalizables.
- Rápido, código limpio
- Funciona en IE 6 & 7, FF 2+, Opera 9.2 y Safari 2 & 3..
Utilizando MooCrop
Lo primero es descargar las librerías: mootools.js y MooCrop.js. Luego de ello procedemos a incluir estas librerías en el header del HTML.
El siguiente paso es colocar una imagen al cual hay que agregarle un identificador para luego llamarlo con esta librería.
-
<img src="image.jpg" id="imgcrop" />
Luego llamamos a la clase MooCrop el cual recibe como parámetro el identificador de la imagen al cual deseamos mostrar la opción para cortar la imagen, con esto ya tenemos la opcion para seleccionar la parte de la imagen que deseamos cortar.
-
window.addEvent('load',function(){
-
var crop = new MooCrop('imgcrop');
-
});
Ahora el siguiente paso es enviar los datos del bloque seleccionado a un script PHP el cual es el encargado de cortar la imagen original. Entonces lo que hacemos es agregar una función en el evento Doble Click el cual envía los datos al script crop.php.
-
window.addEvent('load',function(){
-
var crop = new MooCrop('imgcrop');
-
crop.addEvent('onDblClk', function(img, crop, bound){
-
$('cropped').src = "crop.php?action=crop&w="+crop.width+"&h="+crop.height+"&x="+crop.left+"&y="+crop.top;
-
});
-
});
Entonces uniendo estos elementos, tenemos listo nuestra aplicación para cortar imágenes al vuelo el cual puedes ver en MooCrop Demo. Este script lo puedes utilizar por ejemplo cuando tus usuarios suben sus fotos para darles la posibilidad de cortarlas antes de subirlas.
Posts Relacionados
- FancyForm: CSS para checkbox
- Swiff: Mootools Flash Plugin
- Introducción a Mootools
- Mootools Calendar
- Lightbox: Imagenes Emergentes
AutoClear en Formularios HTML
- 19/08/2008
- 12:44 am
Uno de los métodos mas prácticos para indicar a los usuarios que tipo de información debe ingresar en los formularios es incluir un valor inicial. El siguiente ejemplo ayudará a mostrar valores por defecto los cuales se limpiarán al acceder al campo y volverán a mostrar el valor iniciar si no se ha ingresado información.
Preparando el Formulario
Lo primero es crear nuestro formulario, lo hacemos de la manera normal donde incluimos los valores iniciales que utilizaremos para indicar al usuario que valores ingresar.
AutoClear Utilizando Javascript
La primero forma es utilizar solamente Javascript, para ello nos hemos basado en el script propuesto en Unobtrusive JavaScript: Auto-Clear and Restore Multiple Form Inputs on Focus, este script se ejecuta al cargarse la página y recorre todos los elementos input text y guarda el valor inicial del formulario en la propiedad rel, luego agrega los eventos a ejecutarse en onfocus, onblur y ondblclick, en donde se verifica si se ha ingresado algún valor para mostrar la ayuda.
-
function init(){
-
var inp = document.getElementsByTagName('input');
-
for(var i = 0; i <inp.length; i++) {
-
if(inp[i].type == 'text') {
-
inp[i].setAttribute('rel', inp[i].defaultValue);
-
inp[i].onfocus = function() {
-
if(this.value == this.getAttribute('rel')) {
-
this.value = '';
-
} else {
-
return false;
-
}
-
}
-
inp[i].onblur = function() {
-
if(this.value == '') {
-
this.value = this.getAttribute('rel');
-
} else {
-
return false;
-
}
-
}
-
inp[i].ondblclick = function() {
-
this.value = this.getAttribute('rel')
-
}
-
}
-
}
-
}
-
if(document.childNodes) {
-
window.onload = init
-
}
Este script los colocamos en el header de nuestro HTML y ya tenemos el efecto AutoClear en nuestro formulario, podemos ver el resultado de este ejemplo en autoclear-javascript.html y si desean pueden ver el código fuente para ver como si incluyo el script.
AutoClear Utilizando Mootools
Si estamos utilizando Mootools, podemos reescribir esta función, utilizando los selectores de elementos y llamando a la función en el evento domready el cual es llamado cuando se ha cargado la página.
-
window.addEvent('domready', function() {
-
inp = $$('input[type=text]');
-
inp.each(function(inp) {
-
inp.setProperty('rel', inp.value);
-
inp.addEvent('focus', function(){
-
if (this.value == this.getProperty('rel')){
-
this.value = '';
-
}
-
});
-
inp.addEvent('blur', function(){
-
if (this.value == ''){
-
this.value = this.getProperty('rel');
-
}
-
});
-
inp.addEvent('dblclick', function(){
-
this.value = this.getAttribute('rel');
-
});
-
});
-
});
Nótese que hemos utilizado la función each de Mootools que nos permite recorrer todos los elemento del array que contienen los campos de texto, lo siguiente es agregar los eventos para detectar el focuso blur. Pueden ver el resultado de esta versión en autoclear-mootools.html
Posts Relacionados
- Niceforms: Formularios CSS
- BlueTripCSS Framework
- Textareas escalables
- Mootools Calendar
- Crea un Editor HTML Online
JSON con Mootools
- 20/07/2008
- 7:21 pm
JSON (JavaScript Object Notation) es un formato basado en Javascript para intercambio de datos. JSON es una alternativa a XML pues brinda sencillez al momento de leer los datos, en Javascript puede ser analizado utilizando eval(), además provee sencillez para manipular los datos. Para mas información acerca de las diferencias con XML además de sus virtudes en: JSON.
Obteniendo los datos
Para nuestro ejemplo vamos a utilizar Google AJAX Search API, el cual es un servicio que nos utilizar los resultados de búsqueda de Google. No utilizaremos la funciones que provee Google si no que lo haremos utilizando JSON, para ello encontramos documentación en Flash and other Non-Javascript Environments.
Si deseamos obtener los resultado de la búsqueda de la palabra Google, lo podemos hacer accediendo al siguiente URL:
http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=Google
Este URL devolverá un objeto conteniendo los resultados de la búsqueda en un array ademas de estadísticas de resultados:
-
{ "results": [
-
{
-
"GsearchResultClass": "GwebSearch",
-
"unescapedUrl": "http://en.wikipedia.org/wiki/Paris_Hilton",
-
"url": "http://en.wikipedia.org/wiki/Paris_Hilton",
-
"visibleUrl": "en.wikipedia.org",
-
"cacheUrl": "http://www.google.com/search?...",
-
"title": "\u003cb\u003eParis Hilton\u003c/b\u003e",
-
"titleNoFormatting": "Paris Hilton",
-
"content": "In 2006, she released her debut..."
-
},
-
{
-
"GsearchResultClass": "GwebSearch",
-
"unescapedUrl": "http://www.imdb.com/name/nm0385296/",
-
"url": "http://www.imdb.com/name/nm0385296/",
-
"visibleUrl": "www.imdb.com",
-
"cacheUrl": "http://www.google.com/search?...",
-
"title": "\u003cb\u003eParis Hilton\u003c/b\u003e",
-
"titleNoFormatting": "Paris Hilton",
-
"content": "Self: Zoolander. Socialite..."
-
},
-
...
-
],
-
"cursor": {
-
"pages": [
-
{ "start": "0", "label": 1 },
-
{ "start": "4", "label": 2 },
-
{ "start": "8", "label": 3 },
-
{ "start": "12","label": 4 }
-
],
-
"estimatedResultCount": "59600000",
-
"currentPageIndex": 0,
-
"moreResultsUrl": "http://www.google.com/search?..."
-
}
-
}, 200, null)
Creando un Proxy
Normalmente cuando se accede a datos JSON se hacen sobre el mismo dominio, pero como nosotros deseamos acceder a los datos de Google necesitamos crear un proxy para cambiar de dominio los datos recibidos. Esto por que nos browsers no permites acceder a datos de otros dominios. Entonces creamos el archivo proxy.php.
Cargando los datos con Mootools
La nueva versión de Mootools trae el método Request.JSON que permite cargar y parsear automáticamente datos JSON, para nuestro caso cargaremos los datos del proxy recién creado y lo mostraremos utilizando la función alert. Primero incluimos la librería Mootools en el header de nuestro html y luego obtenemos los datos JSON.
-
<script type="text/javascript" src="mootools.js"></script>
-
window.addEvent('domready', function() {
-
var path = "proxy.php?query=unijimpe";
-
var json = new Request.JSON({url: path, onComplete: onLoad});
-
json.get();
-
function onLoad(obj){
-
var results = obj.responseData.results;
-
for (i=0; i<results.length; i++) {
-
var tmp = results[i];
-
alert(i + " --> " + tmp.title + "\n" + tmp.url)
-
}
-
}
-
});
Pueden ver el resultado en: /json/index.html.
Como pueden observar, la función onLoad se ejecuta cuando se ha completado la carga de los datos, dentro de esta función podemos acceder a los datos recién cargados como si fueran objetos es decir podemos acceder a todas sus propiedades utilizando el operador punto (.).
Entonces si deseamos mostrar la cantidad total de resultados podríamos hacer mediante obj.estimatedResultCount, entonces para acceder a los resultados de la búsqueda accedemos a obj.responseData.results el cual contiene un array con los resultados de la búsqueda por lo cual utilizamos un FOR para acceder a cada elemento.
Ahora si deseamos mostrar estos resultados como HTML y no como alerts, lo primero es crear un div en donde escribiremos los resultados y modificar brevemente nuestro script.
-
window.addEvent('domready', function() {
-
var path = "proxy.php?query=unijimpe";
-
var json = new Request.JSON({url: path, onComplete: onLoad});
-
json.get();
-
function onLoad(obj){
-
var tmpHTML = "";
-
var results = obj.responseData.results;
-
for (i=0; i<results.length; i++) {
-
var tmp = results[i];
-
tmpHTML+= "<a href='"+tmp.url+"'>"+tmp.title+"</a>";
-
tmpHTML+= "<br />"+tmp.content+"<br/>";
-
tmpHTML+= "<i>"+tmp.url+"</i><br /><br />";
-
}
-
$("results").set("html", tmpHTML);
-
}
-
});
-
<div id="results">Loading...</div>
Pueden ver el resultado en: /json/json.html.
Finalmente, agregamos un campo te texto y un botón para crear un formulario de búsqueda para mostrar la potencia de JSON. Esto lo hacemos con el siguiente código.
-
window.addEvent('domready', function() {
-
var path = "proxy.php?query=unijimpe";
-
var json = new Request.JSON({url: path, onComplete: onLoad});
-
json.get();
-
function onLoad(obj){
-
var tmpHTML = "";
-
var results = obj.responseData.results;
-
for (i=0; i<results.length; i++) {
-
var tmp = results[i];
-
tmpHTML+= "<a href='"+tmp.url+"'>"+tmp.title+"</a>";
-
tmpHTML+= "<br />"+tmp.content+"<br/>";
-
tmpHTML+= "<i>"+tmp.url+"</i><br /><br />";
-
}
-
$("results").set("html", tmpHTML);
-
}
-
-
function sendSearch() {
-
$("results").set("html", "Loading...");
-
path = "proxy.php?query=" + $("q").value;
-
json = new Request.JSON({url:path, onComplete: onLoad});
-
json.get();
-
}
-
-
$("bt").addEvent("click", sendSearch);
-
});
Pueden ver el resultado en: /json/search.html.
Como pueden ver utilizando Mootools para manejar JSON es muy fácil el implementar aplicaciones con acceso remoto a datos o también llamado AJAX solo que no estamos utilizando XML y además tenemos la posibilidad de formatear a nuestro antojo los resultados obtenidos.
Mas Información
Posts Relacionados




