Archivo para la Categoría ‘Symfony’

Graficando tu esquema de base de datos en Symfony

Miércoles, junio 23rd, 2010

Logo SymfonyUna de las cosas que más aburren y fastidian a los programadores es el documentar, sin embargo esta actividad es parte vital de cualquier proyecto de desarrollo,  ya decía en mi post anterior que una de las características del éxito de una aplicación de Software Libre es si esta, está bien documentada.

Bueno, luego de trabajar un buen tiempo con Symfony como framework de desarrollo para php, coincidencialmente descubrí una funcionalidad que no estaba documentada a simple vista en el libro de Symfony o en tutoriales que había leído ( o tal vez no me fije bien en esa parte ), esta funcionalidad, la cual creo que es provista por el ORM propel en sí,  te permite dado el esquema de tu base de datos generar un archivo de texto que puede ser usado por graphviz para generar el diagrama de relaciones.

Al ejecutar el siguiente comando en la raíz de tu aplicación:

symfony propel:graphviz

Esto genera un archivo con la extensión .dot en el directorio graph de tu aplicación, el cual puedes transformar en una imagen en formato png usando el siguiente comando:

dot -Tpng graph/propel.schema.dot -o graph/propel.schema.png

Claro debes tener instalado el paquete graphviz para poder hacer uso del comando dot, esto generará un gráfico parecido a este:

propel schema graphviz

Relaciones de tablas entre Estados, Municipios y Parroquias

Esto fue probado con diagramas de bases de datos complejos y los gráficos obtenidos fueron muy profesionales, bien dimensionados y ordenados, al parecer esta funcionalidad era un plugin que luego fue incorporado formalmente al core de Symfony, así que la poca documentación de uso que encontré fue la del mismo plugin en:

http://trac.symfony-project.org/wiki/sfPropelGraphviz

Editando templates de formularios en Symfony 1.2

Miércoles, mayo 19th, 2010

Logo Symfony Normalmente los formularios en Symfony se muestran con un poco de html incluido para hacerlos más agradables a la vista y además para evitar que el programador se preocupe de más en la presentación del mismo.

La forma en que salen los formularios en Symfony sirven como vienen por defecto a la mayoría de la gente, vienen por defecto con una presentación tipo tabla y una tipo lista, para seleccionar la tipo lista basta con agregar en la configuración de tu formulario la siguiente linea ( Ver sección “1.2.4  más allá de las tablas generadas” del manual de formularios para symfony 1.2 ):

$this->widgetSchema->setFormFormatterName(‘list’);

Ahora si no quieren ningún elemento tipo tabla y además no quieren ninguno tipo lista, tienen que reescribir su propia clase que herede de sfWidgetFormSchemaFormatter y reescriba sus métodos, en mi caso necesitaba un diseño completamente limpio, sin nada de etiquetas html, así que cree la carpeta widget dentro de lib y allí cree un archivo llamado sfWidgetFormSchemaFormatterNull.class.php, el contenido del archivo es el siguiente:

<?php

class sfWidgetFormSchemaFormatterNulo extends sfWidgetFormSchemaFormatter
{
protected
$errorRowFormat  = “%errors%”,
$errorRowFormatInARow  = “%error%”,
$errorListFormatInARow = “%errors%”;
}

Y en mi formulario declare el estilo a usar con:

$this->widgetSchema->setFormFormatterName(‘nulo’);

Si quieren saber que métodos reescribir o quieren fijarse de como esta hecho el de las tablas o las listas, revisen los siguientes archivos:

/usr/share/pear/symfony/widget/sfWidgetFormSchemaFormatter.class.php
/usr/share/pear/symfony/widget/sfWidgetFormSchemaFormatterList.class.php
/usr/share/pear/symfony/widget/sfWidgetFormSchemaFormatterTable.class.php

En mi caso tengo instalado symfony en /usr/share/pear/symfony/, ustedes busquen el path de su instalación de symfomy y traten de ubicar esos archivos.

Si quieren ahondar un poco más sobre el tema, pueden ir al siguiente enlace ( en ingles ):

