Estoy trabajando en un proyecto donde utilizo la clásica Thickbox. Y por vez número mil tuve que averiguar como manejar las ventanitas desde javascript (vaya a saber uno por qué, en la web del plugin no hay ninguna documentación sobre esto). Así que para evitarme esta tarea en el futuro, decidí tirar un minipost y luego venir a buscar la info acá.
Es simplemente utilizar la función:
tb_show(caption, url, imageGroup)
El tercer parametro es opcional, y es basicamente un array de imagenes para mostrar un slideshow.
En la url se pueden pasar los parametros para customizar la venta (height, width, TB_iframe, etc);
A pedido de varios lectores, hice una pequeña modificación sobre el plugin de jquery que habia posteado anteriormente. Con esta versión se pueden combinar los filtros de varias columnas, tal como se hace en excel.
En pocos dias pondre online un sitio donde podran encontrar autos a la venta en automotoras de Montevideo: http://www.miautomotora.com.uy/ Espero que sea de utilidad para aquellos que estan buscando cambiar o comprar un auto nuevo o usado. Mas noticias en pocos dias
Actualmente estoy desarrollando un sitio no muy grande, donde tengo varias funcionalidades del estilo listado de articulos, buscador, pagina de detalles de un articulo determinado, etc. Lo interesante es que también necesito tener un mini-cms, donde el cliente edite el contenido de una determinada página y la misma quede pública para los visitantes del sitio. El asunto es que las urls que utilizamos para ZF son del estilo sitio.com/modulo/controller/action. En mi caso, si el visitante quisiera acceder a la clásica página “Sobre Nosotros” deberia ir a una url del estilo: www.sitio.com/cms/ver/sobre-nosotros. Pero el cliente me pidió que la url sea algo asi: www.sitio.com/sobre-nosotros, lo cual obviamente iba un poco en contra del routeo estandar de ZF.
Me puse a googlear, e investigando un poco llegué a la siguiente solucion (no investigué mucho, por lo que calculo que capaz que hay alguna solución un poco mejor).
Básicamente lo que hice es extender el Zend_Controller_Router_Rewrite y fijarme si se puede dispatchear la url usando el esquema predefinido de ZF, si no se puede dispatchear seteo un controller y un action por defecto que se va a encargar de procesar el contenido del mini-cms. O sea, si me llega www.sitio.com/sobre-nosotros directamente voy a llamar al action ver del controller cms.
El código del router personalizado sería el siguiente:
class Stekl_Controller_Router_MiRouter extends Zend_Controller_Router_Rewrite
{
public function route(Zend_Controller_Request_Abstract $request)
{
$request = parent::route($request);
$dispatcher = $this->getFrontController()->getDispatcher();
if(!$dispatcher->isDispatchable($request)){
$request->setParam('pagina', $request->getControllerName());
$request->setControllerName('cms');
$request->setActionName('ver');
}
return $request;
}
}">(.*?)
No tiene nada complejo el router, simplemente lo que hago es obtener el request, luego el dispatcher y finalmente fijarme si se puede dispatchear. Si no se puede, creo un parámetro “pagina” con el valor que vino en lugar del nombre del controller. Finalmente seteo el controller y el action donde va a ocurrir la magia de interpretar el “sobre-nosotros” que me vino.
No termine aún, todavía falta decirle al Front Controller que use el router que acabo de escribir en lugar del que viene por defecto con ZF. Para ello en el bootstrap escribo lo siguiente:
$frontController = Zend_Controller_Front::getInstance();
$router = new Stekl_Controller_Router_MiRouter();
$frontController->setRouter($router);
$frontController->dispatch();">(.*?)
Y listo, con esto debería salir funcionando. Obviamente se podrian armar cosas un poco más elaboradas. Pero para lo que necesito me funciona.
Dando vueltas por la web encontre una genial recopilacion de tutoriales de Zend Framework. Tiene algunos para quiens recien comienzan a usar ZF y tiene otros que no son tan basicos. Espero que sirvan para algo:
Mi amigo Sebastián (smart) me pidió que le dé una manito con un pequeño javascript para realizar filtros sobre las filas de una tabla, al estilo excel. Así que desempolve mis viejos conocimientos sobre jquery y arme un plugin que agarra una tabla y le agrega selects en cada columna y los llena con los valores diferentes de las filas.
Hace tiempo tengo ganas de empezar a escribir pequeños tutoriales sobre cosas entretenidas. Y una de las cosas mas entretenidas que descubrí en el ultimo año es la posibilidad de crear aplicaciones 3D en Flash. He visto sitios en 3d interactivos que me han dejado con la boca abierta. Hay un blog que se dedica a buscar y postear diariamente sitios en 3D buenos : Daily Papervision3D
Existen varios motores 3D que podemos utilizar: Away3D, Sandy, Five3D, Papervision3D, entre otros… En mi caso elegi papervision3D, ya que durante el año pasado estuve trabajando con él. Bueno, arranquemos con el breve tutorial…
Lo que vamos a hacer es lo siguiente:
package
{
import flash.events.Event;
import org.papervision3d.materials.utils.MaterialsList;
import org.papervision3d.materials.WireframeMaterial;
import org.papervision3d.objects.primitives.Sphere;
import org.papervision3d.view.BasicView;
import org.papervision3d.objects.primitives.Cube;
[SWF(width="640", height="480", backgroundColor="#FFFFFF", frameRate="60")]
public class HolaMundo extends BasicView
{
private var cubo:Cube;
public function HolaMundo()
{
var materiales:MaterialsList = new MaterialsList();
materiales.addMaterial(new WireframeMaterial(), "all");
cubo = new Cube(materiales);
scene.addChild(cubo);
camera.y = 500;
camera.lookAt(cubo);
startRendering();
}
override protected function onRenderTick(event:Event = null):void
{
cubo.yaw(1);
renderer.renderScene(scene, camera, viewport);
}
}
}
Vamos a ver parte por parte este código:
public class HolaMundo extends BasicView
En este caso nuestro document class esta extendiendo a BasicView. Por que? Bueno, cuando creamos algo en PV3d debemos encargarnos de crear y manejar diferentes objetos necesarios para redenderear el mundo 3d, ellos son: la escena, el viewport y la camara. Bueno, la gracia es que toda eso ya esta hecho dentro del BasicView, por lo cual al principio no debemos preocuparnos por esto. En este blog se puede leer un poco mas sobre el BasicView.
Luego, dentro de nuestro constructor tenemos:
var materiales:MaterialsList = new MaterialsList();
materiales.addMaterial(new WireframeMaterial(), "all");
cubo = new Cube(materiales);
scene.addChild(cubo);
Aqui estamos creando un cubo con determinado material (el wireframe es tan solo uno de los diferentes materiales que le podemos asignar a los objetos en pv3d, recomiendo mirar la documentacion para conocer mas sobre el tema materiales). Luego de creado el cubo lo debemos agregar como child de la escena que vamos a renderear. Si quieres que se muestren los objetos en pv3d, debes agregarlos a la escena. Tal cual lo haces usualmente con los sprites.
Bueno, el cubo ya esta en la escena. Lo que hacemos ahora es subir la camara al y=500, y luego la hacemos mirar al cubo que creamos anteriormente. Con esto logramos un angulo para apreciar mejor el efecto 3D. Ya tenemos todo listo, ahora empezamos a renderear. El startRendering agrega un eventListener al enter frame y llama a onRenderStick.
Para lograr la rotacion del cubo, lo que hacemos es girarlo 1 grado en cada frame con el yaw(1). Y luego rendereamos la escena usando la camara y el vierport del BasicView. En lugar de este ultima linea tambien podriamos usar super.onRenderStick(event).
Bueno, con esto tendriamos nuestro primer ejemplo de papervision funcionando. Para ver mas tutoriales de papervision recomiendo pegarse una vuelta por pv3d.org.
Richard Stallman cantando una canción basada en la musica de Guantanamera, cantada en español.
Me asombra la buena onda que tiene este hombre. Y lo bien que se maneja hablando en español.
A través de alt1040 llegué a esta seleccíon de aplicaciones web útiles al momento de pensar algún diseño. La recopilación fué hecha por Six Revisions, un sitio que vale la pena revisar, pues tiene muchos recursos interesantes para el armado de sitios web.