viernes, junio 06, 2008

Fusion de 2 grandes, CakePHP 1.2 con Flexigrid.

Hace un tiempo que estoy desarrollando aplicaciones web con el Framework CakePHP mas específicamente desde Diciembre del 2007. Desde siempre he tenido dificultades a la hora de hacer buenos diseños o estilos para las rejillas de datos. Hace un tiempo me habian pasado el enlace a un control realizado en javascript llamado Flexigrid, era la solucion algo realmente fantástico, el unico problema era que no habia forma de encontrarle la vuelta para poder integrarlo en cakePHP, busque en web, foros, y no encontré nada solo un post indicando que quería integrarlo pero no podia. Esto me motivó a integrarlo yo mismo, asi que ahora les dejo el como integrar el Flexigrid con CakePHP 1.2, espero les sea util, ahora mismo me encuentro modificando el Flexigrid para darle la oportunidad de ponerle filtros.


Antes que nada hay que descargarse el control de la pagina web e incluir los archivos .js y .css necesarios, esto lo podemos hacer desde la pagina de Flexigrid.

Bueno dentro del model no hay ninguna modificación.
Ahora vemos que hay que hacer en el controller, la funcion index ya no es mas la encargada de devolverle los datos a la view del index, este se va a cargar via ajax jquery por xml, en mi caso la funcion index queda vacia, ademas creo una accion llamada grid_data que va a ser la encargada de pasarle los datos por xml al index.

function grid_data()
{
$this->layout='xml';

if(!empty($_POST['page']))
{
$page = $_POST['page'];
}
else
{
$page = 1;
}

if(!empty($_POST['rp']))
{
$rp = $_POST['rp'];
}
else
{
$rp = 10;
}

$start = (($page-1) * $rp);
$limit = $start. ", ". $rp;

if(!empty($_POST['sortname']))
{
$sortname = $_POST['sortname'];
}
else
{
$sortname = 'ban_nombre';
}

if(!empty($_POST['sortorder']))
{
$sortorder = " " . $_POST['sortorder'];
}
else
{
$sortorder = ' asc';
}


if(!empty($_POST['query']))
{
$query = $_POST['query'];
}
else
{
$query = null;
}

if(!empty($_POST['qtype']))
$qtype = $_POST['qtype'];

$where = "";
if ($query)
{
$where = "{$qtype} LIKE '%{$query}%'";
}

$orden = $sortname . $sortorder;
$count = $this->Banco->find('count');

$this->set('count', $count);
$this->set('page', $page);
$this->set('rp', $rp);
$this->set('data',$this->Banco->find('all', array('conditions'=>$where, 'limit'=>$limit, 'order'=>$orden)));
}

en esta accion del controller tienen todas las caracteristicas, la paginación, la búsqueda y la ordenación haciendo click en los encabezados de las columnas.

Si se han fijado bien, en la accion hace uso de un layout que no viene por defecto, xml, para ello van a tener que escribir dicho layout, xml.ctp.


header('Content-Type: text/xml; charset=utf8');
echo $content_for_layout;
?>

Ahora bien, dado que la accion se llama grid_data y que no estamos haciendo render a ninguna vista distinta, cakePHP va a buscar una vista llamada grid_data.ctp, este archivo es el que escribe el xml en la forma que el flexigrid lo comprenda.


$strView = "";
$strView .= "";
$strView .= "".$page."";
$strView .= "".$count."";
foreach ($data as $v)
{
$strView .= "";
$strView .= "".$v['Banco']['ban_nombre']."";
$strView .= "";
}
$strView .= "";

echo $strView;
?>

Por ultimo queda el index.ctp:


