martes, 27 de octubre de 2009

Yupp Portal v0.1

Estamos muy contentos de poder liberar la primer versión del componente para crear portales web de Yupp Framework: Yupp Portal

¿Para qué sirve Yupp Portal?

Es una herramienta de alta productividad que permite crear un portal web completo en 5 minutos, sin necesidad de programación extra, solamente es necesario configurar la conexión con la base de datos.

Este componente permite:

Administrar páginas:
  • Crear páginas con un clic
  • Editar contenido con editor visual desde la web
  • Estados de páginas: Normal, Borrador, Deshabilitada, Oculta
  • Edición visual de items del menú principal
  • Edición visual de contenido fijo (por ejemplo banners que se muestran en todas las páginas)
Administración de usuarios:
  • Administración de roles
  • Crear/Editar/Eliminar/Aprobar usuarios
  • Registro de usuarios y aprobación con email en un clic
  • Login/Logout
Tres roles disponibles:
  • Administrador: crea/edita páginas, modifica el menú, crea/edita usuarios
  • Editor: crea/edita páginas, modifica el menú
  • Usuario: ve páginas ocultas

Por más información: http://code.google.com/p/yupp-portal/

domingo, 25 de octubre de 2009

Liberamos Yupp PHP Framework v0.1.6.7

Amigos, estamos muy contentos de anunciar la liberación de la nueva versión de Yupp PHP Framework.


Las diferencias con respecto a la versión 0.1.6.4 son:

1. Correccion a YuppForm en el campo date.

2. Se agrega el método YuppController.componentControllersAction() que sirve para mostrar los controladores de un componente dado.

3. Se agrega la restricción "inList" que permite verificar si un valor está en una lista de valores dados.

4. Se agrega el metodo PersistentObject.hasFieldErrors( $attr ) para preguntar si existen errores en el valor de un atributo particular.

5. Se agrega el metodo PersistentObject.attributeDeclaredOnThisClass() para saber si un determinado atributo fue declarado en una clase. Sirve para derivar los nombres de las tablas intermedias en relaciones multiples.

6. Se agrega el helper DisplayHelper.yupp_select para crear selects html de forma sencilla.

7. Se corrije el metodo PersistentObject.validate() para que priorice la validacion de nulos y vacios sobre el resto de las validaciones. Ahora si un valor es nullable(true) y tambien debe ser email(), la validacion de un valor vacío devuelve true, antes fallaba en la validacion de email.

8. Correcciones menores en la clase Contraints.

9. El método PersistentObject.setProperties() ahora hace trim de los valores antes de asginarlos a los campos, esto es para evitar el llenado accidental de datos con espacios en blanco delante o detrás del valor ingresado.

10. Agregamos soporte para varios subdirectorios dentro del directorio de clases de modelo, para ordenar las clases cuando son muchas.
- Se corrige el metodo ModelUtils.getModelClasses() para poder crear subdirectorios en el directorio del modelo de un componente.
- Correccion al metodo YuppConventions::getModelPath().
- Correccion en PackageNames a una expresion regular para poder poner subdirectorios en el modelo.
- Correcciones en YuppLoader, en el cargado del modelo para permitir definir clases en subdirectorios.

11. Corrección en el método YuppConventions::relTableName(..) donde se creaba mal el nombre de la tabla intermedia para relaciones hasMany si se trataba de salvar una subclase y el atributo estaba declarado en su superclase.

12. Se corrige el helper Helpers.template() para mejorar el pasaje de parametros.

13. Correccion en el mapeo de herencia de tabla multiple para soportar modelos de relaciones y herencia complejos (PersistentManager, PersistentObject, MultipleTableInheritanceSupport).

14. Se corrije el metodo YuppController::getFlash() y se hace limpieza.

15. Corrección de la comparación de strings para generar consultas MySQL (donde el "=" no considera mayúsculas y minúsculas)
- Se reescribió completamente la evaluación de QUery que genera las consultas SQL, para que considera las particularidades de cada DBMS (MySQL, SQLite, PostgreSQL, etc)


Descargas:
http://code.google.com/p/yupp/downloads/list
http://www.simplewebportal.net/host/1022.htm

TAG SVN:
http://code.google.com/p/yupp/source/browse/#svn/tags/v0167

Cualquier duda, consulta o reporte de error pueden hacerla en el grupo google (opción "debates > nueva entrada"):
http://groups.google.com/group/yuppframeworkphp


Hasta pronto!

Pablo Pazos Gutiérrez
Líder de proyecto
Yupp PHP Framework

jueves, 17 de septiembre de 2009

Herramientas para comprimir codigo javascript

Para crear sistemas web muchas veces me veo utilizando librerías y scripts javscript que encuentro en internet. Muchos de estos pesan entre 150 y 300 Kb, haciendo que el tiempo de carga de las páginas web sea muy lento. Por suerte existen herramientas que nos permiten comprimir esas librerías y dejarlas de un tamaño aproximadamente de un 30% del tamaño original.