http://www.thatsquality.com/articles/7-days-of-symfony-1-1-forms-widgets-and-validators-day7

Nota: Si van a copiar código de acá, tengan cuidado con las comillas dobles, ya que no se copian adecuadamente.

Sistema de gestión de escuelas

Domingo, mayo 2nd, 2010

Hace un tiempo escribí sobre i-educar una aplicación brasileña para la gestión de escuelas, la cual está en portugués y está más orientada  a que una prefectura/alcaldíaproyecto_alba_logo o municipalidad gestione desde un sitio web centralizado todo lo relacionado con las escuelas de su área.

En esta oportunidad les escribo para presentarles al argentino proyecto alba, el cual es el responsable de realizar una aplicación realizada en php usando MVC a través del framework symfony, lo cual garantiza que está realizada usando altos estándares de desarrollo y que es fácil de colaborar y modificar a nuestras necesidades. Está orientada a gestionar todo lo referente a una escuela, entre sus principales características tenemos:

  1. Lo más importante, es software libre usando la licencia GPL v2.
  2. A través de un poderoso perfil de alumno, maneja y controla las vacunas de los alumnos, datos personales, de contacto ( padres ), etc…
  3. Maneja las notas, horarios de clases, las materias de los alumnos.
  4. Mantiene registros de los profesores.
  5. Permite generar fácilmente constancias de estudio, boletines.
  6. Manejar  diferentes sedes.
  7. Generar reportes.
  8. Está completamente en castellano.
notas del boletin

Captura de pantalla del área de "Notas del Boletín"

Si deseas ver un demostración online de la aplicaciòn puedes ir al siguiente enlace:

http://demo.proyectoalba.com.ar/

El trac del proyecto, en donde van a conseguir documentación acerca de la instalación, código fuente, reportar bugs ( errores ) y demás en:

http://alba.pressenter.com.ar/cgi-bin/trac.cgi

La web oficial del proyecto:

http://www.proyectoalba.com.ar/

Un proyecto como este puede ahorrar costos y generar valor agregado, trasladando los costos de comprar una licencia hacía empresas/comunidades o personas de nuestro entorno o área, por adaptación, mantenimiento y soporte técnico y estás mismas comunidades pueden retornar lo que tomaron en forma de parches, mejoras al código, donaciones al proyecto original, cumpliendo plenamente con el ecosistema de autosustentabilidad del software libre.

Botones para enlaces en symfony

Lunes, marzo 29th, 2010

Una de las cosas que symfony como framework no tiene ( y no tiene por que tenerlo ) y que toda aplicación debe tener, es un set de botones coherente, liviano, simple, con código reutilizable y atractivo.

cancelar_Guardar

Teniendo tiempo buscando una solución para esto me encontré con múltiples opciones que no eran funcionales por que implicaban diseñar una imagen por cada botón, o era un diseño muy simple, o una etiqueta CSS por cada botón, o usaba javascript ( lo cual no es muy accesible ), pero a la final la perseverancia dio resultados y me conseguí este método de hacer botones y que era justo lo que estaba buscando y además funciona muy bien con cualquier navegador.

Acá voy a explicar como se usa en el framework symfony, sin embargo lo puedes adaptar a cualquier aplicación web.

Primero creamos un archivo css, llamado buttons.css y lo metes en el directorio web/css con el siguiente contenido:

/* BUTTONS */

.buttons a, .buttons button{
    display:block;
    float:left;
    margin:0 7px 0 0;
    background-color:#f5f5f5;
    border:1px solid #dedede;
    border-top:1px solid #eee;
    border-left:1px solid #eee;

    font-family:"Lucida Grande", Tahoma, Arial, Verdana, sans-serif;
    font-size:100%;
    line-height:130%;
    text-decoration:none;
    font-weight:bold;
    color:#565656;
    cursor:pointer;
    padding:5px 10px 6px 7px; /* Links */
}
.buttons button{
    width:auto;
    overflow:visible;
    padding:4px 10px 3px 7px; /* IE6 */
}
.buttons button[type]{
    padding:5px 10px 5px 7px; /* Firefox */
    line-height:17px; /* Safari */
}
*:first-child+html button[type]{
    padding:4px 10px 3px 7px; /* IE7 */
}
.buttons button img, .buttons a img{
    margin:0 3px -3px 0 !important;
    padding:0;
    border:none;
    width:16px;
    height:16px;
}

