Rapid: librerías para CodeIgniter

rapid.pngRapid es un conjunto de librerías para el framework CodeIgniter que nos ayuda a desarrollar nuestras aplicaciones de forma rápida.
Es necesaria la version 1.5.4 de CodeIgniter para poder utilizarla, y gracias a esta librería podremos un GUI para datos de forma rápida, tener un modo estándar de desarrollar tus backends, no tener que usar librerías que necesiten configuración, realizar aplicaciones sin PEAR, uso de temas y mucho más.
Si ya CodeIgniter es uno de los mejores frameworks para PHP que existen, Rapid puede ser una ayuda más para desarrollos rápidos.
Rapid
Gracias David

links for 2007-09-21

Firefox Wonder Edition: Firefox más rápido

Firefox Wonder Edition es una versión especial de Firefox que añade a una de las mejores versiones de Firefox algunos extras para que vaya más rápido, el único problema es que solo funciona bajo Windows.
No es necesario reemplazar la versión actual de Firefox, ya que se trata de una versión portable, con lo que podremos tenerlo en nuestra unidad USB u otro soporte para poder ejecutarlo en el ordenador que sea sin necesidad de instalación. Tan solo es necesario cerrar cualquier otra versión de Firefox antes de ejecutar esta.
A parte de hacer un uso más eficiente de CPU y memoria, tiene instalado algunos add-ons que mejoran el rendimiento de Firefox, como son Fasterfox, Flashblock y NoScript.
Firefox Wonder Edition
Vía / Digg

PDT 1.0: PHP en Eclipse

eclipse.pngHace tiempo que hablamos de PDT, un conjunto de herramientas para el desarrollo de PHP, realizado por Zend para la plataforma Eclipse.

En esta ocasión ha salido por fin la versión 1.0, que añade las siguientes características:

  • Editores sensibles al contexto, que facilitan el resaltado de texto, asistente de código y code folding.
  • Integración con el proyecto modelo de Eclipse, quie permite usar las vistas de ficheros y proyectos, además añade un nuevo explorador para PHP.
  • Soporte para debug incremental del código PHP.
  • Framework y API que permiten el desarrollo de código de forma más sencilla.

PDT

Vía / International PHP Magazine

links for 2007-09-20

Magento: e-commerce open source

magento.pngMagento es una aplicación open source para poder instalar un software de e-commerce en nuestro sitio web. Así podremos tener nuestra propia tienda online de forma sencilla y gratuita.
magento2.png
Dentro de las características para los usuarios nos encontramos con optimización para motores de búsquedas (SEO), comunicación con los clientes, envío a varias direcciones, búsquedas, comparación de productos, etiquetado de productos, opiniones sobre productos, checkout, carrito de la compra y cuentas para clientes.
A parte, nos ofrece la posibilidad de genera informes, definir reglas para los impuestos, manejar productos y catálogos, CMS, grupos de clientes, importar y exportar, ACL, multiples sitios web, múltiples idiomas y muchas cosas más.
Magento
Vía / WebAppers

Elements of Design: showcase de elementos web

Elements of Design es una galería de elementos contenidos en páginas web que nos puede ayudar a diseñar partes de la página y añadirlas al diseño general. Es como CSSMania pero en vez de diseños completos, enfocado únicamente a elementos.
elementsofdesign.png
Podremos encontrar diseños de formularios para comentarios de blogs, comentarios de blogs, calendarios, código, iconos, texto entrecomillado, formularios de registro, cajas de búsqueda y tipología de cabeceras.
Elements of Design

links for 2007-09-19

Laboratorio: reordenar lista mediante mootools

Estoy empezando a curiosear Mootools, y aunque me está gustando bastante, si que echo en falta una documentación más detallada, no solo explicar como va el API, ya que a veces son necesarios ejemplos más básicos para no tener que estar buscando en el API.

En este caso voy a reorganizar mediante drag&drop una lista de elementos, la cual puede tener subelementos también, un típico ejemplo de categorías y subcategorías. Para ello me crearé una lista cuyos elementos tendrán el estilo categoria y cuyos subelementos tendrán el estilo subcategorias, necesario para diferenciar estilos y comportamiento.

ordenarlistas.png

