Archive for September, 2004

Is this the way it has always been?

Monday, September 20th, 2004

He creado otro interesante Widget :-) .

Al widget lo he bautizado como DataGrid ([friend]ion[/friend], si se te ocurre otro nombre.. dilo :-P ). ¿Qu?ace?…. pues como todo lo que yo hago: magia.

Para los que han usado Jaws posiblemente me entiendan. Han visto que en la administraci?e Jaws manejamos tablas para desplegar informaci?que tienen accciones (editar, borrar, etc) y cada fila tiene un color diferente.. bien pues eso es un JawsDataGrid.

¿Pero entonces qu?ace el mentado Widget?.. pues de nuevo: Magia. Pueden crear la lista con un objeto, agregarle encabezados, propiedad de hidden a las columnas, sort a cualquier columna y claro todo el trique de dise?ara una tabla.

Veamos…

$model = new BlogModel ();
 
$datagrid = new JWDataGrid ("50%", $_REQUEST["orderby"], $_REQUEST["ordertype"]);

Lo que hacemos es crear el modelo (en jaws-mvc van a entender… :-P ) y creamos un DataGrid que va a tener un tama?e 50%, va a recibir el argumento de orderby (para ver si se tiene que ordenar con respecto a una columna) y que tipo de ordenaci?ASC, DESC).

Bien… ahora veamos:

$datagrid->AddColumn ("Username", "username", true, false, "", "?unacosa={username}");
$datagrid->AddColumn ("Category", "category", true, false, "", "?otracosa={id}");
$datagrid->AddColumn ("ID", "id", true, true);

Lo que hacemos es agregar tres columnas, los argumentos son como siguen: Nombre de la columna (va a aparecer a la hora de renderear el html, el campo que corresponde a un arreglo -indexeado-, se le indica si puede ser ‘ordenable’ (osea.. ASC, DESC), se le indica si es hidden (osea.. que nadie lo vea :-P ), se le agrega el estilo a la columna (me di cuenta que en Jaws tenemos estilos para cada tipo de columna.. asi que se me hizo buena idea) y el otro argumento es la url.. como ven la url tiene un formato chistoso: {id}, ¿qu?on esas etiquetas?.. ah pues le indicamos que esa va a ser la url, pero el valor de ‘otracosa’ va a ser el ‘id’. De esta manera la url se va generando autom?camente.

Las urls, no son las acciones propiamente.. sino ‘propiedades’ en forma de link para cada campo.

Los ?os campos requeridos son: el t?lo de la columna y el dato que va a cargar, los dem?son valores que se pueden tomar por default.

Bien.. ahora vienen las acciones:

$datagrid->AddAction ("Delete", "http://www.google.com.mx");
$datagrid->AddAction ("Edit", "index.php?variable={username}&variable2={category}&id={id}");

Y as?e manejan, van a ir en una columna especial llamada: Actions, que b?camente es el Nombre de la acci?su url y su imagen (opcional, pero si se agrega se usa la imagen y no el nombre).

Y finalmente.. los datos!

$datagrid->AddData ($model->GetEntries());

Que no es mas que un array indexeado :-)

Y listo, para mostrarlo pues

echo $datagrid->Get ();

Ahora podemos hacer listas en un dos-por-tres. ¿Qu?e traj?todo esto?.. pues me estaba aburriendo de hacer listitas para una aplicaci?el Tec :-P .

A New Machine - Pink Floyd

I look down, hearing the sound of the things you’ve said today.

Sunday, September 19th, 2004

Bueno.. pues ya termino el puente (si que puente para mi, desde el martes me lo tome :-P ).

He estado descansando y viendo una que otra movie, la que les recomiendo es: Les Triplettes de Belleville (Las Trillizas de Belleville), es una película francesa.. sin títulos ni nada.. vas.. te sientas y disfrutas de un excelente película dejando volar tu imaginación :-) . Excelente película!. Luego fui a ver la de Fahrenheit 9/11, realmente fui por morbo más que para verla.. digamos que es una película buena, y la trama es la que muchos conocemos (por obvias razones), pero pasan datos chidos y te das cuenta que la mayoría de los gringos andan algo tapados del cerebro :-) , bueno que puedo decir de nosotros.. pero creo que ellos nos ganan en el asunto de Septiembre 11.

Jaws

Actualmente ando terminando un sistemita para manejar todo el asunto de telefonía del Tec y para ahorrar mucho código pues ando usando gran parte de jaws-mvc, claro editando cosas.. hay cosas que no uso y otras que si y le faltan.

Ayer que estaba trabajando en la parte final, en los formularios de cada sección me dio harta flojera y traté de jugar con Pof que te permite hacer los formularios en un dos-por-tres. Pero maneja tantos.. tantos arreglos la cosa esa que a la hora de usar el ident de emacs ya le perdías el bonito diseño… llegaban momentos en que un array te quedaba en otro lado..

¿Qué me puse a hacer?, pues mejor me puse a trabajar en Jaws MVC, en un nuevo widget: JWForm, es un simple widget que va a permitir crear formularios de una manera rápida y te agrega validadores para los campos, es decir, podemos usar lo siguiente:

$entry = new JWEntry ("nombre", "");
$entry->Required = true;
$entry->Title = "First Name";

Que nos va a crear un input en HTML con el nombre: nombre y le indicamos que es requerido, el Title es un feature que le agregué a los Widgets para usar los formularios, que es agregarle en el lado izquierdo una etiqueta que traiga el Title.. vamos.. como cualquier formulario.

Incluso podemos agregar JWEntries de:

$entry = new JWEntry ("nombre", "");
$entry->Required = true;
$entry->Title = "First Name";
$entry->SpecialType = VALID_EMAIL;

Lo que hara es lo mismo, pero aparte va a validar el campo para que sea de tipo EMAIL, si el campo no se encuentra en el formato correcto pues manda un warning, de esta manera te aseguras que tus datos van a llegar como los quieres y te ahorras validaciones en el PHP.

El Forms?.

$form = new JWForm ("formulario", "Formulario", "index.php", "POST");
$form->Space = 5;

Creamos un formulario que va a tener el nombre: formulario, con el nombre: Formulario, su action y su method. Y así, para agregar cualquier widget al formulario se hace:

$entry = new JWEntry ("nombre", "");
$entry->Required = true;
$entry->Title = "First Name";
$entry->SpecialType = VALID_EMAIL;
 
$form = new JWForm ("formulario", "Formulario", "index.php", "POST");
$form->Space = 5;
 
$form->AddItem ($entry);

O si queremos agregar un botón (los submits y esos triques), pues:

$form = new JWForm ("formulario", "Formulario", "index.php", "POST");
$form->Space = 5;
 
$submit = new JWButton ("aceptar", "Aceptar");
$submit->IsSubmit = true;
 
$form->AddButton ($submit);

Y cuando damos el Get al JWForm pues nos imprime un formulario tabulado y nos agrega un onSubmit al formulario con su validadores (creando una función en JavaScript).

Aparte agregué un JWComment, que fue un feature que le vi a Pof, que es el agregar ‘comentarios’ a los campos, es decir, podemos crear un Entry y agregarle un comentario de tipo: “Recuerda que debes escribir algo en X formato”.

Así nos ahorramos mucho código HTML (tan molesto para los no-diseñadores) y todo lo vamos creando en objetos.

En fin… eso es todo :-)

Pink Floyd - Works - Fearless