En general estas herramientas tienen un cuadro de texto donde se debe pegar el código javascript a comprimir, elegir algunas opciones de compresión, luego vemos el código comprimido y la razón de compresión (tamaño original / comprimido). Distintas opciones de compresión harán que tu código quede más reducido aún.

Aquí dejo algunos links a estas herramientas:
Feliz compresión!

lunes, 3 de agosto de 2009

PHP y los problemas con la sesión

PHP tiene un problema (depende de si se lo considera como tal) con las sesiones cuando se acceden a subdominios del sitio actual.

Hoy particularmente me sucedió que tenía un sitio http://femisaluddigital.net.uy el cual corre con el componente Yupp Portal. En una página del portal había un link a otra página pero el dominio del link era a http://www.femisaluddigital.net.uy/...., notar el WWW adelante.

Entonces, cuando si usuario está logueado en el sitio http://femisaluddigital.net.uy e intenta acceder al link que empieza con www la sesión se pierde y el usuario aparece como no logueado, con los problemas que esto trae (el usuario debe volver a loguearse).

Entonces las opciones serían:
  • Que los links a páginas locales se armen dinámicamente considerando la URL actual (viendo si tiene o no www al principio).
  • Guardar la sesión en la base de datos y que tanto para el dominio que empieza con www como para el que no tiene www, la sesión se acceda de la misma forma.
Hay que tener cuidado que para otro subdominio que no sea www (por ejemplo subdominio.femisaluddigital.ney.uy) tal vez quiera acceder a otra sesión, no a la misma del dominio principal. Esto puede ser un problema y el proceso de guardar y pedir información de la sesión debería ser lo suficientemente inteligente como para distinguir casos, nada muy complicado.

Con este post espero ayudar a otros que tengan el mismo problema. Hay algunos comentarios sobre el tema en la página de documentación de PHP sobre las sesiones, donde también indica que ante un cambio de protocolo (HTTP a HTTPS) la sesión también es eliminada. http://us2.php.net/manual/en/book.session.php

miércoles, 8 de julio de 2009

Historia del User Agent

Navegando por internet buscando información acerca de HTTP (estoy estudiando para un próximo exámen de Introducción a las Redes de Computadoras), encontré un artículo muy interesante al respecto de la historia del User Agent que no tiene desperdicio alguno:

http://webaim.org/blog/user-agent-string-history/

Enjoy :)

sábado, 6 de junio de 2009

Feliz cumpleaños Tetris!

Hoy es un día muy especial para todos los amantes del Tetris, el legendario juego creado por Alexey Pajitnov. El juego combina agilidad, estrategia y simplicidad como ningún otro juego en la historia de los video juegos, por algo cuando decimos "Tetris" todos saben de que estamos hablando. Tetris es más que un juego, este trascendió la pantalla para convertirse en parte de la cultura de los que vivimos nuestra adolescencia en los 90's y aún hoy vivimos como un nuevo reto cada vez que volvemos a jugar al Tetris.

Desde aquí nuestro tributo.

Más información:
http://www.rtve.es/noticias/20090602/tetris-cumple-anos/279442.shtml

martes, 2 de junio de 2009

Liberamos la nueva versión de Yupp! v0.1.6.4

Estamos muy contentos de anunciar la liberación de la nueva versión de Yupp PHP Framework.

Estaos agradecidos con los usuarios que últimamente se han interesado en el proyecto, enviándonos sus comentarios, dudas y reportando errores, y es gracias a ellos que podemos seguir mejorando.

Hemos corregido y mejorado muchas cosas desde la versión anterior, entre ellas:

1. Se corrigió y mejoró el web flow.
2. Se agrego el metodo 'validateOnly' a la clase PersistentObject.
3. Correcciones para CRUD y vistas dinamicas.
4. Cambia el nombre de la clase ControllerFilter2 por YuppControllerFilter.
5. Se agregó addslashes en los métodos insert_query y update_query de DAL y stripslashes en PersistentManager, para resolver problemas con caracteres de control de MySQL.
6. Se agregó el helper "pager" para crear links de paginación de registros para los listados.
7. Se agrego el helper orderBy para crear columnas ordenables en los listados.
8. Corrección de restricción de email.
9. Ya no es necesario pasarle $this->params al método "render" de YuppController:
- Antes: return $this->render("show", &$this->params);
- Ahora: return $this->render("show");
10. Corrección del helper "locale_chooser" que generaba XHTML inválido.
11. Se agrega al paginador los params de ordenamiento por columnas en los listados (helper "orderBy") si los hay.


Descargas:

http://code.google.com/p/yupp/downloads/list
http://www.simplewebportal.net/host/1022.htm

TAG SVN:
http://code.google.com/p/yupp/source/browse/#svn/tags/v0164

Cualquier duda, consulta, crítica o reporte de error pueden hacerla en el grupo google (opción "debates > nueva entrada"):
http://groups.google.com/group/yuppframeworkphp


Hasta pronto!

Pablo Pazos Gutiérrez
Líder de proyecto
Yupp PHP Framework