<ul id="lista_categorias">
<li class="categoria">Elemento 1</li>
<li class="categoria">Elemento 2
<ul>
<li class="subcategoria">Elemento 2.1</li>
<li class="subcategoria">Elemento 2.2</li>
<li class="subcategoria">Elemento 2.3</li>
<li class="subcategoria">Elemento 2.4</li>
<li class="subcategoria">Elemento 2.5</li>
<li class="subcategoria">Elemento 2.6</li>
</ul>
</li>
<li class="categoria">Elemento 3</li>
<li class="categoria">Elemento 4
<ul>
<li class="subcategoria">Elemento 4.1</li>
<li class="subcategoria">Elemento 4.2</li>
<li class="subcategoria">Elemento 4.3</li>
<li class="subcategoria">Elemento 4.4</li>
</ul>
</li>
<li class="categoria">Elemento 5</li>
<li class="categoria">Elemento 6</li>
<li class="categoria">Elemento 7</li>
<li class="categoria">Elemento 8</li>
<li class="categoria">Elemento 9</li>
</ul>

Para ser lo menos intrusivo que se pueda, anadiré al evento load del objeto window la carga de las funciones necesarias para ello, siempre que exista el objeto lista_categorias (el primer ul de todos).

window.addEventListener('load', function() {
_lista();
}
, false);
function _lista() {
if ($('lista_categorias')) {
...
}

Habrá tres operaciones distintas: crear efecto drag, añadir evento drop a las categorías y añadir evento drop a las subcategorías. Digo crear efecto drag porque realmente lo que se hace es que cuando se ejecuta el evento mousedown, se crea una copia del elemento, y es este el que se mueve por la pantalla, guardando una referencia al elemento original. Hay distinción entre el evento drop de las categorías y las subcategorías porque si se trata de una categoría se añade sin más, y si es una subcategoría se añade en la categoría. A parte, si se intenta mover una categoría que contiene subcategorías, solo se añadirán las subcategorías, no la categoría.

// Drag & Drop de listado
function _lista() {
if ($('lista_categorias')) {
// Drag de cada categoria/subcategoria
// Para cada elemento li añado el evento mousedown, para que cuando se ejecute se cree una copia de ese elemento, se le de estilo semi transparente y se permita hacer drag
$$('#lista_categorias li').each(function(elemento){
elemento.addEvent('mousedown', function(e) {
e = new Event(e).stop();
window.item = elemento;
window.categoria_clone = this.clone()
.setStyles(this.getCoordinates())
.setStyles({'opacity': 0.7, 'position': 'absolute'})
.addEvent('drop', function() {console.log('DROP')})
.addEvent('emptydrop', function() {
this.remove();
}).inject(document.body);
categoria_clone.makeDraggable({
droppables: $$('#lista_categorias li')
}).start(e);
});
});
// Drop en las categorias
// Para cada categoria, le añadimos el evento drop, que permite recibir elementos "drag". Si el elemento que se recibe tiene subcategorias, entonces se cogen estas y se añaden al elemento ul que contiene, si no lo contiene, lo creamos. Si no contiene subcategorías, se añade sin más.
$$('#lista_categorias li.categoria').each(function(drop){
drop.addEvents({
'drop': function() {
window.categoria_clone.remove();
var ul = window.item.getElement('ul');
if (!drop.getElement('ul')) {
(new Element('ul')).inject(drop);
}
dropul = drop.getElement('ul');
if (ul) {
ul.getElements('li').each(function(li) {
li.inject(dropul);
});
ul.remove();
} else {
window.item.inject(dropul);
}
drop.setStyle('background', '#FFFFFF');
//dropFx.start('7389AE').chain(dropFx.start.pass('ffffff', dropFx));
},
'over': function() {
drop.setStyle('background', '#DDDDFF');
//dropFx.start('98B5C1');
},
'leave': function() {
drop.setStyle('background', '#FFFFFF');
//  				window.categoria_clone.remove();
//dropFx.start('ffffff');
}
})
});
// Si cae el drop en una subcategoria lo inserto en el padre
$$('#lista_categorias li.subcategoria').each(function(drop){
drop.addEvents({
'drop': function() {
window.categoria_clone.remove();
var ul = window.item.getElement('ul');
dropul = drop.parentNode;
if (ul) {
ul.getElements('li').each(function(li) {
li.inject(dropul);
});
ul.remove();
} else {
window.item.inject(dropul);
}
}
})
});
}
}

Ejemplo

Descargar ódigo

links for 2007-09-18