$strView = "\n
";
$strView .= "\n".$form->create(null, array("action"=>"index", "name"=>"index","id"=>"index"));
$strView .= "\n".$form->hidden('Banco.accion',array("id"=>"accion"));
$strView .= "\n".$javascript->codeBlock("
$(document).ready(function () {
$('.flexme').flexigrid({
url: '".$html->url('/bancos/grid_data')."',
colModel : [
{display: '', name : '', width : 60, sortable : false, align: 'left'},
{display: 'Nombre', name : 'ban_nombre', width : 595, sortable : true, align: 'left'}
],
buttons : [
{name: 'Insertar Banco', bclass: 'add', onpress: insertarBanco},
{name: 'Imprimir', bclass: 'imprimir'},
{name: 'Eliminar', bclass: 'delete'},
{separator: true}
],
searchitems : [
{display: 'Nombre', name : 'ban_nombre', isdefault: true}
],
sortname: 'ban_nombre',
sortorder: 'asc',
usepager: true,
title: 'Bancos',
useRp: true,
rp: 10,
showTableToggleBtn: true,
width: 700,
height: 245
});
});

function insertarBanco()
{
setValue('add');
}
");
$strView .= "\n";
$strView .= "\n
";

$strView .= "\n".$form->end();
$strView .= "\n
";


echo $strView;
?>


Y con eso ya debería de quedar totalmente integrado la grandiosa rejilla de datos a nuestro querido Framework CakePHP.
Cualquier error, sugerencia queja o lo que soy todo oidos, ya si voy desarrollando algo mas para este control lo voy a ir dejando por aqui.

viernes, febrero 09, 2007

Mucho se ha hablado ultimamente de la Computacion Cuantica, incluso hasta pequeñas pruebas se han desarrollado, pero en fin los cientificos decian que hasta dentro de 10 años o mas no se iban a poder ver los Ordenadores Cuanticos, pero bueno como desde finales del año pasado y lo que va de este, puedo decir que estuvo cargado de sorpresas y noticias insolitas, primero con la noticia de Steorn y su fuente de energia limpia infinita. Ahora bien la Compañía D-Wave dice que la semana que viene presentará el nuevo Sistema de Computación Cuantia Orion, y que lo hará con aplicaciones reales!, ¿será esto una nueva revolución informática? o simplemente mas publicidad para la compañia?, en fin habrá que esperar a ver que nos dicen la semana que viene, para ver mas información y leer características técnicas de como funciona les paso el link. http://www.microsiervos.com/archivo/ordenadores/sistema-orion.html

Vamos a ver en que termina todo esto. . ., y en que termina este año que si empezamos con esto de la computacion cuantica igual a fin de año estamos viajando en el tiempo no? jeje.

viernes, enero 26, 2007

En busca del Escritorio perfecto!
Años y hasta mas de 1 decada han pasado desde que los sistemas operativos se hicieron graficos y bonitos, pero desde aquel entonces, basicamente nada cambio, el mismo maldito entorno de siempre, el escritorio con sus iconos, pensar que mientras ocurren infinidad de cambios en materia de informatica, los entornos gráficos de los S.O. siguen practicamente iguales, y de pronto, viendo en youtube un nuevo gestor de ventanas para Mandriva Matisse, encuentro otro video que me llama mucho mas la atencion. Y que les adjunto ahora para que lo vean, lo disfruten y me cuentes ;), quizas faltan varios retoques, pero sin duda para mi gusto refleja en lo que podrían convertirse los escritorios de los S.O futuros. Esto es un prototipo por lo que vi en youtube: "BumpTop 3D Desktop Prototype".






viernes, enero 19, 2007

