CodeIgniter User Guide Version 1.6.1


Clase Calendar

La clase Calendar permite crear dinamicamente calendarios. Sus calendarios pueden formatearse a través del uso de una plantilla calendario, permitiendo un 100% de control sobre todos los aspectos de su diseño. Además, puede pasar datos a las celdas de su calendario.

Inicializando la clase

Similar a la mayoría de las clases en codeIgniter, la clase calendar es inicializada en su controlador usando la función $this->load->library:

$this->load->library('calendar');

Una vez cargado, el objeto Calendario estará disponible usando: $this->calendar

Mostrando un calendario

Éste es un ejemplo muy simple que enseña como puede mostrar un calendario:

$this->load->library('calendar');

echo $this->calendar->generate();

El código anterior generará un calendario para el mes/año actual basado en la hora de su servidor. Para mostrar un calendario para un mes y año específicos deberá pasar esta infromación a la función de generación de calendario:

$this->load->library('calendar');

echo $this->calendar->generate(2006, 6);

El código de arriba generará un calendario que muestra el mes de junio del año 2006. El primer parámetro especifica el año, el segundo parámetro especifica el mes.

Pasando datos a las celdas de tu calendario

Agregar datos a las celdas de tu calendario involucra crear un arreglo asociativo en el cual los índices corresponden a los dìas que deseas poblar y el valor del arreglo contiene los datos. El arreglo es pasado al tercer parámetro de la función generar calendario. Considere este ejemplo:

$this->load->library('calendar');

$data = array(
               3  => 'http://your-site.com/news/article/2006/03/',
               7  => 'http://your-site.com/news/article/2006/07/',
               13 => 'http://your-site.com/news/article/2006/13/',
               26 => 'http://your-site.com/news/article/2006/26/'
             );

echo $this->calendar->generate(2006, 6, $data);

Usando el ejemplo arriba citado, los dìas número 3, 7, 13 y 26 se convertirán en links que apuntan a las URLs provistas.

Nota: Por defecto se adume que el array contiene links. En la sección que explica la plantilla calendario verá como puede personalizar el modo en que los datos son pasados, de manera que puede pasar tipos diferentes de información

Ajustando las Preferencias de Visualización

Hay siete preferencias que puede ajustar para controlar varios aspectos del calendario. Las preferencias son ajustadas pasando un arreglo de preferencias en el segundo parámetro de la funcion loading. Este es un ejemplo:

$prefs = array (
               'start_day'    => 'saturday',
               'month_type'   => 'long',
               'day_type'     => 'short'
             );

$this->load->library('calendar', $prefs);

echo $this->calendar->generate();

El código citado anteriormente haría el calendario comenzar en sábado, usa la cabezera de mes "largo", y los nombres de días "pequeños". Más información con respecto a las preferencias a continuación.

Preferencia Valor por defecto Opciones Descripción
templateNoneNone Un cadena que contiene su plantilla calendario. Ver la seccion plantilla debajo.
local_timetime()None Un timestamp Unix que corresponde al tiempo actual.
start_daysundayAny week day (sunday, monday, tuesday, etc.) Ajusta el día de la semana con que el calendario debería iniciar.
month_typelonglong, short Determina que versión del nombre del mes usar en la cabecera. long = January, short = Jan.
day_typeabrlong, short, abr Determina que versión de los nombre de los días de la semana usar en la cabecera de la columna. long = Sunday, short = Sun, abr = Su.
show_next_prevFALSETRUE/FALSE (boolean) Determina si se mostrarán los links que permiten ir al mes siguiente/previo. Ver informaciòn sobre esta característica debajo.
next_prev_urlNoneA URL Ajusta el basepath usado en los links del calendario siguiente/previo.

Mostrando los Links Mes Siguiente/Previo

Permitir a su calendario incrementar/decrementar dinámicamente a través de los links next/previous requiere que establezca su código de calendario similar a este ejemplo:

$prefs = array (
               'show_next_prev'  => TRUE,
               'next_prev_url'   => 'http://www.your-site.com/index.php/calendar/show/'
             );

$this->load->library('calendar', $prefs);

echo $this->calendar->generate($this->uri->segment(3), $this->uri->segment(4));

Advertirá algunas cosas acerca del ejemplo citado anteriormente:

Creando una Plantilla Calendario

Creando una plantilla calendario puede tener 100% de control sobre el diseño de su calendario. Cada componente de su calendario estará contenido dentro de un par de pseudo-variables como se muestra aquí:

$prefs['template'] = '

   {table_open}<table border="0" cellpadding="0" cellspacing="0">{/table_open}

   {heading_row_start}<tr>{/heading_row_start}

   {heading_previous_cell}<th><a href="{previous_url}">&lt;&lt;</a></th>{/heading_previous_cell}
   {heading_title_cell}<th colspan="{colspan}">{heading}</th>{/heading_title_cell}
   {heading_next_cell}<th><a href="{next_url}">&gt;&gt;</a></th>{/heading_next_cell}

   {heading_row_end}</tr>{/heading_row_end}

   {week_row_start}<tr>{/week_row_start}
   {week_day_cell}<td>{week_day}</td>{/week_day_cell}
   {week_row_end}</tr>{/week_row_end}

   {cal_row_start}<tr>{/cal_row_start}
   {cal_cell_start}<td>{/cal_cell_start}

   {cal_cell_content}<a href="{content}">{day}</a>{/cal_cell_content}
   {cal_cell_content_today}<div class="highlight"><a href="{content}">{day}</a></div>{/cal_cell_content_today}

   {cal_cell_no_content}{day}{/cal_cell_no_content}
   {cal_cell_no_content_today}<div class="highlight">{day}</div>{/cal_cell_no_content_today}

   {cal_cell_blank}&nbsp;{/cal_cell_blank}

   {cal_cell_end}</td>{/cal_cell_end}
   {cal_row_end}</tr>{/cal_row_end}

   {table_close}</table>{/table_close}
';

$this->load->library('calendar', $prefs);

echo $this->calendar->generate();