iCal con Kumbiaphp beta2

Buen día,

Este es mi primer post para la comunidad y espero les sirva:

Voy a explicar como implementar un iCal  jQuery (Calendario de eventos con estilo similar al del iphone) y poblarlo con los datos que tengo en MySQL a través de Kumbiaphp Framework:

Lo primero que deben hacer, obviamente después de tener configurado Kumbiaphp Beta2, es descargar el iCal desde aquí .  Los archivos .js se ubican en /default/app/public/javascript, el archivo .css se ubica en /default/app/public/css.

Creamos una tabla en MySQL que va a ser nuestro insumo de datos para poblar el calendario (supongo hasta aquí que ya saben que es un modelo, como se configura la base de datos y sus convenciones) :


CREATE TABLE IF NOT EXISTS `agenda` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `fecha` date NOT NULL,
    `hora_inicio` time NOT NULL,
    `hora_fin` time NOT NULL,
    `producto_id` int(11) NOT NULL,
    `cliente_id` int(11) NOT NULL,
    `estado` varchar(10) NOT NULL,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT= 8;

Si se fijan,  la creación de la tabla está asociada a dos tablas que son cliente y producto.

En la clase modelo agenda.php se crea una función:


public function getCalendario() {
    $sql = "SELECT fecha as date, producto.nombre as title,
       CONCAT(hora_inicio, ' hasta ', hora_fin, ' ', cliente.nombres, ' ', cliente.apellidos) as 'desc'
       FROM agenda
       INNER JOIN cliente ON (agenda.cliente_id=cliente.id)
       INNER JOIN producto ON (agenda.producto_id=producto.id)";

    return $this->find_all_by_sql($sql);
}

Cómo pueden ver hay un join a dos tablas asociadas.

En el controlador agenda_controller.php se crea una función que llame la consulta creada en el modelo y lo traiga en un array:


public function verCalendario() {
    $this->calendario = Load::model('agenda')->getCalendario();
}

Luego en el directorio  /default/app/view/_shared/partials se crea un partial, decidí hacer un partial para reutilizarlo en caso de que necesite incluirlo en otras páginas.


<script type = "text/javascript">
    $(document).ready(function () {
        $("#ical").ical({
            daynames: ['Dom', 'Lun', 'Mar', 'Mie', 'Jue', 'Vie', 'Sab'],
            //startOnSunday: true,
            eventdates: <?php echo json_encode($Model); ?>
        });
    });
</script>
<div id="ical"></div>

Como ven estoy usando la función json_encode que me va a arrojar un formato como este:


eventdates: [{"date": "2009-03-21", "title": "My birthday", "desc": "Its my birthday!"},
{"date": "yyyy-01-01", "title": "New Year", "desc": "Its a new year!"}]

Los alias que utilicé en la consulta del modelo (date,title,desc) están asociados a este formato.

Y por último se implementa la vista verCalendario.phtml con el siguiente código:


<?php
echo Tag::js('jquery-1.3.2.min');
echo Tag::js('jquery-ical');
Tag::css('master');
?>
<?php echo View::content(); ?>
<?php echo View::partial('ical/script', false, array('Model' => $calendario)); ?>

Y esto es todo, espero sea de utilidad y si tienen aportes, mejoras o recomendaciones ¡bien recibidas sean!

Tutoriales de KumbiaPHP Framework

En los últimos meses en la Wiki de KumbiaPHP, se ha generado una base de conocimiento bastante sólida de tutoriales por parte de la comunidad que cada vez esta creciendo y esta gemeramdo aportes para aquellos que inician en el framework. En este post queremos rescatar algunos tutoriales que van desde ¿como empezar con KumbiaPHP? hasta unos un poco más avanzados.

Hola Mundo al estilo KumbiaPHP un ejemplo clásico en cualquier lenguaje de programación, en este ejemplo se explica como funcionan las URL en KumbiaPHP aspecto fundamental para entender el comportamiento del framework.

Continue reading «Tutoriales de KumbiaPHP Framework»

Demo de Paginación

Ha sido publicado un demo donde se aprecia una de las nuevas funcionalidades de la versión 0.5 de Kumbia la cual es la Paginación de ActiveRecord algo muy útil.

Este ejemplo lo que busca es aclarar las dudas que pudieran presentarse al momento de leer la documentación respecto a esta funcionalidad, de la misma forma este demo fue realizado totalmente en AJAX buscando igual que el punto anterior aclarar dudas sobre la utilización y por ultimo fue integrado con JQuery para los interesados en trabajar con este Framework de Javascript.

Descargar Demo…