Blogeando hoy un poco encontre algo que me interesó muchisimo y que no sabia que existia, "Los Santos Griales de la Ciencia", parece algo hasta un poco místico, y a lo que se refiere basicamente es a "Objetivos que son muy buscados, pero que parecen imposibles de alcanzar, para una persona, organización o en un campo del conocimiento." asi que bueno para todos aquellos amantes de las ciencias en general les publico una lista segun el tipo de ciencia de estos "Santos Griales". Gracias a los Microsiervos muchas veces puedo encontrar cosas interesantes que blogear ;).


  • Astronomía: Detectar algún pulsar en órbita de un agujero negro; detectar algún planeta similar a la tierra orbitando otra estrella; detectar vida extraterrestre (SETI); entender la naturaleza de la materia oscura/energía oscura.
  • Biología: Lograr la inmortalidad biológica en seres humanos; construir una célula partiendo de sus componentes y materiales originales; entender cómo funciona completamente el código genérico.
  • Medicina: Encontrar un tratamiento para todas las formas de cáncer; una vacuna para el SIDA; una vacuna para el resfriado común.
  • Informática: Crear una consciencia artificial o inteligencia artificial fuerte; un algoritmo de tiempo polinomial para problemas de tipo NP-completos o una prueba de que no existen (¿Es P = NP?); construir un ordenador cuántico.
  • Cosmología: Conocer la edad precisa del universo; saber cómo terminará la existencia del universo.
  • Linguística: Definir una gramática universal, o una prueba de que no existe; descifrar algunos sistemas de escritura desconocidos, especialmente Linear A, Etrusco, Escritura del Indo y traducir el Manuscrito Voynich; encontrar una relación entre el Euskera y cualquier otra familia de lenguajes.
  • Matemáticas: Confirmar con demostraciones la Hipótesis de Riemann, la Conjetura abc, la Conjetura de Birch y Swinnerton-Dyer, la Conjetura de Hodge; crear una teoría unificada de la matemática.
  • Física: Desarrollar la teoría unificada del todo; una predicción física testable de la teoría de cuerdas; desarrollar superconductores a temperatura ambiente; la fusión fría; dispositivos anti-gravedad; medios de transporte o comunicación más rápidos que la luz; encontrar alguna forma de viajar en el tiempo y de teletransporte; observar un taquión, un monopolo magnético o una partícula de Higgs.

viernes, enero 12, 2007

Se imaginan una fuente de energia inagotable, que no dañara el medio ambiente, y lo mejor de todo. . . GRATUITA?, pues francamente es pura Ciencia Ficcion, pero bueno hay una empresa que segun dicen lo a logrado, dicha empresa es Steorn sus palabras textuales son:

"Hemos desarrollado una tecnología que genera una energía gratuita, limpia y constante.
Eso significa no tener que recargar nunca el teléfono ni volver a llenar el depósito de gasolina del coche. Un mundo con un suministro infinito de energía limpia para todos.
Nuestra tecnología ha sido validada de forma independiente por ingenieros y científicos, siempre de modo extraoficial y siempre demostrando que funciona.
"

Sin duda basicamente lo que estan diciendo es que se saltan el primer principio de la termodinamica, bueno la verdad que no me lo creo. . ., en su pagina web tienen un estilo calendario con un reto dividido en 3 Fases, en teoria ahora estan buscando cientificos que hagan de jurado.

En fin. . . a ver en que queda todo esto.

miércoles, diciembre 20, 2006

Hoy recordamos la muerte de un grande, el Sr. Carl Sagan para aquellos que no lo conocen este gran hombre era el que conducia un programa de televicion llamado: Cosmos: Un Viaje Personal donde explicaba de una manera bastante sencillas las cosas tan complicadas que tiene este nuestro universo. Me acuerdo vagamente de haber visto alguno de sus programas, era muy chico por aquel entonces pero algo me acuerdo. En fin quien quiera saber algo mas de él ahi tiene los links puede culturizarse un poco jejeje.
Saludos
Pablo Pedrosa

martes, diciembre 19, 2006

Hay momentos en la vida en que uno tiene que salir del armario. . . y sip, no resulta nada facil! es mas es muy dificil, pero la vida te pone en situaciones en que te da el valor para salir del armario y decir.

SIIIII!!! SOY GEEK!!! y que tiene???? somos personas tambien saben? jejeje. Es mas! aca les pongo mi firma.

-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GCS/IT d- s: a- C++ UL++ P L+ E W+++ N+ o+ w++ O-- M- PS+ PE-- Y+ PGP- t- 5- X++ R tv- b DI D++ G++ e++ h* r+++ y+++
------END GEEK CODE BLOCK------

Yasta! al final no fue tan duro como parecia :D eeeeeeeaaa!! ahora alcanze el grado de felicidad máxima :D.
Bueno ahora sip solo 2 cuestiones me quedan comentar:
1 - Para los que no saben el significado de la palabra Geek aqui lo tienen
2 - Si he animado a alguien para que tambien salga del armario no tiene mas que ir Aqui, a hacer su firma ;).

Saludos a Todos
ta luegooo.