/* STANDARD */

button:hover, .buttons a:hover{
    background-color:#dff4ff;
    border:1px solid #c2e1ef;
    color:#336699;
}
.buttons a:active{
    background-color:#6299c5;
    border:1px solid #6299c5;
    color:#fff;
}

/* POSITIVE */

button.positive, .buttons a.positive{
    color:#529214;
}
.buttons a.positive:hover, button.positive:hover{
    background-color:#E6EFC2;
    border:1px solid #C6D880;
    color:#529214;
}
.buttons a.positive:active{
    background-color:#529214;
    border:1px solid #529214;
    color:#fff;
}

/* NEGATIVE */

.buttons a.negative, button.negative{
    color:#d12f19;
}
.buttons a.negative:hover, button.negative:hover{
    background:#fbe3e4;
    border:1px solid #fbc2c4;
    color:#d12f19;
}
.buttons a.negative:active{
    background-color:#d12f19;
    border:1px solid #d12f19;
    color:#fff;
}

Para darle un carácter de individualidad a sus botones se necesita colocar una pequeña imagen o icono a un lado y para ello nos bajamos el arsenal de 700 iconos 16x16px de FAMFAMFAM los cuales solo ocupan 1mb y además son libres de usar ya que tienen licencia Creative Commons Attribution, el archivo que nos descargamos lo extraemos y la carpeta icons la pasamos íntegramente al directorio web/images/

Ahora pasamos al código de nuestra aplicación, donde vayamos a usar un icono debemos incluir el archivo css, sin embargo si lo van a usar en la mayoría de vistas sugiero que lo incluyan en el archivo layout.php en mi caso lo tengo en app/frontend/templates/layout.php, simplemente agregamos la siguiente linea en la parte superior, debajo de todos los css que hayas declarado:

<?php echo stylesheet_tag(‘buttons’) ?>

Luego de esto ya podemos hacer disposición de usar nuestros botones en la vista

Por ejemplo en un formulario podríamos hacer lo siguiente, sustituyendo el código del botón por defecto y del enlace de cancelar:

CancelarCancelar

El class negative hace que el rolover dle botón sea de color rojo, el class positive hace que el rolover del botón sean verde y si no declaran ninguna clase, el rolover del botón sera en un bonito color azul claro.

Si quieren saber más al respecto, pueden visitar el enlace que tome como referencia en:

http://particletree.com/features/rediscovering-the-button-element/

Symfoclipse ha muerto

Martes, febrero 3rd, 2009

Acabo de ver en el sitio oficial de Synfoclipse el siguiente mensaje:

Al parecer el autor pensó que el desarrollo del plugin y su libre distribución bajo una licencia dual ( libre para usos no comerciales ) le resultaría económicamente sustentable mediante el pago de la licencia y los adsense del website del plugin y al no ser así decidió cerrar su desarrollo.

bueno… hay maneras de ganar mas dinero ( $$$$ ) que con adsense usando otros servicios de publicidad, no se por que la gente sigue confiando en adsense, para que me pagen 0.000000000000001 $ por cada click que den en la publicidad y ademas me paguen cuando tenga acumulados 100$ prefiero no colocar nada de publicidad.

Es lamentable de verdad que el autor cierre su desarrollo sin buscar alternativas de que le puedan permitir a su proyecto ser autosustentable, ni modo, debido a que hace tiempo publique una guía de como instalarlo, acá les dejo un pequeño mirror del plugin de la última vez que lo descargue para que al menos les pueda seguir sirviendo la guía:

http://www.richzendy.org/repo/symfoclipse/

Get Adobe Flash playerPlugin by wpburn.com wordpress themes

Copyright © 2010 Richzendy.org. Search Engine Optimization by Star Nine. Distributed by Wordpress Themes